Spring SAML - 用户从应用程序注销时是不是必须调用 SAML 本地注销?

Posted

技术标签:

【中文标题】Spring SAML - 用户从应用程序注销时是不是必须调用 SAML 本地注销?【英文标题】:Spring SAML - Is it mandatory to call SAML local logout when user signs off from application?Spring SAML - 用户从应用程序注销时是否必须调用 SAML 本地注销? 【发布时间】:2015-04-25 22:04:33 【问题描述】:

根据link 的回答,我知道如果调用 SAML 本地注销 (/saml/logout?local=true),Spring-SAML 将清除本地 cookie。因此,我修改了应用程序中的注销逻辑来调用它。

到目前为止一切看起来都很好。但是我的应用程序在 web.xml 中将会话超时设置为 20 分钟。

<session-config>
        <session-timeout>20</session-timeout>
</session-config>

如果用户 20 分钟不活动或浏览器被用户关闭,会话将被容器静默销毁。在这种情况下,不会调用 SAML 注销。

问题:

    在收到 SAML 响应后,一旦用户通过身份验证,Spring-SAML 是否会维护任何引用? 如果是,它在哪里维护引用(会话或其他地方)?有没有其他方法可以清理它们? 如果我们不调用 SAML 本地注销会有什么影响?

我担心的是,如果不清理引用,可能会在应用程序的长期运行中导致内存泄漏。

【问题讨论】:

【参考方案1】:

默认情况下,Spring SAML 的所有状态都存储在 HttpSession 中(作为对象 SAMLCredential 中的 Spring Security 上下文的一部分),并将在会话超时时(或者更准确地说,在您的容器决定执行会话时进行清理)过期后清理)。

与Spring Security支持的任何其他认证方式完全一样,不用担心不调用本地注销。

【讨论】:

以上是关于Spring SAML - 用户从应用程序注销时是不是必须调用 SAML 本地注销?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security SAML 单点登录全局单点注销LogoutRequest解析问题

Spring SAML SSO 不共享会话

WSO2 和 Spring SAML 单次注销问题

SAML 注销时的 ADFS NullReference 异常(事件 303)

ITfoxtec SAML 2.0 - 单次注销

SAML 2.0 单次注销问题 - IdP 应如何终止在不同用户代理中运行的 SP 会话?