安全流畅的通行密钥:部署核对清单

Published: June 5, 2025

通行密钥旨在彻底改变登录体验,提供一种比密码更简单、更快速、更安全的替代方案。此核对清单将引导您了解实现通行密钥的关键方面,以实现最佳用户体验 (UX) 结果。

如何使用此核对清单

此核对清单适用于在身份验证流程中实现通行密钥的开发者和产品团队。它的用途包括:

  • 验证您的实现是否遵循以下文章中介绍的现代通行密钥 UX 最佳实践。
  • 识别可提高易用性、安全性及兼容性的必需元素和可选元素。
  • 在开发期间和部署之前检查您的实现。
  • 遵循支持用户采用和系统互操作性的最佳实践。

这些有助于为最终用户提供顺畅、安全的体验。

通行密钥注册

如需在您的网站上从密码顺利过渡到通行密钥,拥有完善的通行密钥注册功能至关重要。请按照 创建通行密钥以实现无密码登录 中所述的 说明,在您的网站上构建通行密钥注册功能。除了基本的通行密钥注册功能之外,您还应检查以下事项:

✅ 将 "platform" 指定为要传递给 navigator.credentials.create() 的验证器附件值,以进行通行密钥创建。

  • 为被动创建通行密钥的用户提供经过优化的顺畅通行密钥创建流程。

✅ 在允许用户创建通行密钥之前,先使用可用的最强身份验证方法验证用户。

  • 这一点非常重要,可防止攻击者在被盗账号上创建通行密钥。

✅ 使用 excludeCredentials防止为同一通行密钥提供方创建重复的通行密钥

  • 许多通行密钥提供方仅允许每个账号和 RP ID 对应一个通行密钥。请避免创建重复的通行密钥。

使用 AAGUID 识别通行密钥提供方 并为用户命名凭据。

  • 将通行密钥与其通行密钥提供方相关联是一种直观的方式,可在允许的情况下呈现凭据。

✅ 如果注册通行密钥的尝试失败,请使用 PublicKeyCredential.signalUnknownCredential()发出信号。

  • 多余的通行密钥可能会造成混淆。如果服务器未能注册通行密钥,请告知通行密钥提供方。

在为 用户的账号创建并注册通行密钥后,向 用户发送通知。

  • 确保用户知道通行密钥已创建,尤其是在通行密钥由他人创建时。

通行密钥身份验证

在不造成过多摩擦的情况下同时容纳密码用户和通行密钥用户可能是一项挑战。请按照 通过表单自动填充功能实现通行密钥登录 中所述的说明,在您的网站上构建通行密钥表单自动填充功能。除了基本的通行密钥身份验证功能之外,您还应检查以下事项:

✅ 允许用户通过表单 自动填充功能使用通行密钥登录。

  • 如果您的网站正在从密码过渡到通行密钥,则同时容纳这两种用户的最佳方法是使用浏览器的表单自动填充功能。

✅ 如果在后端找不到通行密钥的匹配凭据,请使用 PublicKeyCredential.signalUnknownCredential()发出信号。

  • 多余的通行密钥可能会造成混淆。告知通行密钥提供方哪些通行密钥不可用,以便提供方可以将其删除。

✅ 如果用户在登录后尚未创建通行密钥,请提示用户手动创建通行密钥。

  • 如果用户尚未创建通行密钥,请鼓励他们创建一个。

在用户使用密码(和第二重身份验证)登录后,自动创建通行密钥(条件 创建)

  • 加快用户采用通行密钥的速度。

✅ 如果用户已使用 跨设备 通行密钥登录,请提示用户创建本地通行密钥

  • 创建本地通行密钥有助于用户在下次登录时无需扫描二维码。

登录后,向提供方发出可用 通行密钥 列表和 更新后的用户详细信息(用户名、显示 名称) 的信号

  • 使服务器和通行密钥提供方之间的通行密钥列表和用户详细信息保持同步,有助于改善用户体验。

通行密钥管理

让用户充分了解通行密钥有助于他们更好地了解通行密钥的格局并控制通行密钥。请按照 帮助用户有效管理通行密钥 中所述的说明,在您的网站上构建通行密钥管理功能。您应检查以下事项:

✅ 允许用户在通行密钥管理 页面中管理通行密钥。

  • 创建一个中心位置,供用户管理其通行密钥。

✅ 支持注册多个 通行密钥

  • 能够注册多个通行密钥有助于用户防止被锁定,而无需回退到较弱的身份验证方法。

✅ 允许用户添加新的灵活类型的 通行密钥 在管理页面上。

✅ 显示通行密钥 名称

  • 根据 AAGUID 命名通行密钥,并提供用户通行密钥的实际视觉效果。

✅ 指示通行密钥是否可同步或不可同步。

  • 当通行密钥未同步时,让用户知道。

✅ 允许用户从服务器中移除公钥。

✅ 当关联的公钥从服务器中移除时,发出通行密钥列表的信号。

  • 使服务器和通行密钥提供方之间的通行密钥列表保持同步,有助于改善用户体验。
显示良好实践的通行密钥管理页面示例。
显示良好实践的通行密钥管理页面示例。

其他注意事项

当用户更新用户详细信息(用户名、显示 名称) 时,发出更新后的用户详细信息的信号。

当用户“忘记 密码”时,创建通行密钥而不是新密码。

资源