数字凭据是可加密验证的文档,可用于对用户进行身份验证、授权或以其他方式提供有关用户的信息。这些凭证通常包括移动设备上的驾照、数字护照、登机牌等。它们存储在称为数字钱包的虚拟容器中,并且是 W3C 标准的一部分,该标准规定了如何访问和检索这些凭证。此标准通过 W3C Credential Management API 在 Web 用例中实现,并通过 Credential Manager 的 DigitalCredential API 在 Android 上实现。
了解数字凭据
在现实世界中,某人可能会将自己的身份证件放在钱包中,并在被要求时向请求方出示:
在这种情况下,用户通常只有一个钱包,并从钱包中检索所请求的凭据以呈现给请求者。钱包大多可以互换,并且通常可以存储相同的内容。
数字凭证有以下几个主要区别:
- 用户预计会拥有多个钱包(也称为持有者),其中可以包含各种不同的凭据。钱包会确定哪些凭据可以存储在其中。
- 请求者现在是应用,而不是真人,因此称为验证方。
- 凭据呈现在软件中进行,这意味着 API 界面会检索并呈现凭据 - 在 Android 中,这是凭据管理器。
因此,凭据管理器承担了之前由用户处理的多个角色:
- 在 Android 上,钱包必须向 Credential Manager 注册其凭据元数据,才能在 Credential Manager 界面中列出。
- Credential Manager 会根据请求在各个钱包中匹配凭据,并向用户显示一个列表供其选择。
- 当用户选择列表中的凭据时,凭据管理器会调用钱包,钱包将处理交易的剩余部分(显示界面等),并将凭据返回给应用。
此流程如下所示:
用户体验
如 Android 流程所示,用户只需与 Credential Manager 界面互动一次,即可选择合适的凭据。以下是选择器的示例:
标准
数字凭据请求是使用 OpenID4VP 标准创建的。您可以在数字凭据演示网站上查看示例请求。
数字凭据响应通常以标准化凭据格式返回。这些标准由不同的标准机构维护,包括 W3C 可验证凭据、sd-jwt 和 mdoc。
自定义协议也是可行的,不过我们建议您在应用中使用标准协议。
试试看
您可以使用 Android 钱包和基于 Web 的验证器在各个平台上测试数字凭据流程:
- 在 Android 手机上安装 CMWallet 公共示例。
为此,您可以从代码库中拉取并直接从 Android Studio 中安装,也可以前往 https://github.com/digitalcredentialsdev/CMWallet/actions,然后选择最新 build 以访问最新的
app-debug.apk文件。 - 打开 CMWallet 以向 Credential Manager 注册元数据。确保蓝牙已启用,以便设备相互连接。
- 前往 https://digital-credentials.dev/,然后选择
Request Credentials (OpenID4VP)。 - 接受警告提示,使用手机扫描二维码,然后选择“使用通行密钥”,并通过点按确认来显示可用的凭据。
- 从 CMWallet 中选择凭据,返回到浏览器。浏览器应显示返回的凭据。
另请参阅
- 如需详细了解如何在应用中使用 Credential Manager 请求数字凭据,请参阅 Credential Manager - 验证方 API 页面。
- 如需详细了解如何使用 Credential Manager 构建数字钱包,请参阅 Credential Manager - Holder API 页面。