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

时间:2014-09-03 15:12:58

标签: java spring spring-security saml-2.0

我正在寻找一种方法来增加我的saml消息的到期时间。我将Spring Security与SAML 1.0.0-RC2一起使用。

此时,如果服务器**时间太不相同,例如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分钟,以防止出现这些错误。我一直在查看文档,但我不了解如何更改到期时间。如果我查看Configuration authentication object部分,可以更改到期时间,但我无法理解这个想法。

有人可以帮帮我吗?

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

3 个答案:

答案 0 :(得分:9)

在Stefan的anwser之后,我知道在哪里看!实际上文档确实描述了这个东西,我只是没有拿起它:10.3 Validity intervals。欢呼Stefan指出responseSkew属性!

只需将属性responseSkew添加到WebSSOProfileConsumerImpl和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>

答案 1 :(得分:4)

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

See this source file看看常量响应。默认值为60秒。

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

答案 2 :(得分:0)

我知道,已经选择了答案,但我正在为使用Grails 3,Spring安全核心,SAML 2.0的任何人找到解决方案。

我必须为WebSSOProfileConsumerImpl设置maxAssertionTime值和responseSkew,以便能够从IDP获取响应。