2012-07-27 124 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