CAS client单点登录失败

问题:接入多个CAS client只能各自认证,不能单点登录

按照之间的流程部署了CAS server,接入了两个CAS client,但是发现只能各自认证自己,同时生成自己的TGC,无法做到相互单点登录。


原因:CAS client中配置CAS server的服务地址不相同

APP1配置的是CAS server的域名,APP2配置的是CAS server的IP地址。由此导致APP1在认证成功后以CAS server域名的Cookie中存储CAS server的TGC ID,而APP2在认证成功后以server IP的Cookie中存储server的TGC ID,相互找不到CAS server的TGC ID。因而每次只能各自认证,无法实现单点登录。


解决:统一所有接入CAS server的client配置中的server 地址

CAS实现跨域名认证二级域名的单点登录

二级域名的单点登录
http://blogjava.cas.org
http://matrix.cas.org
http://csdn.cas.org
因为是同一个域,所以每个站点都能够共享基于 cas.org 的 cookies ,通过获取cookies确定登录状态。这种方法原始,不灵活而且有不少安全隐患,已经被抛弃了。

CAS实现跨域名认证
CAS 可以很简单的实现跨域的SSO ,因为,单点被控制在CAS Server,用户最有价值的TGC-Cookie只是跟CAS Server相关, CAS Server就只有一个其cookies管理着认证的会话,而多个CAS Client的cookies只管理自己的局部会话,每一个Client在去Server认证前都要通过Server地址(域名或IP)获取Server的cookies中的TGC ID:CAS Server 会主动 Get 到这个 TGC cookie 。
因此,解决了 cookies 不能跨域的问题。

猜你喜欢

转载自blog.csdn.net/qq_17348297/article/details/80904343
今日推荐