Keycloak和从SAML身份提供者注销的问题

时间:2020-08-03 13:23:38

标签: single-sign-on keycloak saml single-logout

我对Keycloak的配置和从SAML身份提供程序的一次注销有疑问。

场景:

  1. 用户尝试使用Keycloak的客户端(OID)登录服务提供商
  2. KC重定向到SAML身份提供程序
  3. 输入正确的凭据,用户登录,KC创建会话并将用户重定向回SP页面
  4. 在另一个选项卡中,用户直接登录IP(由于SSO不需要凭据)
  5. 用户从SP中注销
  6. 刷新第二个选项卡(IP)后,用户已注销。

但是,如果用户首先从IP注销,则SP会话不会关闭并且用户仍然登录:

  1. 用户从IP注销(重定向到KC端点并返回到IP登录页面)
  2. 刷新后,用户仍登录SP

Keycloak正确接收samlp:LogoutRequest请求并返回

在KC管理控制台中,我仍然可以看到给定客户端(和用户)的活动会话。实际上,我只能在KC stdout(请求转储过滤器)中看到来自IP的SAML注销请求,但在KC中没有发生注销事件。

我真的没有详细了解SAML的工作原理,但不应该是用户使用SLO从SP中注销吗?还是我在KC的客户端/领域/ IP配置中缺少某些内容? 谢谢您的帮助/解释

1 个答案:

答案 0 :(得分:1)

全局注销工作的要求

  • 两个服务提供商都使用的客户端应该在同一个域中。
  • 从IdP注销时,您是否看到每个服务提供商都发出了注销请求的请求?我相信在您的情况下,它不会为您的SP调用注销URL。需要在客户端级别进行配置。
  • 如果正在调用SP的注销URL,即使您已经登录到SP,那么这也意味着SP在注销的实现中存在一些问题。

在这种情况下,当您首先从SP注销时,您的SP会将注销请求发送到IdP,因此正从IDP和SP中注销。 但是在另一种情况下,我认为未调用注销URL(可能是由于客户端中缺少配置)。

您可以发布配置的屏幕截图以帮助您更好吗?