提问者:小点点

Spring Security Saml-SP和IDP之间的时间差


我正在寻找一种方法来增加我的saml消息的过期时间。我使用SAML1.0.0-RC2的Spring Security。

此时,如果服务器**时间差异太大,例如5分钟,我收到以下错误:

HTTP Status 401 - Authentication Failed:Error validating SAML message: SAML response is not valid; nested exception is org.opensaml.common.SAMLException: SAML response is not valid

我想设置过期时间为10分钟,以防止这些错误。我一直在看留档,但我不明白如何更改过期时间。如果我查看配置身份验证对象部分,人们可以更改过期时间,但我没有抓住这个想法。

有人能帮我吗?

**我的服务器(SP)和客户的服务器(IDP,很可能安装了ADFS的服务器)。


共3个答案

匿名用户

在Stefan的回答之后,我知道去哪里看了!实际上文档确实描述了这个东西,我只是没有拿起它:10.3有效区间。为Stefan指出响应倾斜属性干杯!

只需将属性response seSkew添加到WebSSOProfile消费者Impl和SingleLogoutProfileImpl bean:

<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl">
    <property name="responseSkew" value="600"/> <!-- 10 minutes -->
</bean>

<bean id="logoutprofile" class="org.springframework.security.saml.websso.SingleLogoutProfileImpl">
    <property name="responseSkew" value="600"/> <!-- 10 minutes -->
</bean>

匿名用户

看起来允许的时间差异是硬编码的。

查看此源文件查看常量响应Skew。默认值为60秒。

我认为你最好的选择是尝试在服务器上设置相同的时间。

匿名用户

我知道,答案已经被选择了,但是我正在分享我为任何使用Grails 3、Spring Security core、SAML2.0的人找到的解决方案。

我必须设置maxAssertionTime值以及response seSkew,以便WebSSOProfile消费者Impl能够从IDP返回响应。