关于java:CAS实现单点登录

28次阅读

共计 2712 个字符,预计需要花费 7 分钟才能阅读完成。

前言

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 登录。

正文完
 0