我正在寻找一种方法来增加我的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的服务器)。
在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返回响应。