使用cas作單點登陸,在驗證ticket的時候,報下面的錯誤:java
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> <cas:authenticationFailure code='INVALID_TICKET'> 未可以識別出目標 'ST-2-gqQSrEpDwAQlHLdkJIEz-cas01.example.org'票根 </cas:authenticationFailure> </cas:serviceResponse>
緣由,serviceTicketExpirationPolicy默認值時間是1.8秒,當登陸成功,攜帶ST返回客戶端,客戶端帶着server和ST去服務器驗證,但此時服務器端的ST已經失效。 spring
解決辦法:服務器
修改WEB-INF/spring-configuration/ticketExpirationPolicies.xml中的 時間,SECONDS 指明時間單位spa
<!-- Expiration policies --> <util:constant id="SECONDS" static-field="java.util.concurrent.TimeUnit.SECONDS"/> <bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy" c:numberOfUses="1" c:timeToKill="1800000" c:timeUnit-ref="SECONDS"/>