1.客户端jar包追加到业务系统
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>1.7.0-GA</version>
</dependency>
2.application.yml
cas.server-url-prefix: https://192.168.154.134:443/cas
cas.server-login-url: https://192.168.154.134:443/cas/login
cas.client-host-url: http://192.168.154.1:8181
cas.validation-type: cas
server.port: 8181
3.启动类
@EnableCasClient
4.访问业务接口,并没有出现登录页面,因为cas默认只能跳转https的客户端
解决问题:
cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json修改正则
cas\WEB-INF\classes\application.properties追加配置
重启cas服务端再次访问测试接口,输入用户名:casuser/Mellon/Mellon 或jwolf/jwolf即可调回客户端业务接口
修改server.port启动另一个业务系统,略。。。
5.检查浏览器cookie探究cas基本原理
客户端jar包引入的filter断点调试,测试方法:将AbastractConfigurationFiter及其继承类关键处打上断点。
client首次未登陆请求,ticket及本地session均为null就使用response.sendRedirect(potentialRedirectUrl)到cas server端/cas/login接口,这次请求没有携带TGC等cookie
登陆成功回调client的接口,会再次去cas server的/cas/serviceValidate接口验证ticket,登陆之后的所有请求都会通过该接口验证,cas验证ticket应该不是单一的比对ticket(手动修改ticket扔能正常访问)
这时请求另一个client2的接口,因为没有tickeckt所有会重定向到cas server登录接口,但这次不会跳到登录页面了。(首次登录后会存cookie 到当前domain,下次请求如果有ticket就只调cas server的ticket验证接口了,如果手动删除了会携带cookie再去调cas server 登录接口,直接通过),client2首次请求时也是没有cookie,但可以拿到client1存下来的cookie,故不会再跳到登录页。
TODO 可否跨一级域名,如果跨一级域名,天猫/淘宝跨一级域名怎么实现的