基于CAS的WEB单点登录(sso)客户端集成到业务系统,原理探索(cookie,ticket)

服务端搭建参考

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 可否跨一级域名,如果跨一级域名,天猫/淘宝跨一级域名怎么实现的

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值