2011-07-13 123 views
2

我对CAS的理解:CAS是如何处理会话超时

有1个CAS服务器和2 CAS客户端,通过CAS

客户端1登录成功 用户工作在客户端1,所以客户端1的会话由用户操作刷新。但CAS服务器会话超时。 用户尝试访问client2,当检查CAS发现会话超时时,需要再次登录,但client1已经登录。

这没有意义,请纠正我,如果我错了。

+0

client2是一个不同的用户与不同的会话超时?还是你说当客户端2登录时client1的会话超时? – bwobbones

+0

client1和client2都是j2ee的web应用程序。 1.USER去CLIENT1的网站 2.redirect到CAS服务器,登陆成功,在客户端1的网站 3.用户点击链接,所以客户端1的自己的会话被刷新,但CAS有时间出来 4,用户到客户机程序的网站,客户端2重定向到CAS服务器,现在必须再次登录。 这是我的理解,我想在步骤4中,用户无需再次登录 – Xilang

+0

更新如下.. – bwobbones

回答

4

CAS使用“服务”区分网站。在cas内将会有一个“client1”服务和一个“client2”服务,每个服务都有自己的TicketGrantingTicket。会话超时通过对TGT的这里所描述的CAS服务器票证过期策略控制:

https://wiki.jasig.org/display/CASUM/Ticket+Expiration+Policy

这样,每个服务器将有自己的超时。所以当我到client1并点击链接时,这对client2的会话超时没有任何影响。

如果你想两个网站来影响他们的超时,你需要让他们使用相同的服务和调查使用代理授予门票:

https://wiki.jasig.org/display/CAS/Proxy+CAS+Walkthrough

+0

是否有任何其他SSO解决方案支持这种情况? – Xilang

2

原因客户端1仍可能登录是因为您没有处理CAS在用户的TicketGrantingTicket过期时发送的注销帖子。

当在CAS中发生注销事件时,它会向所注册的所有服务发送注销信息。客户端1需要通过查看请求来处理此问题。如果偶然使用PHP,则需要查看$ _REQUEST以获取注销消息。