数字凭据概览

数字凭据是可通过加密方式验证的文件,可用于对用户进行身份验证、授权或以其他方式提供用户信息。这些内容通常包括移动驾照、数字护照、登机牌等。它们位于名为数字钱包的虚拟容器中,并属于 W3C 标准的一部分,该标准规定了如何访问和检索这些内容。此标准适用于 Web 用例,可通过 W3C Credential Management API 实现;在 Android 上,则可通过 Credential Manager 的 DigitalCredential API 实现。

了解数字凭据

在现实世界中,一个人可能会将自己的身份证件放在钱包中,并在被要求时向请求方出示:

显示正常钱包互动流程的图片
图 1. 执行实体凭据请求的过程。请求者向用户索要特定凭据。 然后,用户从实体钱包中选择并检索该卡。最后,用户向请求者提供凭据。

在这种情况下,用户通常只有一个钱包,并从钱包中检索所请求的凭据以向请求者显示。钱包大多可以互换,通常可以存储相同的内容。

数字凭据有以下几个主要区别:

  1. 用户应该有多个钱包,其中可以包含各种不同的凭据。钱包决定了可以存储哪些凭据。
  2. 请求者现在是应用,而不是真人,称为验证者。
  3. 凭据呈现是在软件中进行的,这意味着 API Surface 会检索并呈现凭据;在 Android 中,这称为 Credential Manager。

因此,Credential Manager 承担了以前由用户处理的多项角色:

  1. 在 Android 设备上,钱包必须向 Credential Manager 注册其凭据元数据,才能在 Credential Manager 界面中列出。
  2. Credential Manager 会根据请求在各个钱包中匹配凭据,并显示一个列表供用户选择。
  3. 当用户在列表中选择凭据后,Credential Manager 会调用钱包,钱包会处理剩余的交易(显示界面等)并将凭据返回给应用。

此流程如下所示:

显示数字凭据互动流程的图片
图 2. 数字凭据验证的互动模型。Credential Manager 会使用用户钱包中的预注册凭据元数据来匹配验证者的请求,并提示用户选择凭据。然后,Credential Manager 会将 activity 流程定向到相应的钱包,后者会处理交易的其余部分并将凭据返回给验证程序。 注意:验证程序需要在凭据响应返回后对其进行处理和验证。

用户体验

如 Android 流程中所示,用户只需与 Credential Manager 界面互动一次,即可选择适当的凭据。选择器的示例如下:

此图片显示了 Credential Manager 中的数字凭据界面
图 3. 数字凭据界面。

标准

数字凭据请求是使用 OpenID4VP 标准创建的。您可以在数字凭据演示版网站上查看示例请求。

数字凭据响应通常以标准化凭据格式返回。这些标准由不同的标准机构维护,包括 W3C 可验证凭据sd-jwtmdoc

自定义协议也是可行的,但我们建议您在应用中使用某种标准协议。

试试看

您可以使用 Android 钱包和基于 Web 的验证器跨平台测试数字凭据流程:

  1. 在 Android 手机上安装 CMWallet 公开示例。 为此,您可以从代码库中拉取并直接从 Android Studio 中进行安装,也可以前往 https://github.com/digitalcredentialsdev/CMWallet/actions 并选择最新的 build 以访问最新的 app-debug.apk 文件。
  2. 打开 CMWallet 以向 Credential Manager 注册元数据。确保蓝牙已启用,以便您的设备能够相互连接。
  3. 前往 https://digital-credentials.dev/,然后选择 Request Credentials (OpenID4VP)
  4. 接受警告提示,然后使用手机扫描二维码,接着选择“使用通行密钥”,然后点按确认以显示可用凭据。
  5. 从 CMWallet 中选择凭据,然后返回浏览器。浏览器应显示返回的凭据。

另请参阅

  • 如需详细了解如何使用 Credential Manager 在应用中请求数字凭据,请参阅 Credential Verifier API 页面。
  • 如需详细了解如何使用 Credential Manager 构建数字钱包,请参阅 Credential Holder API 页面。