如何在 keycloak 中允许所有客户端的单一登录



我正在为不同的平台进行集成,我正在使用Keycloak作为IDP。 我为每个平台创建了使用 SAML 协议的不同客户端。我有钥匙斗篷中的用户与我的系统中的用户详细信息匹配,所以现在当我使用普通用户登录时,我需要为所有客户端执行 SSO,这意味着我有系统 A、系统 B 和系统 C,现在我有例如用户 example@example.com 这是所有系统的共同用户。使用用户 example@example.com 凭据登录系统 A 后,我还需要登录系统 B 和系统 C。它为每个系统单独工作

:如何在 keycloak 中允许所有客户端进行单点登录?

我正在为不同的平台进行集成,并且我正在使用钥匙斗篷作为IDP。我为每个平台创建了使用 SAML 协议的不同客户端。

使用用户 example@example.com 凭据登录系统 A 后,我还需要登录系统 B 和系统 C。它为每个系统单独工作。

答:

(1( Keycloak 是一种开源软件产品,允许使用针对现代应用程序和服务的身份管理和访问管理进行单点登录。

(2( SAML利用用户代理(例如 Web 浏览器(将用户信息(或用户身份(从 SAML IdP(身份提供商(联合到 SAML SP(服务提供商,例如系统 A、系统 B 和系统 C(。

(3( 要使用Keycloak允许所有客户端(例如系统A,系统B和系统C(进行单点登录,您需要将不同的平台(例如系统A,系统B和系统C(与Keycloak SAML IdP集成。

一旦您的所有不同平台(例如,系统A,系统B和系统C(与Keycloak SAML IdP集成,您的用户(例如,example@example.com(只需要使用相同的Web浏览器即可访问所有不同的平台(例如,系统A,系统B和系统C(。

那是

使用用户 example@example.com 凭据登录系统 A 后,您将使用相同的 Web 浏览器自动登录系统 B 和系统 C。

后续评论:我知道以前,我尝试了不同的系统和相同的凭据,但它仍然只记录在一个应用程序中,而不是其他应用程序中。

答:

(1( SAML 如何解决跨域单点登录问题?提供了有关 SAML SSO 的宝贵信息。

Xander提供的一个流行答案:

它实际上可以是一个cookie,因为它根本不需要与服务提供商相关联,只需要与身份提供商相关联。两个服务提供商中的任何一个要做的只是向身份提供程序发出身份验证请求,因此未经身份验证的用户的过程对于 sp.example1.com 和对 sp.example2.com 的过程将是相同的。

但是,当从 sp.example1.com 发出第一个请求并且用户被重定向到 sso.example3.com 时,用户将登录到 sso.example3.com,然后可以为 sso.example3.com 设置cookie。

然后,当用户访问 sp.example2.com 时,它也会将未经身份验证的用户重定向到 sso.example3.com,但这一次,浏览器将有一个cookie与用户上次访问 sso.example3.com 的请求一起发送,即使该访问是由不同的服务提供商发起的。

因此,来自 sso.example3.com 的 Cookie 可以将用户标识为已通过身份验证,并且标识提供者可以继续发出断言以供用户 sp.example2.com 的过程,而无需用户再次完成登录工作流。

(2( 如何使用会话 Cookie 启用 SSO?描述了如何将会话 Cookie 用于 SSO。

请参阅jliu提供的答案。

最新更新