密码钥匙(Passkeys,WebAuthn)
密码钥匙(Passkey) 为传统密码提供了一种更安全且用户友好的替代方案。通过使用公钥加密技术,密码钥匙通过绑定用户设备、服务域名和用户 ID,有效抵御网络钓鱼和密码攻击,提升安全性。它兼容多种设备或浏览器,并允许用户使用生物识别和硬件安全特性实现便捷的认证 (Authentication)。WebAuthn 提供了 API,使网站能够实现密码钥匙功能。
Logto 支持在 多因素认证 (MFA) 和 密码钥匙登录 场景下使用密码钥匙(WebAuthn)。同一个底层 WebAuthn 凭证可以在这两种场景下复用,具体取决于你的租户配置。
概念
客户通常了解的是密码钥匙(Passkeys),而不是 WebAuthn。那么它们之间是什么关系,如何使用?让我们来探索这些概念:
- 密码钥匙(Passkeys):密码钥匙是一种基于 FIDO、抗钓鱼的凭证,用于替代密码。它利用非对称公钥加密技术提升安全性。它可以是硬件令牌或安全密钥,如 USB 或蓝牙设备。由于“密码钥匙”是展示给用户的认证 (Authentication) 方式,因此应在你的产品客户端中使用该术语。
- WebAuthn:它是由 W3C 和 FIDO 联盟开发的 JavaScript API,使 Web 应用能够采用 FIDO2 标准进行认证 (Authentication)。密码钥匙是 WebAuthn 支持的认证 (Authentication) 方式之一。在 Logto 控制台中,我们专业地将这种集成称为“WebAuthn”。
WebAuthn 为用户提供了多样化的认证器,分为本地和云端两种类型:
- 平台认证器(内部认证器):它绑定于单一且特定的设备操作系统,如电脑、笔记本、手机或平板,即用户用于登录的设备。它仅在该设备上通过生物识别或设备密码等方式进行授权,因此认证 (Authentication) 速度很快。例如,macOS 或 iOS 上通过 Touch ID、Face ID 或设备密码验证的 iCloud 钥匙串;Windows Hello 通过人脸识别、指纹或 PIN 验证。
- 漫游认证器(外部认证器,跨平台认证器):它是独立的便携设备或软件应用,如硬件安全密钥或智能手机。需要通过 USB 连接或保持 NFC、蓝牙开启。漫游认证器不受限于单一设备或浏览器,提供更高的灵活性。
想深入了解 WebAuthn 的原理和流程,可以参考我们的博客:WebAuthn 和密码钥匙 101 以及 集成 WebAuthn 前你应该知道的事。
配置密码钥匙用于 MFA 验证
- 进入 控制台 > 多因素认证 (MFA)
- 启用“密码钥匙(WebAuthn)”因子。建议将密码钥匙与其他 MFA 因子(TOTP、短信、备份码)结合使用,以降低单一因子依赖。
- 配置你偏好的 MFA 策略(必需或可选)
- 保存你的配置更改
如果同一用户通过 密码钥匙登录 登录,Logto 会跳过单独的 MFA 验证步骤。密码钥匙登录已满足基于 WebAuthn 的验证要求。
在实现 WebAuthn 时,需注意以下一些限制:
- 平台和浏览器限制:需要注意,Logto 目前不支持原生应用的 WebAuthn。此外,WebAuthn 认证器的可用性取决于浏览器和设备能力(查看支持列表)。因此,WebAuthn 并不是实现多因素认证 (MFA) 的唯一选项,否则你可以控制哪些浏览器和设备可以访问你的产品。
- 域名限制:更换域名会阻碍用户通过现有 WebAuthn 账户进行验证。密码钥匙绑定于当前网页的特定域名,无法跨域使用。
- 设备限制:丢失设备可能导致用户无法访问账户,尤其是依赖“此设备”平台认证器的用户。为提升认证 (Authentication) 可用性,建议为用户提供多种认证 (Authentication) 因子。
配置密码钥匙管理
你可以使用 Account API 构建自定义账户管理界面,让用户添加、查看、重命名和移除他们的密码钥匙。这对于打造个性化账户中心和实现跨设备备份场景非常有用。
详细实现步骤和 API 接口请参见 通过 Account API 进行账户设置。
密码钥匙设置流程
密码钥匙规范要求用户必须主动点击当前页面上的按钮以启动认证 (Authentication) 组件。这意味着在设置和验证流程中,用户都应被重定向到落地页以发起 WebAuthn。
密码钥匙验证流程
当用户设置了包括密码钥匙在内的多种 MFA 方式时,密码钥匙会因其更高的安全性和便利性,在首屏作为推荐的 MFA 验证方式展示。用户可以点击下方的“尝试其他方式验证”切换到其他验证方式。阅读 配置 MFA 了解更多信息。
如果用户通过 密码钥匙登录 完成登录,而不是输入其他第一因子,Logto 后续不会再要求额外的 MFA 步骤。这是因为密码钥匙本身就被视为 WebAuthn 的 MFA 因子。