搜索

8.6. W3C Web 身份验证(WebAuthn)

download PDF

红帽单点登录提供对 W3C Web 身份验证(WebAuthn) 的支持。Red Hat Single Sign-On 作为 WebAuthn 的 Rely ing party (RP) 工作。

注意

WebAuthn 的运营成功取决于用户的 WebAuthn 支持验证器、浏览器和平台。确保您的验证器、浏览器和平台支持 WebAuthn 规格。

8.6.1. 设置

对 2FA 支持的 WebAuthn 支持的设置过程如下:

8.6.1.1. 启用 WebAuthn authenticator 注册

  1. 在菜单中,单击 Authentication
  2. 所需的 Actions 选项卡。
  3. Register
  4. 单击 Required Action 下拉列表。
  5. Webauthn Register
  6. 确定

如果您希望所有新用户注册其 WebAuthn 凭据,请标记 Default Action 复选框。

8.6.1.2. 将 WebAuthn 身份验证添加到浏览器流

  1. 在菜单中,单击 Authentication
  2. 单击 浏览器 流。
  3. 单击 Copy,以制作内置 浏览器 流的副本。
  4. 输入副本的名称。
  5. 确定
  6. WebAuthn Browser Browser - Conditional OTPActions,点 Delete
  7. Delete

如果您需要所有用户的 WebAuthn:

  1. 单击 WebAuthn Browser FormsActions 链接。
  2. 单击 Add execution
  3. Provider 下拉列表。
  4. 单击 WebAuthn Authenticator
  5. Save
  6. WebAuthn AuthenticatorREQUIRED

    webauthn browser flow required

  7. 单击 Bindings 选项卡。
  8. 点击 Browser Flow 下拉列表。
  9. 单击 WebAuthn Browser
  10. Save
注意

如果用户没有 WebAuthn 凭据,用户必须注册 WebAuthn 凭据。

如果用户仅注册了 WebAuthn,则用户可以通过 WebAuthn 进行登录。因此 ,您可以

流程

  1. 单击 WebAuthn Browser FormsActions 链接。
  2. Add flow
  3. Alias 字段中输入 "Conditional 2FA"。
  4. Save
  5. 条件 2FACONDITIONAL
  6. Conditional 2FAActions 链接。
  7. 单击 Add execution
  8. Provider 下拉列表。
  9. Condition - User Configured
  10. Save
  11. Conditional 2FAREQUIRED
  12. Conditional 2FAActions 链接。
  13. 单击 Add execution
  14. Provider 下拉列表。
  15. 单击 WebAuthn Authenticator
  16. Save
  17. Conditional 2FAALTERNATIVE

    webauthn browser flow conditional

用户可以选择使用 WebAuthn 和 OTP 作为第二个因素:

流程

  1. Conditional 2FAActions 链接。
  2. 单击 Add execution
  3. Provider 下拉列表。
  4. ITP Form
  5. Save
  6. Conditional 2FAALTERNATIVE

    webauthn browser flow conditional with OTP

8.6.2. 使用 WebAuthn authenticator 进行身份验证

在注册 WebAuthn authenticator 后,用户执行以下操作:

  • 打开登录表单。用户必须使用用户名和密码进行身份验证。
  • 用户的浏览器要求用户使用其 WebAuthn authenticator 进行身份验证。

8.6.3. 以管理员身份管理 WebAuthn

8.6.3.1. 管理凭证

Red Hat Single Sign-On 管理 WebAuthn 凭证与来自用户凭证管理的其他 凭证 类似:

  • Red Hat Single Sign-On 为用户分配一个必要操作,以便从 Reset Actions 列表中删除 WebAuthn 凭证,然后选择 Webauthn Register
  • 管理员可以点删除来删除 WebAuthn 凭据。
  • 管理员可以通过选择 Show data…​ 来查看凭证的数据,如 AAGUID。
  • 管理员可以通过在 User Label 字段中设置值并保存数据,为凭证设置标签。

8.6.3.2. 管理策略

管理员可以将 WebAuthn 相关操作配置为每个域的 WebAuthn 策略

流程

  1. 在菜单中,单击 Authentication
  2. 单击 WebAuthn Policy 选项卡。
  3. 在策略中配置项目(请参见下面的描述)。
  4. Save

可配置项及其描述如下:

Configuration描述

依赖实体名称

可读取的服务器名称作为 WebAuthn Relying unsupported。此项目是必需的,并适用于注册 WebAuthn authenticator。默认设置为 "keycloak"。如需了解更多详细信息,请参阅 WebAuthn 规格

签名算法

该算法告知 WebAuthn 身份验证器用于 公共密钥凭据的签名算法。红帽单点登录使用公共密钥凭据来签名和验证身份 验证身份。如果没有算法,则默认 ES256 被调整。ES256 是应用于 WebAuthn authenticator 注册的可选配置项。如需了解更多详细信息,请参阅 WebAuthn 规格

依赖第三方 ID

