根据 link 的回答,据我了解,如果调用 SAML 本地注销 (/saml/logout?local=true
),Spring-SAML 将清除本地 cookie。因此,我修改了应用程序中的注销逻辑来调用它。
到目前为止一切看起来都很好。但我的应用程序在 web.xml 中将 session 超时设置为 20 分钟。
<session-config>
<session-timeout>20</session-timeout>
</session-config>
如果用户闲置 20 分钟或浏览器被用户关闭, session 将被容器静默销毁。在这种情况下,不会调用 SAML 注销。
问题:
- 在收到 SAML 响应后对用户进行身份验证后,Spring-SAML 是否会维护任何引用?
- 如果是,它在哪里维护引用( session 或其他地方)?有什么其他方法可以清理它们吗?
- 如果我们不调用 SAML 本地注销,会有什么影响?
我担心的是,如果不清理引用,可能会导致应用程序长期运行时内存泄漏。
最佳答案
默认情况下,Spring SAML 的所有状态都存储在 HttpSession
中(作为对象 SAMLCredential
中 Spring Security 上下文的一部分),并将在 session 超时时清除(或更准确地说)当您的容器决定在过期后执行 session 清理时)。
它与 Spring Security 支持的任何其他身份验证方法完全相同,因此您无需担心未调用本地注销。
关于saml-2.0 - Spring SAML - 当用户从应用程序注销时是否强制调用 SAML 本地注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693150/