单点登录服务端的一个细节

单点登录服务端使用jetty启动,可以实现单点登录(即登录A系统后,同一浏览器再访问B系统,无需再登录)
部分配置文件如下:
1.ticketGrantingTicketCookieGenerator.xml配置信息
  <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas"
p:cookieDomain="" />
2.warnCookieGenerator.xml配置信息
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas"
p:cookieDomain="" />
同样的应用部署在tomcat下,启动后发现系统并没有实现单点登录,登录A系统后,同一浏览器访问B系统,依然需要登录。
 
问题分析:
在jetty下cookie生成信息如下:
CASPRIVACY=;Path=/cas;Expires=Thu, 01 Jan 1970 00:00:00 GMT CASTGC=TGT-1-fCw2cIM6FTEmQrdNnshNARfaduViaWj6sIWJmutgbwIHrif9tG-cas;Path=/cas

tomcat下cookie生成信息如下:
CASPRIVACY=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/cas CASTGC=TGT-2-KNbYzXWjADi6nRQV9wQyZxlAGH6bsNTIU6bbk7vRWbeifgWSWo-cas; Domain=""; Path=/cas

空字符串在不同应用服务器下生成的cookie信息不一致

解决方法:为cookieDomain赋值
==========================================================================
另外的解决方法:
配置文件修改如下
1.ticketGrantingTicketCookieGenerator.xml配置信息
  <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />  --删除cookieDomain设置
2.warnCookieGenerator.xml配置信息
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas"
p:cookieDomain="" />

猜你喜欢

转载自vvovv.iteye.com/blog/1405576