在开始之前先介绍一下CAS
官网地址:https://www.apereo.org/
Github地址:https://github.com/apereo/cas
介绍
CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。
特点
- 开源的企业级单点登录解决方案。
- CAS Server 为需要独立部署的 Web 应用。
- CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
- CAS属于Apache 2.0许可证,允许代码修改,再发布(作为开源或商业软件)。
原理与协议
- 用户每次发请请求,CAS Client 会分析请求中是否包含service ticket
- 如果没有重定向到指定好的CAS Server登录地址,并传递service(也就是访问的目的资源地址,方便登录成功后转回该地址)
- 用户输入认证信息,成功后CAS Server随机生成一个相当长度,唯一,不可伪造的service ticket,并缓存以待将来验证,重定向到service地址
- 为客户端设置一个TGC(Ticket Granted Cookie),CAS Client 在拿到Service和新产生的Ticket 过后,在与CAS Server 进行身份合适
以确保Service Ticket的合法性
(好啦,开始进入正文啦)HTTPS配置
因为CAS要求所有的请求都要在一个安全的通道,所以要配置服务端的https。
1.生成服务器的密匙文件 lcs.keystore
keytool -genkey -alias lcs_cas -keyalg RSA -keysize 2048 -validity 36500 -keystore C:/opt/keys/lcs_cas.keystore
打开cmd,输入结果:
2.导出证书
keytool -export -alias lcs_cas -storepass 123456 -file C:/opt/keys/lcs_cas.cer -keystore C:/opt/keys/lcs_cas.keystore
在C:/opt/keys文件夹下可以看到
3.导入证书导入到jdk信任库
查看当前JDK版本,必须是 JDK.1.8 以上
注意:
1.原来的 $JAVA_HOME/jre/lib/security/cacerts 文件要先删掉,否则会报出java.io.IOException: Keystore was tampered with, or password was incorrect错误.
2.如果路径有空格或特殊字符,像我上面一样加上引号.
执行命令
keytool -import -alias wolfcode -keystore C:/“Program Files”/Java/jdk1.8.0_152/jre/lib/security/cacerts -file C:/opt/keys/lcs_cas.cer -trustcacerts
运行结果
使用cas-overlay-template搭建cas服务器
GitHub地址:https://github.com/apereo/cas
使用步骤:
1.下载或者克隆cas-overlay-template(version:5.2)项目到本地,用Intellji Idea打开项目,下载依赖时间较长,需耐心等待,建议使用国内的镜像.
有个依赖下载很慢或者下载不了cas-server-webapp-tomcat,建议直接下载之后放到本地仓库对应的目录会快点.
https://mvnrepository.com/artifact/org.apereo.cas/cas-server-webapp-tomcat
打开项目后
可以将pom.xml里的国外仓库换成国内的镜像
2.在项目中添加src/main/java和src/main/resources目录,并将src/main/java设置为代码文件根目录,将src/main/resources设置为资源文件根目录。
3.将overlays目录下的WEB-INF/classes/目录中的application.properties文件复制到src/main/resources中
4.将 证书 C:/opt/keys/lcs_cas.keystore 拷贝到resources 目录
5.修改application.properties文件
此处为静态的用户名,密码
6.打开idea命令行,输入命令:build.cmd run
如图显示就是启动成功了
7.浏览器输入 https://www.sso.com:8443/cas/login
不用管,那是因为我们的证书是通过JDK生成的,不是认证机构发布的。
第一次进去会有点慢。跳转完成之后界面。
输入静态的账号,密码
登录成功后页面
来源:CSDN
作者:YourBoyLFH
链接:https://blog.csdn.net/weixin_44606237/article/details/103816022