Keycloak 与 IDP 和 SSO 的集成

Posted

技术标签:

【中文标题】Keycloak 与 IDP 和 SSO 的集成【英文标题】:Keycloak integration with an IDP and SSO 【发布时间】:2021-12-02 16:14:12 【问题描述】:

我的问题在这一点上更具理论性。

我有一个用例,我必须将我的应用程序(应用程序 1)与 Keycloak 和 Keycloak 与外部身份提供程序集成。在这种情况下,Keycloak 只是一个经纪人。在该外部 IDP 上还注册了其他应用程序。

场景 1:用户既没有登录 App 1,也没有登录 IDP

当用户尝试访问 App 1 时,它最终被重定向到 外部 IDP 登录表单和身份验证后,它将是 重定向回应用程序。这是一个简单的流程。

场景 2: 用户已经登录 IDP

当用户已经登录 IDP 时会发生什么, 会话处于活动状态,现在可以访问 App 1。它还会显示 登录表单,否则它最终会重定向到 App 1 而没有 提示输入用户名和密码?

只有在可能的情况下,真正的 SSO 才是可能的,因为并非每个应用都必须 通过相同的 Keycloak(可能有一些应用程序直接 与外部 IDP 集成)

【问题讨论】:

【参考方案1】:

应用程序通常会重定向到 Keycloak 进行身份验证。 Keycloak 检测到有效的 IDP 会话(来自 cookie),它直接返回代码/令牌而不询问用户凭据。

但像往常一样“这取决于”。您的应用程序中可能有奇怪的“SSO”实现(例如直接授权流程),您可能在您的应用程序/登录中使用 iframe,您可能在 Keycloak 中配置了自定义身份验证流程,......所有这些都可能会破坏默认 SSO行为。但默认情况下 SAML/OIDC 是 SSO 协议。

【讨论】:

以上是关于Keycloak 与 IDP 和 SSO 的集成的主要内容,如果未能解决你的问题,请参考以下文章

OpenID Connect 和 IDP 发起的 SSO

使用 Keycloak 和 Azure Active Directory 的 SSO

Keycloak 2.2.0.Final 发布,SSO 集成解决方案

从 SP 发起的 SSO 转换为 IdP 发起的 SSO

想要将 argo 服务器与 keycloak 集成

我是不是应该要求 IdP 签署 SAML2 SSO 响应?