第 9 章 集成身份提供程序
Identity Broker 是一个中间服务,可将服务提供商与身份提供程序连接。身份代理创建与外部身份提供程序的关系,以使用提供程序的身份访问服务提供商公开的内部服务。
从用户的角度来看,身份代理提供了一种以用户为中心的、集中的方式来管理安全域和域的身份。您可以使用身份提供程序中的一个或多个身份链接帐户,或者根据其身份信息创建帐户。
身份提供程序从用于验证和向用户发送身份验证和授权信息的特定协议派生。它可以是:
- 社交供应商,如 Facebook、Google 或 Twitter。
- 用户需要访问您的服务的业务合作伙伴。
- 要集成的基于云的身份服务。
通常,红帽在以下协议上构建 Keycloak 基础供应商:
-
SAML v2.0
-
OpenID Connect v1.0
-
OAuth v2.0
9.1. Brokering 概述
当使用红帽构建的 Keycloak 作为身份代理时,红帽构建的 Keycloak 不会强制用户提供其凭证以便在特定域中进行身份验证。Red Hat build of Keycloak 显示可以进行身份验证的身份提供程序列表。
如果您配置默认身份提供程序,红帽构建的 Keycloak 会将用户重定向到默认供应商。
不同的协议可能需要不同的身份验证流。红帽构建的 Keycloak 支持的所有身份提供程序都使用以下流。
身份代理流
- 未经身份验证的用户在客户端应用程序中请求受保护的资源。
- 客户端应用程序将用户重定向到红帽构建的 Keycloak 进行验证。
- Red Hat build of Keycloak 显示登录页面,其中包含在域中配置的身份提供程序列表。
- 用户通过单击其按钮或链接来选择其中一个身份提供程序。
- 红帽构建的 Keycloak 会向请求身份验证的目标身份提供程序发出身份验证请求,并将用户重定向到身份提供程序的登录页面。管理员已经为管理控制台身份提供程序设置了连接属性和其他配置选项。
- 用户提供凭证或同意与身份提供程序进行身份验证。
- 当身份提供程序成功身份验证后,用户将使用身份验证响应重定向到红帽构建的 Keycloak。通常,响应包含由红帽构建的 Keycloak 用来信任身份提供程序的身份验证并检索用户信息的安全令牌。
- 红帽构建的 Keycloak 会检查来自身份提供程序的响应是否有效。如果有效,红帽构建的 Keycloak 导入,并在用户尚不存在时创建用户。如果令牌不包含该信息,红帽构建的 Keycloak 可能会询问身份提供程序以获取进一步的用户信息。此行为是 身份联邦。如果用户已存在,红帽构建的 Keycloak 可能会要求用户将现有帐户从身份提供程序返回的身份链接。此行为是 链接 的帐户。使用红帽构建的 Keycloak,您可以配置 帐户链接,并在第一个 登录流中指定它。在这一步中,红帽构建的 Keycloak 会验证用户并发出其令牌来访问服务提供商中请求的资源。
- 当用户验证时,Red Hat build of Keycloak 会将用户重定向到服务提供商,方法是在本地身份验证过程中发送之前发布的令牌。
- 服务供应商从红帽构建的 Keycloak 接收令牌,并允许访问受保护的资源。
此流的变体是可能的。例如,客户端应用程序可以请求特定的身份提供程序而不是显示它们列表,或者您可以设置 Keycloak 的红帽构建,以便在迭代身份前强制用户提供更多信息。
在身份验证过程结束时,红帽构建的 Keycloak 会将其令牌发送到客户端应用程序。客户端应用程序与外部身份提供程序分开,因此无法看到客户端应用程序的协议或它们如何验证用户身份。供应商只需要了解红帽构建的 Keycloak。