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

密钥伪装问题和从SAML身份提供程序注销

吕德业
2023-03-14

我有问题与KeyCloak的配置和单一注销从SAML身份提供程序。

脚本:

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

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

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

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

我真的不太明白SAML是如何工作的,但用户不应该使用SLO从SP注销吗?或者我在KC的客户端/领域/IP配置中遗漏了什么?谢谢你的帮助/解释

共有1个答案

袁宜民
2023-03-14

全局注销工作的要求

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

当您首先从SP注销时,在这种情况下,您的SP正在向IdP发送注销请求,这就是您从IdP以及SP注销的原因。但在另一种情况下,我认为没有调用注销URL(这可能是由于客户端中缺少配置)。

你能发布配置的屏幕截图来帮助你更好吗?

 类似资料:
  • 我向我的领域添加了一个自定义OIDC身份提供者,我想使用直接访问授权流(或< code>grant_type=password),但这不起作用。 钥匙斗篷有可能吗? 当尝试使用授权代码流程时,一切正常,但使用时出错 被退回。 我正在尝试获取访问令牌 e 刷新令牌执行以下请求: 这是身份提供者配置:这是身份提供者配置

  • 我已经参考了Spring SAML手册来创建私钥和导入公共证书。但是我仍然面临加密/解密的问题。 我用手册中提到的以下命令创建了一个JKS文件,如下所示 用于导入IDP公共证书的命令 用于私钥的命令 私钥和密钥存储库的密码定义为更改 我已经配置了securityContext如下 我可以看到可以选择IDP的idpDiscovery页面。我也可以查看IDP的登录页面。但是当我提供用户凭据时,我得到了

  • 我需要使用谷歌身份提供商Hi将SAML 2.0与我们的应用程序集成 我们的应用程序目前在其架构中使用谷歌云平台和Firebase,我被指派使用Okta将SAML 2.0集成到应用程序中。我对两个平台上的不同术语感到困惑。我一直在Okta和谷歌云平台上遵循指南,但仍然无法成功解决这个问题。 我的问题来自Okta和谷歌云平台,我将在这里逐一提问 Okta创建一个新的应用程序时 受众URI(SP实体ID

  • 我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?

  • 我使用Identity server 4和OIDC实现了身份验证和授权,以允许访问我们的应用程序的客户端获得访问我们的资源服务器(web API)所需的令牌。这是当前的体系结构: Identity Server 4使用自定义数据库对用户进行身份验证 资源API(ASP.NET核心) 角度2前端 我需要实现SSO,来自其他系统的用户将从他们的身份提供者传递SAML2断言,以允许他们访问我们的资源AP

  • 目前,我正在使用Spring Security编辑我的项目上SAML支持的现有实现。我有多个标识提供商,为此我将数据存储在数据库中。使用我的应用程序用户界面,我可以在运行时添加新的标识提供商,它将被添加到CachingMetadataManager中。之后,调用刷新元数据。然而,我有JKSKeyManager,它在应用程序启动时加载,并加载一个JKS密钥库,用于所有标识提供商的所有元数据。我希望用