数字凭据概览

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

了解数字凭据

在物理世界中,个人可能会将身份信息放在钱包中,并在被要求时将其出示给请求方

Image showing the flow of a normal wallet interaction
图 1. 完成物理世界凭据请求的过程。请求方要求用户提供特定凭据。然后,用户从其实体钱包中选择并检索该凭据。最后,用户将凭据提供给请求方。

在这种情况下,用户通常只有一个钱包,并从钱包中检索所需的凭据以提供给请求方。钱包大多可以互换,通常可以存储相同的东西。

数字凭据有几个主要区别

  1. 用户预计会有多个钱包,其中可以包含各种不同的凭据。钱包决定可以存储哪些凭据。
  2. 请求方现在是应用程序而不是真人,并被称为验证方。
  3. 凭据呈现发生在软件中,这意味着由 API 界面检索并呈现凭据 - 在 Android 中,这正是 Credential Manager。

因此,Credential Manager 承担了用户以前处理的几个角色

  1. 在 Android 上,钱包必须向 Credential Manager 注册其凭据元数据,以便在 Credential Manager UI 中列出。
  2. Credential Manager 根据请求匹配各个钱包中的凭据,并呈现一个列表供用户选择。
  3. 当用户在列表中选择凭据时,Credential Manager 会调用该钱包,钱包会处理剩余的交易(显示 UI 等)并将凭据返回给应用程序。

此流程如下所示

Image showing the flow of a digital credential interaction
图 2. 数字凭据验证的交互模型。Credential Manager 使用跨用户钱包预先注册的凭据元数据来匹配验证方的请求,并提示用户选择凭据。然后,Credential Manager 将 Activity 流程导向相应的钱包,该钱包会处理剩余的交易并将凭据返回给验证方。注意:验证方需要在凭据响应返回后对其进行处理和验证。

用户体验

如 Android 流程所示,用户只需与 Credential Manager UI 交互一次即可选择相应的凭据。以下是选择器外观示例

Image showing the digital credentials UI in Credential Manager
图 3. 数字凭据 UI。

标准

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

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

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

试用

您可以使用 Android 钱包和基于 Web 的验证方在不同平台上测试数字凭据流程

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

另请参阅