当前位置: 首页 > 知识库问答 >
问题:

Spring Security 5.2 SAML2多个IDP注销

俞学
2023-03-14

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)

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

为多个国内流离失所者启用单一注销的正确解决方法是什么?

共有1个答案

景国兴
2023-03-14

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

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

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

SP尝试将由登录到一个IdP的用户发起的会话与同一用户登录到另一个IdP的会话合并并不常见,这是我认为您正在描述的用例。但是如果您觉得我错过了什么,请随时添加更多细节。

 类似资料:
  • 在前一篇文章(Sustainsys.SAML2,带有多租户应用程序)中,我询问了向配置中添加多个IDP的过程。我已经完成了这项工作,但需要一些帮助来实现多租户应用程序。 Anders发布了Sustainsys的回复: 选项上的“标识提供者”属性是一个集合。只需向其添加更多 IdentityProvider 对象即可。要选择要调用的 Idp,请在 AuthProps 中放置一个具有键 idp 的项目

  • 我一直在POCing IDP发起的SAML,我不能上班的最后一部分是全局注销。当用户从 IdP 转到 SP(一切正常)然后选择全局注销时,正在生成 LogoutRequest 并且正在重定向浏览器,但标头中的 sesisonid 不是 IdPsession 标识符 - 我该如何使 IdP 会话无效?

  • 我成功地将OneLogin java saml库用于saml SSO。但Active Directory联合身份验证服务(ADFS)的SLO(单次注销)存在问题。ADFS拒绝库创建的LogoutRequest,而SimpleSAMLphp IdP接受它。我在LogoutRequest创建时传递从ADFS接收的nameId和sessionIndex。 以下是生成的请求和收到的响应: 授权请求: 答复

  • 我有一个应用程序,它有自己的IDP,我们称之为app1。 我想建立对app2的SSO,它使用Keycloak作为IDP -让我们称它为app2。 应用1: 启动并运行,因此我无法将我的IDP转换为密钥锁 附录2: 暂无用户 外部供应商应用(不在我的域中托管) 我有哪些可能在app1和app2之间建立SSO? 谢谢

  • 我们使用的是WSO2 Identity Server 5.3.0。我配置了WSO2 IDP(符号名称“IDP1”)和服务提供商(符号名称”SP1)之间的信任。然后,我配置了WSO2作为服务提供者(“SP2”)和联合IDP(符号名“IDP2”,一些公共/政府服务)之间的第二信任。SP1保护一些资源,只有当用户通过IDP2身份验证时才允许访问这些资源。一切都基于SAML协议。登录工作正常-登录请求从W

  • 在Okta开发者帐户中,我启用了SAML单注销,并获得了身份提供者单注销URL。我使用从单点登录过程中获得的SAML响应中获得的NameID和SessionIndex创建了以下注销请求。 注销请求: 我收到以下注销响应,状态代码为RequestDenied 为什么可能是获得RequestDenied状态的原因?在Okta中启用单次注销时,我是否错过了注销请求或配置错误? 提前感谢。