RSS

CAS无法获得Secure TGC的问题

Labels: ,
天忙道了一下午,就因为一个CAS(版本3.3)部署时的小问题,真是郁闷死了。 当时的情况是这样子的,在部署了CAS Server并把公司的应用调整到使用CAS认证后,状况良好,可以正常认证和登录。但是如果已经登录的用户再次进入另一个使用同一个CAS Server的应用时,浏览器还是会停在CAS Server的Login界面,再次让用户输入用户名和密码 - 这根本就不是单点登录了吗... 于是开始了郁闷的排查过程。两个CAS Client 应用本身是没有问题的,都可以单独认证。问题还是出现在CAS Server上,因为即使不附带service参数进行Login,在CAS Server登录后,再次输入CAS Server Login的地址也是出现输入密码界面,而不是应该的直接显示已登录的界面 - 感觉就好象登录成功后的TGC根本没有被加到浏览器上一样...再次用Web Developer插件查看,浏览器中确实是有TGC的Cookie的...晕. 经过半天的折磨,才发现真正的问题:由于客户没有SSL的证书,我们这次暴露的是CAS Server的HTTP Login页面。而CAS Server默认会给TGC的Cookie加上secure选项,就是只有在SSL下CAS Server下一次才能获得这个Cookie(之前用Web Developer的时候就我就没注意到了cookie值旁边的secure属性值),所以用户登录后再次访问CAS Server的HTTP页面,服务器获取不到TGC,认为这个用户还没有登录,就又回到登录界面了。 解决的办法当然是启用HTTPS的Login页面 - 当然,我们的客户没有证书,自签名的证书在浏览器默认设置还会弹出警告,所以不能用这个办法;或者修改CAS Server的配置,在
WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
文件中修改p:cookieSecure属性为false就好了。虽然这个会降低SSO的安全性,不过...我不会告诉我的客户的,大家别声张啊...


2 Responses to "CAS无法获得Secure TGC的问题"

  1. 天气冷了啊,记得多穿衣服。
  2. 深圳还是很热啊
Post a Comment (友情提示:添加评论需要翻墙)