针对信赖方的通行密钥开发者指南

了解如何将通行密钥集成到您的服务中。

通行密钥系统剖析

通行密钥系统由以下几个组件组成:

  • 依赖方:在通行密钥上下文中,依赖方(简称 RP)负责处理通行密钥的颁发和身份验证。RP 必须运行一个客户端(用于创建通行密钥或使用通行密钥进行身份验证的网站或应用)和一个服务器,用于注册、存储和验证客户端上由通行密钥生成的凭据。通行密钥移动应用必须使用操作系统提供的关联机制(例如数字资产链接)绑定到 RP 服务器网域。
  • Authenticator:一种计算设备,例如手机、平板电脑、笔记本电脑或台式机,能够使用操作系统提供的屏锁功能创建和验证通行密钥。
  • 密码管理工具:安装在最终用户设备上的软件,用于提供、存储和同步通行密钥,例如 Google 密码管理工具

注册流程

在网站上使用 WebAuthn API 或在 Android 应用上使用 Credential Manager 库来创建和注册新的通行密钥。

如需创建新的通行密钥,您需要提供以下几个关键组件:

  • RP ID:以网域的形式提供依赖方的 ID。
  • 用户信息:用户的 ID、用户名和显示名。
  • 要排除的凭据:有关之前存储的通行密钥的信息,用于防止重复注册。
  • 通行密钥类型:是使用设备本身(“平台身份验证器”)作为身份验证器,还是使用可拆卸的安全密钥(“跨平台 / 漫游身份验证器”)。此外,调用方还可以指定是否使凭据可被发现,以便用户可以选择账号进行登录。

当 RP 请求创建通行密钥且用户通过屏锁验证该请求后,系统会创建新的通行密钥并返回公钥凭据。将该信息发送到服务器,并存储凭据 ID 和公钥以供日后进行身份验证。

注册流程

详细了解如何创建和注册通行密钥:

身份验证流程

在网站上使用 WebAuthn API 或在 Android 应用上使用 Credential Manager 库,通过已注册的通行密钥进行身份验证。

如需使用通行密钥进行身份验证,您需要提供以下几个关键组件:

  • RP ID:以网域的形式提供依赖方的 ID。
  • 质询:服务器生成的质询,用于防止重放攻击。

当 RP 请求使用通行密钥进行身份验证,并且用户通过解锁屏幕进行验证后,系统会返回公钥凭据。将该签名发送到服务器,并使用存储的公钥验证签名。

身份验证流程

详细了解如何使用通行密钥进行身份验证:

服务器端集成

创建通行密钥时,服务器需要提供关键参数,例如质询、用户信息、要排除的凭据 ID 等。然后,它会验证从客户端发送的已创建的公钥凭据,并将公钥存储在数据库中。对于使用通行密钥进行身份验证,服务器需要仔细验证凭据并验证签名,才能让用户登录。

如需了解详情,请参阅我们的服务器端指南:

现有(旧版)身份验证机制

当您在现有服务中支持通行密钥时,从旧的身份验证机制(例如密码)到通行密钥的过渡不会在一夜之间完成。我们知道您可能会倾向于尽快淘汰较弱的身份验证方法,但这可能会让用户感到困惑,或让部分用户无法使用。我们建议您暂时保留现有的身份验证方法。

原因有以下几种:

  • 有用户处于与通行密钥不兼容的环境中:通行密钥支持正在多个操作系统和浏览器中广泛扩展,但使用旧版本的用户尚无法使用通行密钥。
  • 通行密钥生态系统尚未成熟:通行密钥生态系统正在不断发展。不同环境之间的用户体验细节和技术兼容性可以得到改进。
  • 用户可能尚未准备好完全使用通行密钥:有些人对新事物持犹豫态度。随着通行密钥生态系统的成熟,他们会逐渐了解通行密钥的运作方式以及通行密钥对他们的实用性。

重新审视现有的身份验证机制

虽然通行密钥可让身份验证更简单、更安全,但保留旧机制就像留下一个漏洞。我们建议您重新审视并改进现有的身份验证机制。

密码

为每个网站创建安全系数高的密码并进行管理对用户来说是一项艰巨的任务。强烈建议您使用内置于系统中的密码管理工具或独立密码管理工具。只需对登录表单进行细微调整,网站和应用就能在安全性和登录体验方面取得巨大进步。请查看如何进行这些更改:

双重验证

虽然使用密码管理工具可以帮助用户管理密码,但并非所有用户都使用此类工具。要求用户提供称为动态密码 (OTP) 的额外凭据是保护此类用户的常见做法。一次性密码通常通过电子邮件、短信或身份验证器应用(例如 Google 身份验证器)提供。 由于一次性密码通常是动态生成的短文本,仅在有限的时间范围内有效,因此可降低账号被盗用的概率。这些方法的安全性不如通行密钥,但比仅让用户使用密码要好得多。

如果您选择通过短信发送动态密码,请查看以下最佳实践,以简化用户输入动态密码的流程,从而提升用户体验。

身份联合

身份联合是另一种可让用户安全轻松登录的选项。 借助身份联合,网站和应用可让用户使用第三方身份提供商提供的身份信息登录。例如,使用 Google 账号登录可为开发者带来出色的转化效果,并且用户发现它比基于密码的身份验证更简单、更受欢迎。身份联合是通行密钥的补充。对于注册而言,它非常有用,因为网站或应用只需一步即可获取用户的基本个人资料信息;而通行密钥非常适合简化重新身份验证流程。

请注意,在 Chrome 于 2024 年逐步停用第三方 Cookie 后,部分身份联合系统可能会受到影响,具体取决于其构建方式。为了减轻这种影响,我们正在开发一种名为 Federated Credential Management API(简称 FedCM)的新浏览器 API。如果您运营身份提供方,请查看详细信息,了解您是否需要采用 FedCM。

魔法链接登录是一种身份验证方法,服务通过电子邮件发送登录链接,用户点击该链接即可进行身份验证。虽然这有助于用户在无需记住密码的情况下登录,但用户在浏览器/应用和电子邮件客户端之间切换时会遇到一些不便。此外,由于身份验证机制依赖于电子邮件,因此电子邮件提供商的安全性较弱可能会导致用户账号面临风险。

学习资源

Web

如需在您的网站上集成通行密钥,请使用 Web Authentication API (WebAuthn)。如需了解详情,请查看以下资源:

Android

如需将通行密钥集成到 Android 应用中,请使用 Credential Manager 库。如需了解详情,请参阅以下资源:

用户体验

了解通行密钥用户体验建议: