项目背景:原有多个旧平台使用CAS进行单点登陆,现在新开发了一个主站,主站使用的是token验证登陆。 想要主站登陆后,打开旧平台时跳过登陆步骤,即单点登陆。 原cas服务代码丢失,主站项目加入cas客户端代码依旧无法实现单点登陆,于是安排本萌接手排查该问题。
有点小问题,cmd中文乱码,在CMD中输入CHCP 936,乱码恢复正常(修改注册表使其永久生效进入cmd后,输入"regedit"打开注册表。找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor然后“右键-新建”,选择“字符串值”,“名称”列填写“autorun”, 数值数据填写“chcp 936”),ok,下一步。
思路:
1.先搭建一个cas客户端demo用于验证cas可行性,已完成不多说。
2.搭建cas-server用于验证可行性,已完成: 参考另一篇我的文章《cas_overlay5.1.0启用restful,重载源码增加cookie》
下载cas_overlay5.1.0打一个war。
下载纯净tomcat,官网下载的打开时居然闪退报错,修改bat文件将倒数第三行start改为run,显示问题后发现“找不到或无法加载主类org.apache.catalina.startup.Bootstrap”,查证资料发现官网下的tomcat的bin目录缺少Bootstrap文件。无语。重下另一个版本,这次cas服务启动成功了。默认用户名为:casuser,默认密码为:Mellon
访问127.0.0.1:8080/cas/login 默认密码casuser/Mellon,登陆成功,好了现在继续去搞本萌的客户端。 启动个本地redis,cmd到目录输入redis-server.exe redis.windows.conf运行! 又重下了个jdk,还得去idea里改jdk,file->project structural->sdk。
改个host模拟跨域
127.0.0.1 sso.maple.com
127.0.0.1 client1.sso.maple.com
127.0.0.1 client2.sso.maple.com
新的cas服务登陆页sso.maple.com:8080/cas/login
cas-server修改http支持的配置
打开文件:cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
"serviceId" : "^(https|http|imaps)://.*",
启用记载JSON配置文件
打开文件cas\WEB-INF\classes\application.properties
增加如下配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
启动两个服务 client1.sso.maple.com:8081/index client2.sso.maple.com:8082/index 测试单个登陆,另一个无需登陆。
验证成功!
3.下面准备开启cas的rustful接口 参考另一篇我的文章《cas_overlay5.1.0启用restful,重载源码增加cookie》
以下是https(不需要可跳过):
创建本地的https证书 cmd到一个存证书的新目录 keytool -genkey -alias sso.maple.com -keyalg RSA -keystore casServer.keystore
ip别名为sso.maple.com,密钥文件casServer.keystore
配置 输入密钥库口令: xxxxxx 再次输入新口令: xxxxxx 您的名字与姓氏是什么? [Unknown]: sso.maple.com 您的组织单位名称是什么? [Unknown]: test 您的组织名称是什么? [Unknown]: test 您所在的城市或区域名称是什么? [Unknown]: wenzhou 您所在的省/市/自治区名称是什么? [Unknown]: zhejiang 该单位的双字母国家/地区代码是什么? [Unknown]: wz CN=cas.server.com, OU=test, O=test, L=shenzhen, ST=guangdong, C=sz是否正确? [否]: y 输入 <cas.server.com> 的密钥口令 (如果和密钥库口令相同, 按回车): xxxxxx 再次输入新口令: xxxxxx
把密钥库导出成证书文件casServer.crt keytool -export -alias sso.maple.com -keystore casServer.keystore -file casServer.crt -storepass xxxxxx
查看证书 keytool -printcert -file casServer.crt
将创建过的证书导入到java证书库 keytool -import -keystore “C:\Program Files\Java\jdk1.8.0_151\jre\lib\security\cacerts” -file “C:\caskeystore\casServer.crt” -alias sso.maple.com 输入保护密码,默认的是changeit,不是自己设置的密钥
如果导入失败,可能权限不够,进入C:\Program Files\Java\jdk1.8.0_151\jre\lib\security\目录,再执行 keytool -import -keystore ./cacerts -file “C:\caskeystore\casServer.crt” -alias sso.maple.com