9.10. 第一个登录流


当用户通过身份代理登录时,红帽构建的 Keycloak 导入,以及域本地数据库中用户的链接方面。当红帽构建的 Keycloak 通过外部身份提供程序成功验证用户时,可能会出现两种情况:

  • 红帽构建的 Keycloak 已导入,并将用户帐户与经过身份验证的身份提供程序帐户相关联。在这种情况下,红帽构建的 Keycloak 以现有用户身份进行身份验证,并将重新重定向到应用程序。
  • 红帽构建的 Keycloak 中没有此用户的帐户。通常,您将新帐户注册并导入到红帽构建的 Keycloak 数据库,但可能存在具有相同电子邮件地址的现有 Keycloak 帐户构建。将现有本地帐户自动链接到外部身份提供程序是潜在的安全漏洞。您无法始终信任来自外部身份提供程序的信息。

在处理其中的一些情况时,不同的机构有不同的要求。使用红帽构建的 Keycloak,您可以使用 IDP 设置中的 First Login Flow 选项,选择首次从外部 IDP 登录的用户 的工作流。默认情况下,第一个 登录流 选项指向 第一个代理登录流,但您可以将流或不同的流用于不同的身份提供程序。

流位于 身份验证选项卡下的管理控制台中。当您选择 First Broker Login 流时,您会看到默认使用的验证器。您可以重新配置现有的流。例如,您可以禁用一些验证器,将它们标记为 必需,或者配置一些验证器。

9.10.1. 默认第一次登录流验证器

查看配置文件
  • 此验证器显示配置集信息页面,因此用户可以查看红帽从身份提供程序中检索 Keycloak 的配置集。
  • 您可以在 Actions 菜单中设置 Update Profile On First Login 选项。
  • ON 时,用户会显示配置集页面,请求额外信息来联合用户的身份。
  • 缺少 时,如果身份提供程序不提供强制信息(如电子邮件、名字或姓氏)时,用户会看到配置文件页面。
  • OFF 时,配置集页面不会显示,除非用户在 Confirm Link Existing Account authenticator 显示的页面中点 Review profile info 链接的后续阶段。
如果唯一,创建用户

此验证器检查是否已有一个已存在的 Keycloak 帐户,其电子邮件或用户名(如身份提供程序中的帐户一样)。如果没有,则验证器只创建一个新的本地红帽构建 Keycloak 帐户,并将其与身份提供程序链接,整个流程已完成。否则,它会进入下一个 Handle Existing Account 子流。如果始终要确保没有重复的帐户,您可以将此验证器标记为 REQUIRED。在这种情况下,如果已存在红帽构建 Keycloak 帐户,用户会看到错误页面,并且用户需要通过帐户管理链接身份提供程序帐户。

  • 此验证器验证是否已有一个红帽构建的 Keycloak 帐户,其电子邮件或用户名与身份提供程序的帐户相同。
  • 如果帐户不存在,则验证器会创建一个本地的红帽构建 Keycloak 帐户,将这个帐户与身份提供程序连接,并终止流。
  • 如果存在帐户,则验证器将实施下一个 Handle Existing Account 子流。
  • 要确保没有重复的帐户,您可以将此验证器标记为 REQUIRED。如果红帽构建的 Keycloak 帐户存在,用户会看到错误页面,用户必须通过帐户管理链接其身份提供程序帐户。
确认链接现有帐户
  • 在信息页面中,用户会看到一个具有相同电子邮件的 Keycloak 帐户的红帽构建。用户可以再次查看其配置文件,并使用不同的电子邮件或用户名。流重启并返回到 Review Profile 验证器。
  • 另外,用户可以确认他们希望将其身份提供程序帐户与其现有红帽构建的 Keycloak 帐户相关联。
  • 如果您不希望用户看到此确认页面,请直接通过电子邮件验证或重新身份验证链接身份提供程序帐户,请禁用此验证器。
通过电子邮件验证现有帐户
  • 默认情况下,此 验证器 是 ALTERNATIVE。如果域配置了 SMTP 设置,红帽构建的 Keycloak 会使用此验证器。
  • 验证器向用户发送电子邮件,以确认他们希望将身份提供程序与其红帽构建的 Keycloak 帐户相关联。
  • 如果您不想通过电子邮件确认链接,但希望用户使用其密码重新进行身份验证,请禁用此验证器。
通过重新身份验证验证现有帐户
  • 如果电子邮件验证器不可用,请使用此验证器。例如,您尚未为您的域配置 SMTP。此验证器显示一个登录屏幕,供用户验证将其红帽构建的 Keycloak 帐户与身份提供程序相关联。
  • 用户也可以重新验证已链接到其红帽构建的 Keycloak 帐户的另一个身份提供程序。
  • 您可以强制用户使用 OTP。否则,它是可选的,如果您为用户帐户设置了 OTP,则使用它。

9.10.3. 禁用自动用户创建

Default first login 流查找与外部身份匹配的 Keycloak 帐户的红帽构建,并提供链接它们。如果没有匹配的红帽构建的 Keycloak 帐户,则流会自动创建一个。

对于某些设置,这个默认行为可能不适合。例如,如果您使用只读 LDAP 用户存储,其中所有用户都预先创建。在这种情况下,您必须关闭自动创建用户。

禁用用户创建:

流程

  1. 点菜单中的 Authentication
  2. 从列表中选择 First Broker Login
  3. 设置 创建用户(如果唯一 )到 DISABLED
  4. Confirm Link Existing Account 设置为 DISABLED

此配置还意味着红帽构建的 Keycloak 本身将无法确定哪个内部帐户会与外部身份对应。因此,Verify Existing Account By Re-authentication authenticator 将要求用户提供用户名和密码。

注意

通过身份提供程序启用或禁用用户创建在域用户 注册交换机上 完全独立。您可以由身份提供程序启用 user-creation,并在域登录设置中禁用了用户自助注册,反之亦然。

9.10.4. 检测现有用户第一次登录流

要配置第一个登录流,请执行以下操作:

  • 只有已在此域中注册的用户可以登录,
  • 在不提示的情况下,会自动链接用户。

使用以下两个验证器创建新流:

检测现有代理用户
此验证器可确保处理唯一的用户。将验证器要求设置为 REQUIRED
自动设置现有用户
自动将现有用户设置为身份验证上下文,而无需验证。将验证器要求设置为 REQUIRED

您必须将 身份提供程序配置的第一个登录流 设置为该流。如果要使用身份提供程序属性更新用户配置集(Last Name, First Name…​),您可以将 Sync Mode 设置为 force

注意

如果要将身份委派给其他身份提供程序(如 GitHub、Facebook …​),但您想要管理可以登录的用户,则可以使用这个流。

使用这个配置,红帽构建的 Keycloak 无法决定哪个内部帐户与外部身份对应。Verify Existing Account By Re-authentication authenticator 向提供程序询问用户名和密码。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat