CAS身份验证SAML错误

时间:2012-07-27 06:17:28

标签: java cas

我在我的一个应用程序中使用CAS身份验证。 CAS版jar是 - cas-client-core-3.1.10.jar。在使用我的正确凭据时,它给出了以下异常 -

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的源代码时,我没有看到出现此错误消息的确切方案。 知道这条消息是什么意思吗?

3 个答案:

答案 0 :(得分:2)

我得到了解决这个问题的方法。实际问题是我的系统上的时钟速度。我的系统的当前时间戳不在BEFORE&之间。 CAS的时间戳之后。并且可配置参数的值 - “容差”(由CAS提供)也没有帮助。所以我将容差参数配置为一个巨大的长值(即75000)。通过这个,我能够绕过CAS抛出的TicketValidationException。

答案 1 :(得分:1)

为了澄清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

答案 2 :(得分:0)

是的,实际上我也有同样的错误......这是因为cas服务器时间不同而出现问题。

现在通过设置时间戳

来解决问题