8.8. Passkeys
Red Hat build of Keycloak 为 Passkeys 提供预览支持。Red Hat build of Keycloak 充当 Passkeys Relying Party (RP)。
Passkey 注册和身份验证是通过 WebAuthn 的功能实现的。因此,红帽构建的 Keycloak 用户可以通过现有 WebAuthn 注册和身份验证进行 Passkey 注册和身份验证。
同步 Passkeys 和设备密集型 Passkeys 可用于 Same-Device 和跨设备身份验证(CDA)。但是,Passkeys 操作成功取决于用户的环境。确保在 环境 中 可以成功执行哪些操作。
8.8.1. 使用条件 UI 的 Passkey 身份验证
带有条件 UI 的 Passkey 身份验证可以通过其 passkey 验证用户身份,其方式与 LoginLess WebAuthn 相同。此身份验证显示用户在运行浏览器的设备上存储的 passkeys 列表。因此,用户可以在列表中选择一个 passkeys 进行验证。与 LoginLess WebAuthn 相比,身份验证可以提高用户的身份验证体验。
此身份验证使用 WebAuthn Conditional UI。因此,这个身份验证成功取决于用户的环境。如果环境不支持 WebAuthn Conditional UI,则此身份验证会返回 LoginLess WebAuthn。
Passkey 身份验证 是技术预览,且不被支持。此功能默认为禁用。
使用-- features=preview
or-- features=passkeys
启用服务器
8.8.1.1. 设置
流程
使用条件 UI 设置 Passkey 身份验证,如下所示:
-
(如果还没有)注册 WebAuthn 免密码支持新的所需操作。使用 Enable WebAuthn Authenticator 注册 中所述的步骤。注册
Webauthn Register Passwordless
操作。 配置
WebAuthn 无密码策略
。在 Admin Console,Authentication
部分中执行配置,在Policies
WebAuthn Passwordless Policy
中。当您为无登录情况配置策略时,将 User Verification Requirement 设置为 required,并将 Requireable credential 设置为 Yes。请注意,由于没有专用的登录策略,因此无法使用 user verification=no/discoverable credential=no 和 loginless 场景(用户验证=yes/可发现的 credential=yes)来混合使用身份验证场景。注意存储容量通常限制在硬件 passkeys 上,这意味着您无法在您的 passkey 上存储多个可发现的凭证。但是,如果您使用 Google 帐户支持的 Android 电话或由 Bitwarden 支持的 iPhone,则可以缓解这个限制。
配置身份验证流。创建一个新的身份验证流,添加 Passkeys Conditional UI Authenticator 执行,并将执行的 Requirement 设置设置为 Required。
流的最终配置类似如下:
- 将上述流绑定为域中 浏览器 身份验证流,如上面的 WebAuthn 部分所述。
上面的身份验证流程要求用户必须已经在自己的帐户或她的帐户上具有 passkey 凭证才能登录。此要求意味着域中的所有用户都必须已经设置 passkeys。这可以通过启用用户注册来实现实例,如下所述。
8.8.1.2. 为 passkeys 条件 UI 设置注册
注册流设置的替代方法是,将所需的操作 WebAuthn Register Passwordless
添加到已 Red Hat build of Keycloak 的用户。配置所需操作的用户将必须进行身份验证(例如,用户名/密码),然后提示您注册用于无登录身份验证的 passkey。
我们计划提高可用性,并允许将条件 passkeys 与现有验证器和表单(如默认用户名 / 密码表单)集成。
从 Web Authn Level 3 中,Resident Key 被 Discoverable Credential 替换。
如果用户的浏览器支持 WebAuthn Conditional UI,则会显示以下屏幕:
使用条件 UI 的 Passkey 身份验证
当用户单击 Select your passkey 文本框时,存储在用户运行浏览的设备上的 passkeys 列表如下所示:
使用条件 UI 自动填充的 Passkey 身份验证
如果用户的浏览器不支持 WebAuthn Conditional UI,则身份验证将返回到 LoginLess WebAuthn,如下所示:
带有条件 UI 的 Passkey 身份验证回退到 LoginLess WebAuthn