9.10. 第一个登录流


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

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

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

流位于 Authentication 选项卡下的 Admin Console 中。当您选择 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 帐户的本地构建,并将其与身份提供程序链接,整个流已完成。否则,它将进入下一个 处理现有帐户子流。如果您始终要确保没有重复的帐户,您可以将这个验证器标记为 REQUIRED。在这种情况下,如果用户有 Keycloak 帐户的现有红帽构建,并且用户需要通过帐户管理链接身份提供程序帐户,则用户会看到错误页面。

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

9.10.3. 禁用自动用户创建

默认第一次登录流程会查找与外部身份匹配的 Keycloak 帐户的红帽构建,并提供链接它们。如果没有匹配的红帽 Keycloak 帐户构建,则流会自动创建。

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

禁用用户创建:

流程

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

此配置也意味着红帽构建的 Keycloak 本身将无法决定哪个内部帐户与外部身份对应。因此,通过重新身份验证器验证 现有帐户将要求用户提供用户名和密码。

注意

通过身份提供程序启用或禁用用户创建完全独立于域用户 注册开关。您可以通过身份提供程序启用 user-creation,并在 realm 登录设置中同时禁用用户自助注册,反之亦然。

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