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解析问题