我在我的一个应用程序中使用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的源代码时,我没有看到出现此错误消息的确切方案。 知道这条消息是什么意思吗?
答案 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服务器时间不同而出现问题。
现在通过设置时间戳
来解决问题