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

如何让Global Logout在使用spring-security-saml的多租户SAML应用程序中工作?

师向文
2023-03-14

我正在开发的多租户SAML应用程序使用spring security SAML,包含两个服务提供商和一个IDP(Active Directory联合服务)。将SSO应用到该应用程序中的开发人员选择将其变为多租户,因为它是一个具有两个不同接口的两用应用程序,本质上是两个应用程序合一。它设计用于两个选项卡打开的浏览器中,因此一个界面在第一个选项卡中运行,另一个界面在第二个选项卡中运行。除了一个特定的工作流外,一切似乎都正常工作:

  1. 打开浏览器,导航到ADFS登录页面,然后与第一家服务提供商登录应用程序
  2. 打开另一个选项卡,导航到ADFS登录页面,然后选择第二个服务提供商
  3. 执行全局注销

日志文件包含以下错误:

在会话11cfm6ja982te14dxxul71iufg中找不到消息a598hd6ff68479a44c3495f7h4216aa接收到的注销响应无效日志响应中的InReposseToField不对应于发送的消息a598hd6ff68479a44c3495f7h4216aa

我怀疑这与选项卡之间共享相同的JSESSIONID cookie有关,因此当一个SP注销时,它会终止相关的会话。然后,当另一个SP尝试使用同一会话注销时,它会失败,因为该会话已退出。有人能帮我解决这个问题吗?

共有1个答案

霍建章
2023-03-14

我终于能够通过在SecurityContextLogoutHandler bean中将validateHttp会话设置为false来正确工作。现在,当第一个服务提供商注销时,身份验证仍然会被清除,但会话仍然有效。然后当第二个服务提供商注销时,它会找到会话并成功注销。这应该没问题,因为默认情况下Jetty会在30分钟不活动后超时会话。这是我更改的bean:

//注销处理程序终止本地会话@Bean public SecurityContextLogoutHandler logoutHandler(){SecurityContextLogoutHandler logoutHandler=new SecurityContextLogoutHandler();logoutHandler.setInvalidateHttpSession(false);logoutHandler.setClearAuthentication(true);返回logoutHandler;}

 类似资料:
  • 我有一个spring security saml项目的分叉。你可以在这里看到我应用的更改:https://github . com/troy hart/spring-security-SAML/commits/nwri-sample _ simple。 SP在SSO Circle注册。如果您有SSO Circle登录名,您可以启动应用程序并测试SP启动的SSO是否有效。但是,我无法让IDP启动的S

  • 我正在基于上的示例代码编写一个带有Spring Boot和Spring Security SAML的web应用程序https://github.com/vdenotaris/spring-boot-security-saml-sample.当我尝试访问应用程序中的安全URL时,出现以下异常: 我正在按如下方式配置IDP: 从调试输出来看,IDP似乎已配置: 我到底做错了什么?

  • 我正在尝试配置Spring Security SAML 1.0.1以访问位于https://discovery.renater.fr/test的远程发现服务。而是到达“CachingMetadataManager”的属性中指定的IDP。 以下是我如何生成SP元数据: 可以看到,我已经将属性设置为bean中的。我还在bean中设置了属性、和。但是,当我将应用程序的日志级别设置为“trace”时,值从

  • 我试图运行启动示例Spring安全saml引导从,https://github.com/vdenotaris/spring-boot-security-saml-sample 我能够运行它并与身份提供者集成。 但是,我看到每次都创建一个会话,并且在用户退出之前保持持久。 我在spring boot中使用基于资源的服务,因此不想增加会话的开销。 我尝试将以下行添加到配置方法中,http.sessio

  • 我能够使用Spring Security SAML扩展使我的应用程序充当IDP socircle的SP。我的客户有以下要求: 1.对断言进行签名:从IDP发送的断言进行了签名,并且运行良好。 在考虑到弗拉基米尔的评论之后。我将绑定更改为HTTP-Post,所以现在我发送带有所示签名的SAML请求。通过执行以下操作,我能够发送使用我的私钥(而不是示例项目提供的私钥)签名的请求: 使用keygen工具

  • 我在我的项目中使用了Spring Security SAML,它运行良好。我的SamlSecurityConfig中有以下内容。groovy文件 因此,当我进入/saml/login时,它会将我重定向到我的IDP登录页面,登录IDP后,我会被重定向到我的应用程序。现在我想知道Spring Security SAML中是否有任何配置,我可以指定一个更新密码url,通过该url,我的应用程序应该重定向