如何在CAS中使用超时票证过期策略,而客户端会话cookie在会话结束后过期?

问题描述 投票:1回答:1

我使用CAS Java客户端3.4.1和CAS服务器5.3。

据我了解,成功进行身份验证后,CAS客户端会将数据添加到客户端应用的会话中。现在,对于每个请求,CAS客户端都会在会话中验证此数据,如果正确,请求流将继续(不向CAS服务器发出请求)。但是,如果会话丢失或会话中缺少CAS属性(_const_cas_assertion_),则CAS客户端会向CAS服务器发出请求以验证用户是否已通过身份验证。现在,根据该请求,CAS服务器更新了它是TGT上次使用的时间戳,并且延长了TGT超时。

在我的情况下,客户端应用的会话cookie(JSESSIONID)在会话结束时到期(例如,浏览器关闭)。但是,当TGT过期时,可以说在10个小时内,并且用户没有在10个小时内关闭浏览器,那么,CAS服务器不会收到任何请求,TGT的过期时间也不会延长。但是,如果用户在5个小时后打开client2应用程序,则会向CAS服务器发出请求,并且TGT到期将延长10个小时。这意味着15小时后,SLO请求将发送到client1应用。

[我的问题是,当仅使用client1应用程序时,如何使客户端延长TGT超时而又不清除客户端的会话cookie或使客户端再次在CAS服务器中调用身份验证?如果要在10小时内打开(并使用)客户端应用程序且未关闭它,我想延长TGT的有效期,因此在10个小时后不会向客户端发送SLO请求。

换句话说,当客户端在不清除会话的情况下使用应用程序时如何扩展TGT?

清除会话是不可接受的,因为CAS客户端的AuthenticationFilter将启动身份验证,该身份验证会将客户端的浏览器重定向到CAS服务器,并将其重定向回客户端应用程序。它将重定向回到同一页面,但是客户端视图状态将丢失(例如,在JSF ViewScoped bean中)。

java session single-sign-on cas
1个回答
0
投票

[我的问题是,当仅使用client1应用程序时,如何使客户端延长TGT超时而又不清除客户端的会话cookie或使客户端再次在CAS服务器中调用身份验证?

您不能。 TGT超时对于CAS部署是全局的。具有单个应用程序somehow扩展该超时将干扰并中断可能不希望此扩展的其他应用程序使用相同的策略/超时规则。如果将CAS服务器设置为在10个小时超时,则这很困难,会话将在10个小时结束。

作为客户端应用程序,通常不能随机地动态修改服务器行为。这将破坏集中化,集中审核,安全性等目的以及其他与同一服务器交互的应用程序的行为。

如果客户端应用在10个小时内打开(使用)并且未关闭,我想延长TGT的有效期,因此在10个小时过去之后不会向客户端发送SLO请求。

可能,如果会话仍处于活动状态,则扩展SLO过滤器以不破坏应用程序,或者如果您不想参与SLO则从应用程序配置中删除SLO过滤器...或与CAS服务器管理员联系并讨论SLO与他们的细微差别。

© www.soinside.com 2019 - 2024. All rights reserved.