由于 IP 和 SP 之间的时区差异导致的 Spring Saml 安全身份验证问题
Posted
技术标签:
【中文标题】由于 IP 和 SP 之间的时区差异导致的 Spring Saml 安全身份验证问题【英文标题】:Spring Saml Security authentication issue due to time zone difference between the IP and SP 【发布时间】:2015-08-26 22:18:31 【问题描述】:下面打印的是由于 IP 和 SP 之间的时区差异导致的身份验证失败问题的堆栈跟踪。有没有办法在 Spring Security 中进行配置?
org.opensaml.common.SAMLException:响应发布时间太旧或日期在未来,偏差 60,时间 2015-06-11T09:27:49.000Z 在 org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:126) 在 org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82) 在 org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) 在 org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
【问题讨论】:
我遇到了同样的问题 - 我的位置与 UTC 的时间距离偏斜已消失。不过,我宁愿不要将偏斜打开到一个很大的数字…… 【参考方案1】:您可以从 spring-saml 文档中获取帮助来配置 WebSSOProfileConsumerImpl bean 来配置时间。
您可以尝试更新 refreshToken 元数据的时间
<bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
<constructor-arg>
<bean class="java.util.Timer"/>
</constructor-arg>
<constructor-arg>
<bean class="org.opensaml.util.resource.ClasspathResource">
<constructor-arg value="/metadata/idp.xml"/>
</bean>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
<property name="minRefreshDelay" value="120000"/>
<property name="maxRefreshDelay" value="300000"/>
</bean>
并尝试更新 maxAuthenticationAge 时间。
<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl">
<property name="maxAuthenticationAge" value="28800"/>
</bean>
【讨论】:
以上是关于由于 IP 和 SP 之间的时区差异导致的 Spring Saml 安全身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章
由于 .net-core 中的 linq-statement 导致 IEnumerable 和 List 之间出现意外差异? [复制]