CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,是单点登录的一种实现方式,在全球有着广泛的使用,也和众多的开源软件做了集成。
12.4.1 下载部署
当前最新版本v6.1.4,源码下载地址 https://github.com/apereo/cas/archive/v6.1.4.zip,下载后自行编译。在官方下载很慢(不支持断点续传,迅雷现在也很难成功)编译也比较麻烦,推荐 gitee 下载或下载 docker image 部署 cas 环境。
我在 gitee 上导入了 GitHub 上的官方库,感兴趣的同学可以去这里 https://gitee.com/xprogrammer/cas 下载,速度。
这里,我们以 docker 方式下载部署 cas 环境。首先到 hub.docker 下载 cas 的 v6.1.3 镜像。
latest 镜像不能运行,指定 v6.1.3 镜像可运行。
docker pull apereo/cas:v6.1.3
用 apereo/cas:v6.1.3 镜像创建容器。
docker run --name cas -p 8443:8443 -p 8878:8080 apereo/cas:v6.1.3 /bin/sh /cas-overlay/bin/run-cas.sh
打开浏览器,访问 https://localhost:8443/cas,使用官方默认用户名 casuser 和默认密码 Mellon 登录。
cas 返回登录成功页面。
这时候,cas 容器中的 Tomcat 没有证书,停止容器,制作证书。
docker stop cas
使用 Java 的 keytool 制作证书。
C:\Java\jdk1.8.0_112\bin>keytool -genkey -alias tomcat -keypass goodman -keyalg RSA -keystore server.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: Kevin Zhang
您的组织单位名称是什么?
[Unknown]: cas.spring.boot.course
您的组织名称是什么?
[Unknown]: spring.boot.courese
您所在的城市或区域名称是什么?
[Unknown]: ChengDu
您所在的省/市/自治区名称是什么?
[Unknown]: SiChuan
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=Kevin Zhang, OU=cas.spring.boot.course, O=spring.boot.courese, L=ChengDu, ST=SiChuan, C=CN是否正确?
[否]: y
拷贝证书到容器中。
docker cp server.keystore cas:/etc/cas/thekeystore
启动 cas 的 docker 容器。
docker start cas
12.4.2 集成
新建 Spring Boot 项目。
添加 Spring Web 启动器依赖。
在项目的 pom 文件中手动添加 cas 的自动配置依赖。
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>2.3.0-GA</version>
</dependency>
修改 C:\Windows\System32\drivers\etc\hosts
文件,添加两个域名。
127.0.0.1 cas.course
127.0.0.1 spring.boot.course
添加/修改项目的 application.yml 配置文件,添加如下配置。
server:
port: 8088
cas:
server-url-prefix: https://cas.course:8443/cas #填CAS服务器的前缀
server-login-url: https://cas.course:8443/cas/login #填CAS服务器的登录地址
client-host-url: http://spring.boot.course:8088 #填客户端的访问前缀 spring.boot.course 是在hosts文件中映射到127.0.0.1