2012-07-27 67 views
0

我在我的一個應用程序中使用CAS認證。 CAS版本jar是 - cas-client-core-3.1.10.jar。雖然使用我的正確憑據它給我以下例外 -CAS認證SAML錯誤

org.jasig.cas.client.validation.TicketValidationException: No valid assertions from the SAML response found. 
org.jasig.cas.client.validation.TicketValidationException: No valid assertions from the SAML response found. 
at org.jasig.cas.client.validation.Saml11TicketValidator.parseResponseFromServer(Saml11TicketValidator.java:97) 
at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:188) 

想知道什麼是這種例外的原因?在檢查Saml11TicketValidator.java的源代碼時,我沒有看到此錯誤消息出現的確切場景。 任何想法這個消息表明什麼?

回答

2

我得到了解決這個問題的辦法。實際的問題是我的系統上的時鐘速度。我的系統當前時間戳不在CAS之後的&之間。而可配置參數 - 「容差」(由CAS提供)的價值也沒有幫助。因此,我將容差參數配置爲一個巨大的長整型值(即75000)。通過這個,我能夠繞過由CAS拋出的TicketValidationException。

+0

嗨。我想知道你是如何配置該參數的?我正在使用Spring安全性。如何設置它並覆蓋默認值。謝謝。 – rayman 2013-10-28 10:27:58

0

是的,其實我也有同樣的錯誤...這是問題,因爲CAS服務器時間是不同的。

出具現在通過設置時間戳

0

爲了澄清munna's響應解決,我有同樣的問題,並通過使用CAS客戶端的應用程序添加公差參數到web.xml解決它:

<init-param> 
    <!-- 
     Adjust to accommodate clock drift between client/server. 
     Increasing tolerance has security consequences, so it is 
     preferable to correct the source of clock drift instead. 
    --> 
    <param-name>tolerance</param-name> 
    <param-value>5000</param-value> 
</init-param> 

有關Saml11TicketValidationFilter的完整示例,請參見https://wiki.jasig.org/display/CASC/Saml11TicketValidationFilter+Example