用于确定公钥凭据范围的 WebAuthn 的 ID。ID 必须是 origin 的有效域。此 ID 是应用于 WebAuthn authenticator 的注册的可选配置项。如果该条目为空,Red Hat Single Sign-On 会修改 Red Hat Single Sign-On 的基本 URL 的主机部分。如需了解更多详细信息,请参阅 WebAuthn 规格

在测试过程中参考信息

浏览器上的 WebAuthn API 实施(WebAuthn Client)是生成 Attestation 语句的首选方法。这个首选项是应用到 WebAuthn authenticator 注册的可选配置项。如果没有 选项,其行为与选择"none"相同。如需了解更多详细信息,请参阅 WebAuthn 规格

身份验证器附加

WebAuthn 客户端的 WebAuthn 验证器可接受的附加模式。这个模式是应用到 WebAuthn authenticator 注册的可选配置项。如需了解更多详细信息,请参阅 WebAuthn 规格

需要相关密钥

选项要求 WebAuthn authenticator 将公钥凭据生成为 Client-side-resident Public Key Credential Source。此选项适用于 WebAuthn authenticator 的注册。如果留空,其行为与选择"No"相同。如需了解更多详细信息,请参阅 WebAuthn 规格

用户验证要求

选项要求 WebAuthn 验证器确认用户验证。这是一个可选配置项,它应用到 WebAuthn authenticator 的注册,并通过 WebAuthn authenticator 对用户进行身份验证。如果没有 选项,其行为与选择"首选"相同。如需了解更多详细信息,请参阅 用于注册 WebAuthn authenticator 和 WebAuthn 规格 以通过 WebAuthn authenticator 验证用户身份的 WebAuthn 规格。

Timeout(超时)

超时值(以秒为单位)用于注册 WebAuthn authenticator 并使用 WebAuthn authenticator 验证用户身份。如果设置为零,其行为取决于 WebAuthn authenticator 的实现。默认值为 0。如需了解更多详细信息,请参阅 用于注册 WebAuthn authenticator 和 WebAuthn 规格 以通过 WebAuthn authenticator 验证用户身份的 WebAuthn 规格。

避免 Same Authenticator 注册

如果启用,Red Hat Single Sign-On 无法重新注册注册的 WebAuthn authenticator。

可接受的 AAGUID

一个 WebAuthn authenticator 必须针对的 AAGUIDs 的白色列表。

8.6.4. attestation 语句验证

在注册 WebAuthn authenticator 时,红帽单点登录会验证 WebAuthn authenticator 生成的 attestation 语句的可信赖性。Red Hat Single Sign-On 需要信任定位者的证书。Red Hat Single Sign-On 使用 Keycloak 信任存储,因此您必须事先将这些证书导入到其中。

要省略这个验证,请禁用此信任存储,或将 WebAuthn 策略的配置项"Attestation Conveyance Preference" 设置为 "none"。

8.6.5. 以用户身份管理 WebAuthn 凭证

8.6.5.1. 注册 WebAuthn authenticator

注册 WebAuthn 验证器的适当方法取决于用户是否已在红帽单点登录上注册帐户。

8.6.5.2. 新用户

如果 WebAuthn Register required action 在域中是 Default Action,则新用户在第一次登录后必须设置 WebAuthn 安全密钥。

流程

  1. 打开登录表单。
  2. Register
  3. 在表单中填写项目。
  4. Register

注册成功后,浏览器会询问用户输入其 WebAuthn authenticator 标签的文本。

8.6.5.3. 现有用户

如果根据第一个示例所示设置了 WebAuthn Authenticator,那么当现有用户尝试登录时,需要他们自动注册其 WebAuthn authenticator:

流程

  1. 打开登录表单。
  2. 在表单中输入项目。
  3. Save
  4. 单击 登录

注册成功后,用户的浏览器会询问用户输入其 WebAuthn authenticator 标签的文本。

8.6.6. 免密码 WebAuthn 与两个因素一起

Red Hat Single Sign-On 使用 WebAuthn 进行双因素身份验证,但您可以使用 WebAuthn 作为第一因素身份验证。在本例中,具有 无密码 WebAuthn 凭据的用户可以无需输入密码即可向红帽单点登录身份验证。Red Hat Single Sign-On 可以使用 WebAuthn 作为域上下文和单一身份验证流中的双因素身份验证机制。

管理员通常需要用户为 WebAuthn 免密码身份验证注册的安全密钥满足不同的要求。例如,安全密钥可能需要用户使用 PIN 或具有更强大的证书颁发机构的tests 或安全密钥在安全密钥进行身份验证。

因此,红帽单点登录允许管理员配置单独的 WebAuthn 免密码策略。必需的 Webauthn Register Passwordless action of type,单独的验证器类型为 WebAuthn Passwordless Authenticator

8.6.6.1. 设置

流程

