我对Keycaptain的配置和SAML Identity Provider的Single Logout有问题。
场景:
- 用户尝试使用Keycloft的客户端(OID(登录到服务提供商
- KC重定向到SAML身份提供商
- 输入正确的凭据,用户登录,KC创建会话,用户重定向回SP页面
- 在另一个选项卡中,用户直接登录到IP(由于SSO,不需要凭据(
- 用户从SP注销
- 刷新第二个选项卡(IP(后,用户将注销
但是,如果用户首先从IP注销,则SP会话不会关闭,并且用户仍然登录:
- 用户从IP注销(重定向到KC端点并返回IP登录页面(
- 刷新后,用户仍登录SP
Key斗篷正确接收samlp:LogoutRequest请求并返回<samlp:注销响应。。。samlp:状态<samlp:StatusCode值=";urn:a绿洲:名称:tc:SAML:2.0:状态:成功">lt/samlp:状态>lt/samlp:注销响应>
在KC管理控制台中,我仍然可以看到给定客户端(和用户(有活动会话。实际上,我只能在KC stdout(请求转储器过滤器(中看到来自IP的SAML注销请求,但在KC中没有发生注销事件。
我真的不太了解SAML是如何工作的,但用户不应该使用SLO从SP注销吗?或者我在KC的客户端/领域/IP配置中遗漏了什么?感谢您的帮助/解释
全球注销工作的要求
- 用于两个服务提供商的客户端应该在同一领域中
- 当您从IdP注销时,您是否看到每个服务提供商都发出了注销请求?我相信在您的情况下,它不是为您的SP调用注销URL。这需要在客户端级别进行配置
- 如果正在调用SP的注销URL,并且即使在那时您也登录到了SP,则表示SP在执行注销时存在一些问题
在这种情况下,当您首先从SP注销时,您的SP将向IdP发送注销请求,这就是您从IdP和SP注销的原因。但在另一种情况下,我认为没有调用Logout URL(这可能是由于客户端中缺少配置(。
你能发布一张配置的截图来帮助你更好吗?