Session 使用SAML在单次注销中终止会话

Session 使用SAML在单次注销中终止会话,session,single-sign-on,logout,saml-2.0,Session,Single Sign On,Logout,Saml 2.0,假设有一个用户正在使用单点登录访问三种不同的服务。 单击注销,可以识别并终止与当前Sp的会话 在这里,IdP负责将用户从其他两个服务注销。 我的问题是如何获得和终止与剩余两个服务的会话?Idp向其他两个SP发送一个LogoutRequest,其中包含要注销的用户的sessionIndex。SP随后负责终止其一侧的会话。在SSO期间,IDP将SAML断言发送给包含授权的SP。此AuthInstallation的属性之一是SessionIndex,它标识用户与IDP的会话 在SLO期间,SP发送SA

假设有一个用户正在使用
单点登录
访问三种不同的服务。 单击注销,可以识别并终止与当前Sp的会话

在这里,
IdP
负责将用户从其他两个服务注销。
我的问题是如何获得和终止与剩余两个服务的会话?

Idp向其他两个SP发送一个LogoutRequest,其中包含要注销的用户的sessionIndex。SP随后负责终止其一侧的会话。

在SSO期间,IDP将SAML断言发送给包含授权的SP。此AuthInstallation的属性之一是SessionIndex,它标识用户与IDP的会话

在SLO期间,SP发送SAML注销请求,该请求包含识别IDP必须终止的用户(与IDP)会话的SessionIndex。IDP然后检索参与当前用户会话的SP列表。IDP向每个SP发送SAML注销请求


为此,IDP需要跟踪参与当前用户会话的SP(即,在当前用户会话期间接收IDP发出的SAML断言的SP)。

但在SSO时,必须将此会话索引提供给IDP,并为每个(SP+用户)组合维护一个数据库。是否有更具可扩展性的方法?会话索引在登录时从IDP提供给SP。在SLO,SP发送用户的会话索引。据我所知,SP需要为每个用户跟踪(SAML会话索引、Java会话)。IDP需要跟踪每个SP的uid和会话索引。据我所知,没有其他方法了。@Shurmajee-出于好奇,你为什么不接受这个答案?我与SAML抗争,这个答案被证明是有用的,因为它帮助我轻松实现SLO。@Mjh我投票支持这个答案,因为它在技术上是正确的。然而,在2013年,由于我们的目标SP有一些遗留系统,我试图用最少的集成工作来提出一个简单的解决方案。有人抵制任何重大更改,因此我无法真正实现SLO功能。@Shurmajee很公平,感谢您花时间回复:)对,但用户有多个活动会话。注销应该会终止所有会话。stefans answer可以解决问题,但我想知道是否有更好的方法