我正在使用 spring-security-saml2 api 建立连接。
它在一段时间内运行良好,但最近我在响应 header 中的日期遇到了一些麻烦。
当调用过滤器 org.springframework.security.saml.SAMLProcessingFilter
(url -> /saml/SSO/alias/defaultAlias
) 时,响应包含一个 header date
并且这个日期SOMETIMES晚了 2 小时。
因此我得到一个错误 Etat HTTP 401 - Authentication Failed : Response issue time is either too old or with date in the future, skew 60, time 2014-10-22T08:25:55.967Z
(在 10h25 测试)
我不知道日期是如何检索的,也不知道为什么这种行为只是定期发生。 我正在寻找任何线索。谢谢。
最佳答案
你在哪个时区? 2014-10-22T08:25:55.967Z 采用 UTC,因此您本地时间之间的 2 小时差异可以用 GMT+2(例如法国夏令时)来解释。
我的猜测是您的 IDP 和 SP 之间的时钟没有正确同步,有时响应对象的创建时间差 (2014-10-22T08:25:55.967Z) 和SP 机器上的时间超过 60 秒。
尝试更改您的 WebSSOProfileConsumerImpl
bean 并将其声明如下,它可能会解决您的问题:
<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl">
<property name="responseSkew" value="180"/>
</bean>
关于java - 这个标题日期来自哪里? (带 Tomcat 的 spring-saml2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26505340/