2014-09-03 38 views
2

我正在寻找一种方法来增加saml消息的到期时间。我使用Spring Security和SAML 1.0.0-RC2。Spring security Saml - SP和IDP之间的时差

此时,如果服务器**时间太不相同,例如, 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服务器安装)。


拍摄黑暗

samlAuthenticationProvider豆现在看起来像下面的代码:

<bean class="org.springframework.security.saml.SAMLAuthenticationProvider" id="samlAuthenticationProvider"> 
    <property ref="userDetailsService" name="userDetails"/> 
</bean> 

我能添加到ExpiringUsernameAuthenticationToken班上有一个参考?然后调用构造函数line 53

+0

其他错误信息,你会得到指示SP和IDP之间的responseSkew /时间不匹配是:org.opensaml.common.SAMLException:响应时间的问题是太旧或与日期在未来,倾斜60,2015年时-08-27T12:40:28.284Z,或者LogoutResponse中的响应问题时间太旧或将来会有日期。 – 2015-08-27 14:08:28

回答

8

在斯特凡之后,我知道在哪里看!其实文档确实描述了这件事,我只是没有选择它:10.3 Validity intervals。欢呼Stefan指出responseSkew属性!

只是财产responseSkew添加到WebSSOProfileConsumerImpl和SingleLogoutProfileImpl豆类:

<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> 
+0

它在春季启动 – Max 2017-08-28 10:09:22

+0

@jacob不工作,我使用的,甚至后,我已指定responseSkew为60000我仍然得到这个错误的Grails!任何帮助?在grails中,我没有bean声明,所以一切都从配置文件连线。所以设置好..但我仍然得到相同的异常 – artapart 2017-11-28 11:21:28

+0

@artapart:对不起,我从来没有在我的生活中与Grails合作过,所以我不知道。只要问这是一个新的stackoverflow问题,所以Grails社区可以帮助你! – 2017-11-29 08:21:24

4

貌似在允许的时间迪菲昂斯是硬编码。

See this source file看看不变responseSkew。默认值是60秒。

我觉得这里最好的选择是尝试设置,同时在服务器上。

+0

非常感谢,你确实给了我一个方向来寻找问题。但是这个值并不是硬编码,它在60秒内默认值! – 2014-09-04 08:52:23

+0

正确的,对不起,是我不好 – 2014-09-04 11:52:32

0

我知道,答案已被选定,但我分享我所发现的任何人使用Grails 3,春季安全工作的决议核心,SAML 2.0。

我必须将maxAssertionTime值与responseSkew一起设置,以便WebSSOProfileConsumerImpl能够从IDP获取响应。