Spring Security SAML 中的刷新会话

Posted

技术标签:

【中文标题】Spring Security SAML 中的刷新会话【英文标题】:Refresh Session in spring security SAML 【发布时间】:2015-12-27 12:36:48 【问题描述】:

我们正在使用 Spring SAML 扩展为我们的客户提供 SSO 支持。它在我们的开发环境 IDP(okta) 中运行良好。但是,我们的一个客户正在使用 Tivoli 作为 IDP,我们遇到了一个问题,在一定时间后,用户将开始无法验证错误。

根据我们发现的研究,Tivoli 正在为 <saml:AuthnStatement AuthnInstant="2015-09-14T20:14:14Z" SessionIndex="xxxx" SessionNotOnOrAfter="2015-09-14T21:14:14Z"> 在我们的 SAML 断言响应中。

我想知道我们作为 SP 有哪些选择来处理这种情况。我们是否应该在用户遇到问题时提示用户重新进行身份验证,或者是否有办法以某种方式设置我们的应用程序,以便它可以自动刷新会话。

谢谢 萨希尔

【问题讨论】:

【参考方案1】:

此 SessionNotOnOrAfter 属性将使有效负载到期。 SP 不应该永远收到相同的 Payload,如果这样,中间人攻击的机会就会很大。

SP 应该实现 KeepAlive 功能来 ping 回 IDP,说扩展相同有效负载的会话。因此 IDP 可以使用当前数据和时间戳更新此属性。

【讨论】:

感谢拉杰什的回复。你知道服务提供者的 Spring-security SAML 扩展是否有办法自动完成吗? 没有 Sahil,据我所知,它没有集成 keepalive 功能。我们必须编写简单的 web 服务调用来 ping IDP 以扩展它的会话。请参阅以下链接,您将清楚地了解 IDP-SP 会话同步。 xacmlinfo.org/2015/02/12/sp-idp-session-time-out-with-saml2-sso

以上是关于Spring Security SAML 中的刷新会话的主要内容,如果未能解决你的问题,请参考以下文章

Java 配置中的 Spring Security XML 配置和 Spring SAML

Spring SAML 扩展和 Spring Security 5

spring-security saml2:如何获取当前用户?

具有数据库角色的 Spring Security SAML

未抛出 Spring Security SAML DisabledException

没有 Spring Boot 的 Spring Security SAML 身份元数据