前言
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/maven… 下载如下图所示 5.3.14.war 文件
生成秘钥库
1. 咱们采纳 JDK 自带的 keytool 工具生成秘钥库,别名 casbm,生成的秘钥存储门路为 D:\cas\keystore
2. 关上 cmd 窗口执行以下命令,命令如下:
keytool -genkey -v -alias casbm -keyalg RSA -keystore D:\cas\keystore\casbm.keystore
秘钥口令轻易输出,我这里输出 123456
这里咱们要输出一些问题的答案,咱们能够轻易输出,例如我输出的
而后这里问咱们是否确认为这些信息,咱们这里确认输出 y
这里按下回车,能够看到命令胜利完结,这时咱们看一下门路下有没有生成秘钥
咱们能够看到曾经生成了秘钥
从秘钥库中导出证书
1. 咱们生成秘钥库后须要从秘钥库中导出证书,关上 cmd 窗口,命令如下:
keytool -export -trustcacerts -alias casbm -file D:/cas/keystore/casbm.cer -keystore D:/cas/keystore/casbm.keystore
这时让咱们输出明码,我下面设置的为 123456,这里我就输出 123456,如下图所示导出胜利
将证书导入到 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”
这个时候提醒咱们输出明码,这个明码不是咱们下面设置的明码,而是固定的明码:changeit
这个时候提醒咱们是否信赖此证书,咱们输出:y
配置 tomcat 反对 https
1. 因为 cas 须要 https 协定拜访,所以咱们要配置 tomcat 也反对 https 协定,咱们找到咱们的 tomcat 的 server.xml 文件,退出如下配置:
<Connector port=”8443″ protocol=”org.apache.coyote.http11.Http11NioProtocol”
maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” keystoreFile=”D:\cas\keystore\casbm.keystore” keystorePass=”123456″/>
将下载的 CAS 包放入 tomcat 中启动
1. 咱们将之前下载的 cas 包放入 tomcat 中启动,首先将 war 包放入 tomcat 的 webapps 下
2. 这里咱们为了不便拜访,咱们将 war 包改名为 cas
3. 这里咱们启动 tomcat,找到 tomcat 中 bin 下的 startup.bat 文件双击启动。
4. 启动实现后咱们拜访登录页面验证是否启动胜利,拜访地址如下,用户名为:casuser 明码为:Mellon:
https://localhost:8443/cas
5. 用户名明码是在如下配置文件中指定的
配置 CAS 日志地址
1. 这个时候咱们为了不便日后排查问题,咱们须要将 cas 的日志批改为咱们指定的地址,找到如下配置文件
配置用户名明码为数据库中的实在用户名明码
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
将所须要的驱动 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
2. 此时咱们重新启动 tomcat,应用数据库中的用户名明码登录
设置明码加密
1. 咱们到此曾经能够应用数据库的用户名明码来登录 cas 了,然而明文的明码并不平安,当初咱们须要配置一下加密。还是找到 application.properties 文件,增加如下代码
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 登录。