设置 WebAuthn 免密码支持,如下所示:

  1. 为 WebAuthn 免密码支持注册新的所需操作。使用 启用 WebAuthn Authenticator Registration 中所述的步骤。注册 Webauthn Register Passwordless 操作。
  2. 配置策略。您可以使用 管理策略 中描述的步骤和 配置选项。在 WebAuthn Passwordless Policy 的选项卡中,执行管理控制台中的配置。通常,安全密钥的要求要高于双因素策略。例如,在配置免密码策略时,您可以将 User Verification Requirement 设置为 Required
  3. 配置身份验证流程。使用 WebAuthn Browser 流,如 Adding WebAuthn Authentication to a Browser Flow 所述。按如下方式配置流:

    • WebAuthn Browser Forms 子流包含 Username Form,作为第一个验证器。删除默认的 Username Password Form authenticator 并添加 Username Form authenticator。此操作要求用户提供用户名作为第一步。
    • 需要一个必需的子流,它可以命名为 less Or Two-factor,例如:此子流表示用户可以通过无密码的 WebAuthn 凭据或使用双因素身份验证进行身份验证。
    • 流包含 WebAuthn Passwordless Authenticator 作为第一个替代方案。
    • 第二个替代项是名为 Password 的子流和双因素 Webauthn,例如:此子流包含 密码表单WebAuthn Authenticator

流的最终配置类似:

免密码流

PasswordLess flow

现在,您可以把 WebAuthn Register Passwordless 作为 Red Hat Sign-On (已称 Red Hat Sign-On)的所需操作来添加来进行测试。在第一次身份验证期间,用户必须使用密码和第二因素 WebAuthn 凭据。如果用户使用 WebAuthn Passwordless 凭证,则用户需要提供密码和第二因素 WebAuthn 凭据。

8.6.7. LoginLess WebAuthn

Red Hat Single Sign-On 使用 WebAuthn 进行双因素身份验证,但您可以使用 WebAuthn 作为第一因素身份验证。在这种情况下,具有 无密码 WebAuthn 凭据的用户可以向 Red Hat Single Sign-On 进行身份验证,而无需提交登录名或密码。Red Hat Single Sign-On 可在域上下文中使用 WebAuthn 作为无登录/密码和双因素身份验证机制。

管理员通常需要用户为 WebAuthn 登录身份验证注册的安全密钥满足不同的要求。无登录身份验证要求用户对安全密钥进行身份验证(例如,使用 PIN 代码或指纹),并且与无登录凭证关联的加密密钥实际存储在安全密钥中。并非所有安全密钥都符合这种要求。如果您的设备支持"用户验证"和"重要密钥",请联系您的安全关键厂商。请参阅支持的安全密钥

Red Hat Single Sign-On 允许管理员以允许无登录身份验证的方式配置 WebAuthn Passwordless Policy。请注意,无登录身份验证只能使用 WebAuthn Passwordless PolicyWebAuthn Passwordless 凭证进行配置。可以在同一域上配置 WebAuthn 登录身份验证和 WebAuthn 免密码身份验证,但将共享相同的策略 WebAuthn Passwordless 策略

8.6.7.1. 设置

流程

设置 WebAuthnless 支持,如下所示:

  1. 为 WebAuthn 免密码支持注册新的所需操作。使用 启用 WebAuthn Authenticator Registration 中所述的步骤。注册 Webauthn Register Passwordless 操作。
  2. 配置 WebAuthn 免密码策略。在 WebAuthn Passwordless Policy 选项卡的 Admin Console Authentication 部分中执行配置。在为策略配置无登录情况时,将 User Verification Requirement 设置为 requiredRequire Resident Key 设置为 Yes。请注意,由于没有专用登录策略,因此无法混合使用用户验证=no/resident key=no 和无登录情况(用户验证=yes/resident key=yes)。存储容量通常受到安全性键的限制,这意味着您无法将许多驻留在您的安全密钥中保存。
  3. 配置身份验证流程。创建一个新的身份验证流,添加"WebAuthn Passwordless"执行,并将执行的 Requirement 设置为 Required

流的最终配置类似:

LoginLess flow

LoginLess flow

现在,您可以将所需的操作 WebAuthn Register Passwordless 添加到 Red Hat Single Sign-On 中已知的用户,以进行测试。配置所需操作的用户将需要进行身份验证(例如使用用户名/密码),然后系统将提示您注册要用于无登录身份验证的安全密钥。

8.6.7.2. 特定于厂商的 remarks

8.6.7.2.1. 兼容性检查列表

使用 Red Hat Single Sign-On 进行无登录身份验证需要安全密钥才能满足以下功能

  • FIDO2 合规性:不要与 FIDO/U2F 混淆
  • 用户验证:安全密钥验证用户身份的功能(第一条发现您的安全密钥的人员能够无密码验证和免密码验证)
  • 常驻键:用于存储登录和与客户端应用程序关联的加密密钥的功能
8.6.7.2.2. Windows Hello

要使用 Windows Hello based credentials for Red Hat Single Sign-On 进行身份验证,请配置 WebAuthn Passwordless PolicySignature Algorithms 设置以包含 RS256 值。请注意,一些浏览器不允许在私有窗口中访问平台安全密钥(如 Windows Hello)。

8.6.7.2.3. 支持的安全密钥

以下安全密钥已通过 Red Hat Single Sign-On 测试了成功进行无登录身份验证:

  • Windows Hello (Windows 10 21H1/21H2)
  • yubico Yubikey 5 NFC
  • Feitian ePass FIDO-NFC
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.