CAS实现单点登录

简介: 单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

前言



1.单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。


CAS下载安装



1.CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。


2.github下载地址 https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/ 下载如下图所示5.3.14.war文件


1.png


生成秘钥库



1.我们采用JDK自带的keytool工具生成秘钥库,别名casbm,生成的秘钥存储路径为D:\cas\keystore


2.打开cmd窗口执行以下命令,命令如下:


keytool -genkey -v -alias casbm -keyalg RSA -keystore D:\cas\keystore\casbm.keystore


2.png


秘钥口令随便输入,我这里输入123456


3.png


这里我们要输入一些问题的答案,我们可以随便输入,例如我输入的


4.png


然后这里问我们是否确认为这些信息,我们这里确认输入y


5.png


这里按下回车,可以看到命令成功结束,这时我们看一下路径下有没有生成秘钥


6.png


7.png


我们可以看到已经生成了秘钥


从秘钥库中导出证书



1.我们生成秘钥库后需要从秘钥库中导出证书,打开cmd窗口,命令如下:


keytool -export -trustcacerts -alias casbm -file D:/cas/keystore/casbm.cer -keystore D:/cas/keystore/casbm.keystore


8.png


这时让我们输入密码,我上面设置的为123456,这里我就输入123456,如下图所示导出成功


9.png


将证书导入到JDK证书库



1.我们从秘钥库导出证书后需要将证书导入到JDK证书库中,打开cmd窗口,命令如下,其中最后的路径为你本地jdk的路径,要确保该路径正确:


keytool -import -trustcacerts -alias casbm -file D:/cas/keystore/casbm.cer -keystore “D:/Configure/java/java8/jre/lib/security/cacerts”


10.png


这个时候提示我们输入密码,这个密码不是我们上面设置的密码,而是固定的密码: changeit


11.png


这个时候提示我们是否信任此证书,我们输入:y


12.png


配置tomcat支持https



1.由于cas需要https协议访问,所以我们要配置tomcat也支持https协议,我们找到我们的tomcat的server.xml文件,加入如下配置:


<Connector port=“8443” protocol=“org.apache.coyote.http11.Http11NioProtocol”


maxThreads=“150” SSLEnabled=“true” scmaxThreads=“150” SSLEnabled=“true” scheme=“https” secure=“true”
clientAuth=“false” sslProtocol=“TLS” keystoreFile=“D:\cas\keystore\casbm.keystore” keystorePass=“123456”/>


14.png


将下载的CAS包放入tomcat中启动



1.我们将之前下载的cas包放入tomcat中启动,首先将war包放入tomcat的webapps下


15.png


2.这里我们为了方便访问,我们将war包改名为cas


16.png


3.这里我们启动tomcat,找到tomcat中bin下的startup.bat文件双击启动。


17.png


4.启动完成后我们访问登录页面验证是否启动成功,访问地址如下,用户名为:casuser 密码为:Mellon:


https://localhost:8443/cas


18.png


5.用户名密码是在如下配置文件中指定的


19.png


配置CAS日志地址



1.这个时候我们为了方便日后排查问题,我们需要将cas的日志修改为我们指定的地址,找到如下配置文件


20.png


21.png


配置用户名密码为数据库中的真实用户名密码



1.上面我们的用户名密码是写死的,但是实际开发中我们的用户名密码是存储在数据库中的,这个时候需要我们从数据库中读取,我们打开application.properties文件,添加如下配置


cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?serverTimezone=GMT


cas.authn.jdbc.query[0].user=root


cas.authn.jdbc.query[0].password=root


cas.authn.jdbc.query[0].sql=select * from user where username = ?


cas.authn.jdbc.query[0].fieldPassword=password


cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver


22.png


将所需要的驱动jar包放入cas项目中



1.我们需要将所需要的jar包放入cas项目的lib中,jar包名称如下,可以去maven仓库中搜索


cas-server-support-jdbc-5.3.1.jar


cas-server-support-jdbc-drivers-5.3.1.jar


cas-server-support-jdbc-authentication-5.3.1.jar


connector-java-5.1.34_1.jar


24.png


2.此时我们重新启动tomcat,使用数据库中的用户名密码登录


设置密码加密



1.我们到此已经可以使用数据库的用户名密码来登录cas了,但是明文的密码并不安全,现在我们需要配置一下加密。还是找到application.properties文件,添加如下代码


25.png


cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT


cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8

#MD5加密策略


cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5


2.此时已经配置好加密了,我们可以测试一下,将123456加密,然后将密码改为加密后的,此时重启tomcat再用123456登录。


26.png


27.png






2.png2.png2.png


相关文章
|
安全 JavaScript 前端开发
若依实现单点登录(解析请求链接中的参数做鉴权认证)
若依实现单点登录(解析请求链接中的参数做鉴权认证)
3370 0
分享:mapbox-gl的CGCS2000修改版
分享:mapbox-gl的CGCS2000修改版
627 0
|
3月前
|
XML Java 数据安全/隐私保护
彻底搞懂 Spring Boot 自动配置原理:从源码拆解到手写 Starter,零废话全干货
本文深入解析SpringBoot自动配置原理,基于SpringBoot 3.4.2版本详细拆解了自动配置的执行流程。主要内容包括:1)自动配置的本质是基于条件注解的动态JavaConfig配置类;2)核心执行流程通过AutoConfigurationImportSelector实现;3)SpringBoot 3.x采用新的自动配置注册方式;4)重点讲解了@Conditional系列条件注解的使用场景与常见坑点;5)通过开发自定义加密Starter实战演示完整实现过程。
1379 3
|
JavaScript 前端开发 开发工具
如何参与开源项目以及贡献代码的流程和注意事项(2024年11月保姆级教程)
本文详细介绍了如何参与开源项目及贡献代码的流程和注意事项,包括选择项目、fork仓库、克隆到本地、阅读贡献指南、提交代码、创建Pull Request等步骤,并强调了沟通礼仪、代码质量的重要性,适合初学者参考学习。
1437 1
如何参与开源项目以及贡献代码的流程和注意事项(2024年11月保姆级教程)
|
存储 安全 Java
【架构设计】单点登录实现技术方案
【架构设计】单点登录实现技术方案
2406 0
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
前端开发 JavaScript
使用CSS中的cursor属性值,常用的可设置参数,以及其他16中参数值的使用场景和示例代码
使用CSS中的cursor属性值,常用的可设置参数,以及其他16中参数值的使用场景和示例代码
763 0
|
消息中间件 Java Spring
Springboot 集成Rabbitmq之延时队列
Springboot 集成Rabbitmq之延时队列
608 0
用Ventoy制作多系统启动盘
Ventoy是一款国产的U盘启动制作工具,有了Ventoy你就无需反复地格式化U盘,你可以一次性拷贝很多个不同类型的镜像文件,Ventoy 会在启动时显示一个菜单来供你进行选择。
939 1