Jasig Cast -Old TGT TGC Cookie Repalidation导致登录循环



我使用cas jasig 3.5.2.1面临麻烦。我已经使用了很长时间了,这似乎是我上次部署以来的一个新问题。

我第一次登录,每个人都可以:
-ticket_granting_ticket_created
-Service_ticket_created

一段时间后,票务清理删除了TGT,这是正确的:
- 由于上次使用以来的时间大于timetokillinmilliseconds
,机票已过期 - 删除票[TGT -...

因此,当我访问应用程序时,我会在登录页面上重定向。即使我的浏览器仍然包含带有TGT信息的cookie,并将其发送给CAS,它也拒绝了,因为它已被清理,这是正常的:
- 尝试检索票[TGT-402 ...
-Service_ticket_not_created

2019-03-07 09:57:58,929 DEBUG [org.springframework.webflow.mvc.view.AbstractMvcView] - <Rendering MVC [org.springframework.web.servlet.view.JstlView: name 'casLoginView'; URL [/WEB-INF/view/jsp/default/ui/casLoginView.jsp]] with model map [{flowRequestContext=[RequestControlContextImpl@6d171024 externalContext = org.springframework.webflow.mvc.servlet.MvcExternalContext@3dc20cd8, currentEvent = generated, requestScope = map[[empty]], attributes = map[[empty]], messageContext = [DefaultMessageContext@3520ba5b sourceMessages = map[[null] -> list[[empty]]]], flowExecution = [FlowExecutionImpl@524e370 flow = 'login', flowSessions = list[[FlowSessionImpl@38cfd0b3 flow = 'login', state = 'viewLoginForm', scope = map['loginTicket' -> 'LT-1505-Dnd7hs2pezvt51fj79MQnLxHfoZzew', 'service' -> http://preprod.enpc-center.fr/login, 'credentials' -> [username: null], 'warnCookieValue' -> false, 'ticketGrantingTicketId' -> 'TGT-402-ZxdMougCuYRVhFskdVBSiF7tqepwvRFx3FNtwR6Ktk3KQchM5L-preprod.sso.enpc-center.fr', 'viewScope' -> map['commandName' -> 'credentials']]]]]], flashScope=map[[empty]], currentUser=null, loginTicket=LT-1505-Dnd7hs2pezvt51fj79MQnLxHfoZzew, service=http://preprod.enpc-center.fr/login, org.springframework.validation.BindingResult.credentials=org.springframework.webflow.mvc.view.BindingModel: 0 errors, commandName=credentials, credentials=[username: null], flowExecutionKey=e1s1, warnCookieValue=false, flowExecutionUrl=/cas/login?service=%5BLjava.lang.String%3B%4077aac79c, ticketGrantingTicketId=TGT-402-ZxdMougCuYRVhFskdVBSiF7tqepwvRFx3FNtwR6Ktk3KQchM5L-preprod.sso.enpc-center.fr, viewScope=map['commandName' -> 'credentials']}]>
2019-03-07 09:57:59,437 DEBUG [org.jasig.cas.web.flow.TerminateWebSessionListener] - <Error getting service from flow state.>

java.lang.illegalstateException:无需访问主动流动;此FlowExection结束了

目前似乎还不错。
问题是,当我使用凭据登录时,浏览器发送了现有的TGT cookie,因此CAS试图检索它,并再次将我重定向。
我必须删除TGT cookie,以便我可以成功登录。

您对这种奇怪的行为有任何线索吗?

预先感谢您。

您对这种奇怪的行为有任何线索吗?

这就是CAS 3.5.x运行的方式。该软件没有立即检查与cookie相关的TGT的有效性,并且只有在某些情况下,它才能在某些情况下对Cookie通过的TGT进行特定的事情。当将TGT作为清理过程的一部分删除时,在某些情况下,CAS/浏览器仍然显示您已成功登录,因为该软件只检查了是否存在cookie,并验证了其与TGT的关系。最好的操作过程是关闭浏览器,正如您注意到的,清除饼干。

较新的CAS版本已解决了此问题。

ps:您可能需要考虑删除TerminateWebSessionListener或将其超时值增加到更大的东西。

最新更新