java - Spring security 5.2+ SAML2 多个 IDP 注销

标签 java spring spring-security saml-2.0 spring-saml

SAML2 支持是 Spring Security 库的新增功能。

据此: https://github.com/spring-projects/spring-security/blob/master/docs/manual/src/docs/asciidoc/_includes/servlet/saml2/saml2-login.adoc

Saml 2 Login - Not Yet Supported
    1. Mappings assertion conditions and attributes to session features (timeout, tracking, etc)
    2. Single logout
    3. Dynamic metadata generation
    4. Receiving and validating standalone assertion (not wrapped in a response object)

当前版本不支持单点注销,这对于具有多个身份提供商的情况至关重要。

为多个 IDP 启用单点注销的正确解决方法是什么?

最佳答案

Spring Security 提供的单一注销功能是针对一个 IdP 注销多个 SP,而不是多个。

用户的典型流程是登录某个 IdP,然后在 session 过程中重定向到一个或多个 SP。当他们单击注销时,将结束他们最初与该 IdP 建立的 session 。

在 Spring Security 中解决这个问题的方法是通过 LogoutSuccessHandler。在 SP 成功终止其 session (单击注销按钮)后,将调用 LogoutSuccessHandler。您可以想象一个 LogoutSuccessHandler 会重定向到 IDP 的 SLO 端点或命中后端 IDP 注销端点。

SP 尝试将登录一个 IdP 的用户发起的 session 与登录另一个 IdP 的同一用户发起的 session 合并的情况并不常见,我认为您正在描述这种用例。但如果您觉得我遗漏了一些内容,请随时添加更多细节。

关于java - Spring security 5.2+ SAML2 多个 IDP 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657788/

相关文章:

javascript - 验证 AJAX 帖子上的表单

java - Spring Boot MongoRepository 忽略验证

jsf spring security登录错误信息

java - 正则表达式与 antMatcher URL 模式不匹配

java - 后台和前台执行服务

java - Grails域类字符串列表不存在

java - 无法更新我的 Map<String, Deque<Block>>

java - 如何制作创建多个文件的 Netbeans 模板?

java - 国际化网络服务

java - Spring安全配置,此时不需要子元素。发现无效内容