---
url: 'https://www.corbado.com/zh/blog/shuzi-pingzheng-api'
title: '数字凭证 API (2026)：Chrome 和 Safari 现已正式支持'
description: '了解数字凭证 API，其在 Chrome 和 Safari 中的当前功能支持情况，并通过我们的终极指南随时了解最新动态。'
lang: 'zh'
author: 'Vincent Delitz'
date: '2025-07-25T07:01:01.055Z'
lastModified: '2026-03-27T07:05:15.807Z'
keywords: 'org-iso-mdoc'
category: 'Engineering'
---

# 数字凭证 API (2026)：Chrome 和 Safari 现已正式支持

### 数字凭证 API：浏览器支持快照 (2026 年 3 月)

_最后更新：2026 年 3 月 26 日_

以下是主要浏览器对数字凭证 API (Digital Credentials API) 支持情况的快速概览：

| 浏览器          | 支持状态 (2026 年 3 月)                                                       | 稳定版发布 / 展望                                                                                                                                                                                                                                |
| :-------------- | :---------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Google Chrome   | ✅ **已发布 (稳定版)** — 协议无关 (支持 OpenID4VP **和** ISO 18013-7 Annex C) | **Chrome 141** ([**2025 年 9 月 30 日**起稳定支持](https://developer.chrome.com/blog/digital-credentials-api-shipped))；桌面端通过 CTAP/BLE 支持跨设备使用。[参见 §6.1](#61-google-chrome-shipped)                                               |
| Apple Safari    | ✅ **已发布 (稳定版)** — **仅支持 mdoc** (通过 `org-iso-mdoc`)                | **Safari 26** ([**2025 年 9 月 15 日**发布](https://webkit.org/blog/17431/online-identity-verification-with-the-digital-credentials-api/))；支持钱包及注册的文档提供程序 App。[参见 §6.2](#62-apple-safari-mdoc-focus)                           |
| Mozilla Firefox | 🔧 **开发中** — 基础代码已合入 Firefox 149                                    | 正式的[反对标准立场](https://github.com/mozilla/standards-positions/issues/1003)保持不变，但[正在积极实施](https://bugzilla.mozilla.org/show_bug.cgi?id=2004828)。[参见 §6.3](#63-mozilla-firefox-from-negative-stance-to-active-implementation) |
| Microsoft Edge  | ✅ **已发布 (稳定版)** — 基于 Chromium，跟随 Chrome 141                       | **Edge 141** (2025 年 10 月初发布稳定版)；继承 Chromium 141 的功能。                                                                                                                                                                             |

## 时间轴：数字凭证的发展现状

数字凭证领域正如火如荼地发展。以下是关键进展和预测的快照：

| **图标** | **日期 / 时期**     | **事件**                          | **描述与来源**                                                                                                                                                                                                                                                                                                                                                                                     |
| :------- | :------------------ | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🚀🤖     | 2024 年 8 月 20 日  | Android 数字凭证 API Origin Trial | [Chrome 128 在 Android 上启动数字凭证 API 的 Origin Trial](https://developer.chrome.com/release-notes/128)，允许通过 Android 的 IdentityCredential CredMan 系统进行请求。                                                                                                                                                                                                                          |
| 🚀🍏     | 2025 年 2 月 27 日  | Safari Technology Preview 214     | WebKit (包含在 [Safari Technology Preview 214](https://www.webkit.org/blog/16512/release-notes-for-safari-technology-preview-214/) 中) 添加了数字凭证 API 功能标志。([Pull Request](https://github.com/WebKit/WebKit/pull/40008), [对比](https://github.com/WebKit/WebKit/compare/c968abdda41af3ad0abbf5c5c2c1fe0d5bb1c016...837aec74d9c8ea88f094c9de12a0a3c936735634))                            |
| 🚀🤖     | 2025 年 3 月 4 日   | Chrome 134 桌面端 Origin Trial    | [Chrome 134 启动桌面端数字凭证 API Origin Trial](https://developer.chrome.com/origintrials/#/view_trial/3981410680008146945)，支持与 Android 手机钱包的安全通信。(来源：Chrome 134 发布说明)                                                                                                                                                                                                       |
| 🚀🍏     | 2025 年 3 月 31 日  | Safari 18.4 发布                  | [Safari 18.4 中的 WebKit 功能](https://webkit.org/blog/16574/webkit-features-in-safari-18-4/) 使得部分数字凭证 API 可通过功能标志进行测试。持续的变更在此[跟踪](https://bugs.webkit.org/buglist.cgi?quicksearch=Digital%20Credentials)。                                                                                                                                                           |
| 💡       | 2025 年 4 月        | W3C FedID WG 接手                 | 数字凭证 API 的开发正式移交至 [W3C 联合身份工作组 (FedID WG)](https://github.com/w3c-fedid/digital-credentials)。                                                                                                                                                                                                                                                                                  |
| 🚀🤖     | 2025 年 4 月 30 日  | Chrome 跨设备 Origin Trial 宣布   | Chrome 宣布 [跨设备数字凭证 API Origin Trial](https://developer.chrome.com/blog/digital-credentials-cross-device-ot) 将在 Chrome 136 中启动，允许桌面版 Chrome 安全地展示来自 Android 设备的凭证。                                                                                                                                                                                                 |
| ⚠️🤖     | 2025 年 5 月 2 日   | Chrome API 破坏性变更             | Chrome 概述了 Chrome 136 和 138 版本中的 API 破坏性变更 (例如：请求格式变更，`navigator.credentials.create()` API 添加到标志下)。                                                                                                                                                                                                                                                                  |
| 🚀🍏     | 2025 年 6 月 10 日  | WWDC25: Apple 确认支持 API        | Apple 在 WWDC25 上正式宣布 Safari 支持数字凭证 API，并确认专注于用于展示身份文档的 `org.iso.mdoc` 协议。该功能在 iOS 26 的 Safari 26 Beta 版中可用。(来源：[Verify identity documents on the web](https://developer.apple.com/videos/play/wwdc2025/232/))                                                                                                                                          |
| 🧭       | 2025 年 9 月 15 日  | Safari 26 发布                    | [Safari/iOS 26 发布数字凭证 API](https://webkit.org/blog/17431/online-identity-verification-with-the-digital-credentials-api/)，支持 **`org-iso-mdoc`** (mdoc Annex C)。                                                                                                                                                                                                                           |
| 🚀🤖     | 2025 年 9 月 30 日  | Chrome 141 稳定版                 | [数字凭证 API 在 Chrome 141 中发布**稳定版**](https://developer.chrome.com/blog/digital-credentials-api-shipped) (Android + 桌面跨设备)。                                                                                                                                                                                                                                                          |
| 📣       | 2025 年 10 月 3 日  | 发布博客                          | [Chrome](https://developer.chrome.com/blog/digital-credentials-api-shipped) 和 [WebKit](https://webkit.org/blog/17431/online-identity-verification-with-the-digital-credentials-api/) 发布上线博客；Chrome 强调**协议无关**支持 (OpenID4VP **和** ISO 18013-7 Annex C)；WebKit 详述了 Safari 的 **mdoc-only** 模式和 CTAP 跨设备流程。                                                             |
| ⚙️       | 2025 年 11 月 14 日 | TPAC: 协议注册表取消              | W3C FedID WG [达成共识](https://github.com/w3c-fedid/digital-credentials/issues/396) 取消开放协议注册表，直接在规范中 **硬编码支持的协议** (OpenID4VP, OpenID4VCI, ISO 18013-7 Annex C)。已在 [PR #401](https://github.com/w3c-fedid/digital-credentials/pull/401) 中实施 (2026 年 1 月 28 日合并)。[参见 §5](#5-underlying-protocols)                                                             |
| 🦊       | _2026 年第一季度_   | Firefox 开始 DC API 实施          | 尽管[反对标准立场](https://github.com/mozilla/standards-positions/issues/1003)未变，Mozilla 在 **Firefox 149** 中实现了 [DC API 基础支持](https://bugzilla.mozilla.org/show_bug.cgi?id=2005077)。mozilla-central 中的 [实施源代码](https://searchfox.org/mozilla-central/source/dom/credentialmanagement/digital/)。[参见 §6.3](#63-mozilla-firefox-from-negative-stance-to-active-implementation) |
| 🇺🇸       | 2026 年 2 月 27 日  | 加州 DMV 添加 DC API              | 加州 DMV 的 [OpenCred 平台添加 DC API 支持](https://github.com/stateofca/opencred/blob/main/CHANGELOG.md) (v10.0.0)，成为浏览器中介凭证展示的早期政府采用者。                                                                                                                                                                                                                                      |
| 🚀🤖     | _2026 年第一季度_   | Chrome 143 发行 Origin Trial      | Chrome 启动了通过 OpenID4VCI 使用 `navigator.credentials.create()` 进行**凭证发行**的 [Origin Trial](https://developer.chrome.com/blog/digital-credentials-api-143-issuance-ot)，将 API 扩展到展示之外。[参见 §4](#4-how-does-the-digital-credentials-api-work)                                                                                                                                    |
| 🇪🇺📅     | _2026 年底 (预计)_  | EUDI 钱包可用性                   | 根据 [eIDAS 2.0](https://eur-lex.europa.eu/eli/reg/2024/1183/oj/eng)，欧盟成员国预计将提供 EUDI 钱包。欧盟的 [ARF Topic F](https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/blob/main/docs/discussion-topics/f-digital-credential-api.md) 有条件地要求所有成员国钱包支持 DC API。[参见 §5.4](#54-eu-digital-identity-wallet-support)                    |

**自 2025 年 10 月以来有什么变化？**

- **协议治理转变**：W3C FedID WG 在 TPAC (2025 年 11 月)
  [取消了开放协议注册表](https://github.com/w3c-fedid/digital-credentials/issues/396)，现在直接在规范中
  [硬编码支持的协议](https://github.com/w3c-fedid/digital-credentials/pull/401)：OpenID4VP、OpenID4VCI 和
  [ISO 18013-7](https://www.corbado.com/glossary/iso-18013-7) Annex C。该 API 不再只是一个“单纯的传输通道 (dumb
  pipe)”。
- **发行功能到来**：Chrome 143 启动了通过 `navigator.credentials.create()`
  进行[凭证发行的 Origin Trial](https://developer.chrome.com/blog/digital-credentials-api-143-issuance-ot)，将 API 的功能扩展到了仅展示之外。
- **Firefox 正在实施**：尽管[反对标准立场](https://github.com/mozilla/standards-positions/issues/1003)未变，Mozilla 还是在 Firefox
  149 中[合入了基础 DC API 代码](https://bugzilla.mozilla.org/show_bug.cgi?id=2005077)，用户体验 (UX) 工作正在进行中。
- **欧盟有条件强制要求**：EUDI
  [架构参考框架 (Topic F)](https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/blob/main/docs/discussion-topics/f-digital-credential-api.md)
  现在有条件地要求所有成员国钱包支持 [DC API](https://www.corbado.com/blog/digital-credentials-api)。
- **现实世界采用**：[加州 DMV](https://github.com/stateofca/opencred/blob/main/CHANGELOG.md)
  在其 OpenCred 平台 (2026 年 2 月) 中添加了 [DC API](https://www.corbado.com/blog/digital-credentials-api)
  支持。

## Key Facts

- **Chrome 141** 和 **Safari 26**
  已于 2025 年 9 月发布了稳定的数字凭证 API 支持；截至 2026 年第一季度，Firefox
  149 已包含基础实施代码。
- **Safari 26** 仅支持 `org-iso-mdoc`；Chrome 141 支持 OpenID4VP 和 ISO 18013-7 Annex
  C，这要求依赖方 (Relying Parties) 构建双协议后端。
- **W3C FedID WG** 在 TPAC
  (2025 年 11 月) 取消了开放协议注册表，直接在规范中硬编码了 OpenID4VP、OpenID4VCI 和 ISO
  18013-7 Annex C。
- **EUDI ARF Topic F** 有条件地要求所有成员国钱包支持 DC
  API，前提是该规范达到 W3C 推荐标准状态。
- 尽管正式持有 **反对标准立场**，Mozilla 还是在 2026 年第一季度的 Firefox
  149 中合入了基础 DC API 代码，预示着未来三大浏览器都将支持该 API。

## 1. 简介：数字凭证 API

数字凭证 (Digital
Credentials) 目前是身份认证领域的热门话题。随着我们的生活与数字领域的联系日益紧密，对安全、以用户为中心且保护隐私的在线身份和资格认证方式的需求从未如此迫切。传统方法已显老态，对更强大解决方案的需求显而易见。

在本文中，我们将探讨数字凭证 API 的现状，这一重要进展有望重塑我们在网络上交互身份信息的方式。我们将深入了解其底层机制、支持的协议、当前的浏览器采用情况，并为在这个快速发展的领域中摸索的依赖方 (Relying
Parties) 和 [钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
[发行方 (Issuers)](https://www.corbado.com/glossary/issuer) 提供建议。

## 2. 数字身份与验证

多年来，可靠且安全地证明身份一直是 Web 架构中的一个持续[挑战](https://www.finextra.com/blogposting/27820/the-evolution-of-identity-verification-and-whats-next)。虽然互联网促进了前所未有的连接和信息交换，但也为虚假陈述和欺诈开辟了新途径。

在一些国家，解决方案应运而生，主要由早期银行联盟推动，他们开发服务以利用现有的信任关系进行在线识别。[政府](https://www.corbado.com/passkeys-for-public-sector)
也介入其中，强制或提供国家级 [数字身份](https://www.corbado.com/blog/digital-identity-guide)
[钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
和服务。然而，这些解决方案往往是孤立的、受地理限制的，并且无法通用互操作。

在许多地区，[身份验证](https://www.corbado.com/zh/blog/passkey-providers)
的后备方案传统上涉及高摩擦的流程。例如，在邮局进行实体验证会带来严重的延误和不便。视频通话结合文件上传成为一种更数字化的替代方案，随后是最近兴起的自动文档扫描和
[活体检测](https://www.identity.com/the-identity-verification-process-comprehensive-guide/)。尽管有所进步，这些方法仍有显著缺陷。它们可能耗时、容易出现人为错误或偏见，并且经常被曝出容易受到复杂伪造的攻击。

随着深度伪造 (Deepfakes)、先进的 AI 驱动的冒充技术以及日益
[复杂的网络钓鱼攻击](https://www.identity.com/the-growing-threat-of-deepfakes-to-identity-verification-processes/)
的出现，这一挑战急剧升级。这些技术可以创建高度逼真但完全捏造的视频、音频和文档证据，使得传统系统，甚至 AI 驱动的验证工具，都极难区分真实用户和欺诈用户。创建合成身份或操纵生物特征数据以绕过检查的可能性是一个严重威胁，特别是对于金融机构和任何需要强大“了解你的客户”
(KYC)
[流程](https://www.identity.com/the-growing-threat-of-deepfakes-to-identity-verification-processes/)
的服务而言。这种不断升级的威胁形势突显了对更安全、可加密验证的在线身份和验证机制的迫切需求。

## 3. 数字凭证是如何工作的？

理解数字凭证的运作方式需要关注参与的关键角色以及启用其功能的不同技术层。

### 3.1. 三方模型

从核心来看，数字凭证的概念，特别是在新 Web API 的背景下，围绕着一个三方模型展开：

1. **发行方 (Issuer)**：拥有关于主体的某些权威信息，并能发行证明该信息的数字凭证的实体 (例如：[政府](https://www.corbado.com/passkeys-for-public-sector)、大学、雇主)。
2. **持有者 (Holder)**：信息的主体 (即用户)，从 [发行方](https://www.corbado.com/glossary/issuer)
   接收凭证并将其存储在 [数字钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
   中。持有者控制何时以及分享什么信息。
3. **验证方 (Verifier)** (或
   [依赖方 Relying Party](https://www.corbado.com/glossary/relying-party))：需要验证关于持有者的某些信息以授予服务或资源访问权限的实体 (例如：网站、在线服务)。验证方从持有者处请求必要的信息。

![三方模型](https://s3.eu-central-1.amazonaws.com/corbado-cloud-staging-website-assets/three_party_model_5eedaec078.png)

这个三方模型之所以重要，是因为它旨在让用户 (持有者) 控制自己的数据。与数据可能集中存储或在没有用户直接中介的情况下在各方之间共享的传统身份系统不同，该模型强调用户同意和**选择性披露 (selective
disclosure)**。持有者决定在特定交易中分享凭证中的哪些信息片段，而不是通过出示整个凭证来泄露所有信息。

这些系统的一个基本方面是加密密钥对的参与。[发行方](https://www.corbado.com/glossary/issuer)
对凭证进行数字签名，确保其真实性和完整性。反过来，持有者使用他们的私钥 (通常受设备硬件保护，存储在
[数字钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
中) 来证明对凭证的控制权并授权将其展示给验证方。这通常涉及验证方提出一个挑战 (一串随机数据)，持有者的
[钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
使用与凭证关联的私钥对该挑战进行签名。然后验证方可以使用相应的公钥来确认签名，从而验证展示。

这个解释是中立于具体协议的，因为通过加密挑战进行发行、持有和验证的核心原则在不同的底层技术中是通用的。

本文主要关注数字凭证的 **验证** 和 **选择性披露**
原则，使用户能够证明特定属性 (例如，“我已满 18 岁”，“我拥有有效的驾驶执照”)，而无需透露整个源文件。虽然数字凭证的底层系统可能支持合格电子签名 (QES) 和远程签名功能 (如欧盟
[数字身份](https://www.corbado.com/blog/digital-identity-guide) [钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)
等综合解决方案所见，用于具有法律约束力的签名)，但这里 (特别是对于数字凭证 API) 的重点是在线交互的身份
[断言 (assertion)](https://www.corbado.com/glossary/assertion) 和属性验证，而不是这些更广泛的签名功能。

### 3.2. 数字凭证的分层

为了理解数字凭证的功能，将其可视化为一个分层模型很有帮助。每一层解决生态系统的不同方面，从数据格式本身到如何在 Web 浏览器中呈现给用户。本文主要关注
**数字凭证 API (Digital Credentials API)**，它在展示层 (Presentation Layer) 运行。

![数字凭证分层](https://s3.eu-central-1.amazonaws.com/corbado-cloud-staging-website-assets/digital_credential_layers_26eaf37952.png)

**核心术语：**

- **数字凭证 (Digital credential)**：任何机器可读的凭证 (带条形码的 PDF、ISO
  [mDL](https://www.corbado.com/blog/mobile-drivers-license)、W3C
  VC、SD-JWT 等)。“数字”一词并不代表具备加密可验证性。
- **可验证凭证 (Verifiable Credential)**：一种数字凭证，由 W3C
  VC 数据模型定义。它增加了防篡改和加密证明，并且始终存在于三方世界中：[发行方](https://www.corbado.com/glossary/issuer)
  → 持有者 → 验证方。
- **[可验证凭证 API (VC API)](https://w3c-ccg.github.io/vc-api/)**：一种 REST/HTTP 服务接口，用于在后端系统 (发行方、[钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)、验证方) 之间发行、存储、展示和验证 VC。
- **[数字凭证 API (DC API)](https://github.com/w3c-fedid/digital-credentials)**：一种浏览器 / 操作系统 API
  (JavaScript + 原生管道)，允许网站以尊重隐私的方式请求用户的设备端钱包展示任何支持的数字凭证 (VC、ISO
  [mDoc](https://www.corbado.com/glossary/mdoc)、SD-JWT 等)。

可以将 VC 视为数据模型，VC API 视为后端规范，而 [DC API](https://www.corbado.com/blog/digital-credentials-api)
则是将凭证展示给 Web 的前端实现。第 1 层 (数据模型层) 以上的一切都是格式无关的；以下的一切都取决于凭证格式。

**端到端流程 (示例：在线年龄验证)：**

下图说明了这些层在现实场景中如何协同工作。

请注意，数据是 VC，Web 上的传输是 DC API，底层的交换协议是
[OpenID4VP](https://www.corbado.com/glossary/open-id-4-vp)，而服务器端检查使用的是 VC API。

**为什么存在这种划分：**

- **可互操作的数据模型 (加密证明、选择性披露)**：由 VC 数据模型 (及其他格式) 解决。
- **后端系统的标准 REST 端点**：由 VC API 解决。
- **保护隐私的 钱包 ↔ 网站 握手**：由 DC API 解决。
- **不同的信任级别 / 文档类型 (政府 ID 与 课程证书)**：通过在 DC
  API 下层使用正确的格式 (高保证 ID 使用 ISO [mDoc](https://www.corbado.com/glossary/mdoc)；一般声明使用 W3C
  VC) 来解决。

**关键要点：**

1. “数字凭证”是总称。
2. [可验证凭证](https://www.corbado.com/zh/glossary/open-id-4-vp) 是一种内置加密可验证性的数字凭证。
3. VC API 是用于 VC 生命周期操作的服务器到服务器管道。
4. 数字凭证 API (DC
   API) 是浏览器到钱包的桥梁，最终让这些凭证顺畅地流入 Web 应用，无论它们采用何种具体格式。
5. 这三部分是互补的，而不是竞争关系——它们位于同一堆栈的不同层，共同在开放的 Web 上实现安全、以用户为中心的身份认证。

在探讨了参与者和数字凭证的整体分层架构之后，本文现在将深入探讨展示层，特别是关注数字凭证 API 及其现状。

## 4. 数字凭证 API 是如何工作的？

作为展示层的关键组件，数字凭证 API 是目前正在开发的一项 Web 标准，旨在为网站提供一种安全且标准化的方式，从用户的数字
[钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia) 中请求和接收
[数字身份](https://www.corbado.com/blog/digital-identity-guide) 信息。这项工作主要由 W3C 的联合身份工作组 (FedID
WG) 负责，该工作组已于 2025 年 4 月从 FedID 社区组迁移而来。官方草案规范可在此处找到：[https://w3c-fedid.github.io/digital-credentials/](https://w3c-fedid.github.io/digital-credentials/)。

截至 2025 年 10 月，该 API 已在 Chrome 141 (2025 年 9 月 30 日) 和 Safari 26
(2025 年 9 月 15 日) 的 **稳定版本中发布**。Chrome 的实现支持
[OpenID4VP](https://www.corbado.com/glossary/open-id-4-vp) 和 [ISO 18013-7](https://www.corbado.com/glossary/iso-18013-7) Annex
C，而 Safari 仅支持 `org-iso-mdoc` 协议。

**重要更新 (2026 年 3 月)：**
该 API 与协议的关系发生了根本性变化。在 2025 年 11 月的 TPAC 会议上，W3C FedID WG
[达成共识](https://github.com/w3c-fedid/digital-credentials/issues/396)
**取消开放协议注册表**，转而直接在规范中
[硬编码一份有限的支持协议列表](https://github.com/w3c-fedid/digital-credentials/pull/401)：`openid4vp-v1-unsigned`、`openid4vp-v1-signed`、`openid4vp-v1-multisigned`、`org-iso-mdoc`
(用于展示) 以及 `openid4vci-v1`
(用于发行)。用户代理 (浏览器) 预计将拒绝未列出的协议。这使得工作组实际上成为了未来协议添加的守门人——这是一种深思熟虑的权衡，旨在对通过 API 流动的所有内容进行整体安全和隐私审查 (参见
[当前工作草案](https://www.w3.org/TR/digital-credentials/))。

该规范现在还涵盖了通过 `navigator.credentials.create()` 进行的 **凭证发行**。Chrome
143 为此启动了一项
[Origin Trial](https://developer.chrome.com/blog/digital-credentials-api-143-issuance-ot)，允许网站使用 OpenID4VCI 触发钱包配置流程。然而，一个
[钱包选择绑定漏洞](https://github.com/w3c-fedid/digital-credentials/issues/382)
—— 恶意钱包应用可以拦截发行预授权码 —— 仍然是一个悬而未决的问题。政府发行方已表示，在该问题解决之前，他们不会采用浏览器中介的发行方式。

Chrome 通过其
[凭证管理器系统](https://android-developers.googleblog.com/2025/04/announcing-android-support-of-digital-credentials.html)
在 [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) 上原生支持展示，并通过
[CTAP](https://www.corbado.com/zh/glossary/ctap)/BLE 支持的二维码交接在桌面端支持
[跨设备数字凭证 API](https://developer.chrome.com/blog/digital-credentials-cross-device-ot)。

该 API 扩展了现有的
[凭证管理 API](https://www.w3.org/TR/credential-management-1/)，启用了通过
`navigator.credentials.get()` 请求数字凭证的功能。根据 W3C FedID
WG 数字凭证解释文档 ([https://github.com/w3c-fedid/digital-credentials/blob/main/explainer.md](https://github.com/w3c-fedid/digital-credentials/blob/main/explainer.md))，该 API 已恢复使用此既定接口，而不是之前提议的
`navigator.identity`。网站通过调用带有特定数字凭证参数的 `navigator.credentials.get()`
来请求数字凭证。

以下是网站如何调用 API 以使用 [OpenID4VP](https://www.corbado.com/glossary/open-id-4-vp) 请求凭证的示例：

```javascript
async function requestCredential() {
    // 检查是否支持 Digital Credentials API
    if (typeof window.DigitalCredential !== "undefined") {
        try {
            // 这些参数通常从后端获取。
            // 这里为了演示协议扩展性而静态定义。
            const oid4vp = {
                protocol: "oid4vp", // 一个向钱包发送的 OpenID4VP 请求示例。// 基于 https://github.com/openid/OpenID4VP/issues/125
                data: {
                    nonce: "n-0S6_WzA2Mj",
                    presentation_definition: {
                        // Presentation Exchange 请求，为简洁起见省略
                    },
                },
            };

            // 创建一个 Abort Controller
            const controller = new AbortController();

            // 使用来自后端的展示请求调用 Digital Credentials API
            let dcResponse = await navigator.credentials.get({
                signal: controller.signal,
                mediation: "required",
                digital: {
                    requests: [oid4vp],
                },
            });

            // 发送加密响应到后端进行解密和验证
            // 为简洁起见省略
        } catch (error) {
            console.error("Error:", error);
        }
    } else {
        // 后备方案，仅作说明
        alert("该浏览器不支持 Digital Credentials API。");
    }
}
```

此示例摘自
[此处](https://github.com/w3c-fedid/digital-credentials/blob/main/explainer.md)。

数字凭证 API 本质上充当一个安全包装器或中介。它允许浏览器协调身份信息请求，利用底层操作系统的能力来发现符合
[请求](https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/discussions/361)
的可用钱包和凭证。然后，浏览器和操作系统可以呈现一个一致的用户界面，用于选择凭证并授权其发布，通过确保用户同意并防止网站静默访问敏感
[数据](https://w3c-fedid.github.io/digital-credentials/)
来增强安全性和隐私性。响应中的实际凭证数据旨在对浏览器本身是不透明 (加密) 的，解密和解释由
[依赖方](https://www.corbado.com/glossary/relying-party)
和钱包/[持有者](https://w3c-fedid.github.io/digital-credentials/) 处理。

## 5. 底层协议

数字凭证 API 最初被设计为完全协议无关的，充当一个具有开放注册表的“单纯传输通道 (dumb
pipe)”，任何协议都可以在此注册。然而，截至 2026 年 1 月，该规范
[现在明确命名](https://github.com/w3c-fedid/digital-credentials/pull/401)
了其支持的协议 —— 用户代理预计将拒绝未列出的协议。目前规范中硬编码的两大主要协议家族是：org.iso.[mdoc](https://www.corbado.com/glossary/mdoc)
(源自 [ISO 18013-5](https://www.corbado.com/glossary/iso-18013-5) 及其扩展 [ISO 18013-7](https://www.corbado.com/glossary/iso-18013-7)
"Annex C") 以及 OpenID 基金会的 OpenID for Verifiable Presentations (OpenID4VP) 和 OpenID
for [Verifiable Credential](https://www.corbado.com/glossary/verifiable-credential) Issuance (OpenID4VCI) 规范。

### 5.1. org.iso.mdoc

- **起源与标准化**：org.iso.mdoc 指的是移动文档的数据格式和交互模型，主要是移动驾驶执照 (mDL)，由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 标准化。基础标准是
  [ISO/IEC 18013-5](https://www.iso.org/standard/69084.html)，它定义了
  [mDL](https://www.corbado.com/blog/mobile-drivers-license)
  应用程序、数据结构以及使用 NFC、蓝牙或二维码等技术进行面对面 (近场) 展示的
  [协议](https://sphericalcowconsulting.com/2024/01/03/verifiable-credentials-and-mdocs-a-tale-of-two-protocols/)。[ISO/IEC 18013-7](https://www.iso.org/standard/82772.html)
  对此进行了扩展，以支持 [mDL](https://www.corbado.com/blog/mobile-drivers-license)
  的在线/远程展示。协议字符串 "org.iso.mdoc" 是在 ISO/IEC TS 18013-7 (Annex
  C) 中专门定义的，用于数字凭证 API 等接口。

- **数据模型**：mdocs 具有基于 [CBOR](https://www.corbado.com/glossary/cbor)
  (简明二进制对象表示) 的严格定义的数据结构，以实现紧凑性和效率。它为常见的驾驶执照属性指定了命名空间和数据元素，并支持强大的加密安全特性，包括发行方认证、设备绑定、持有者认证 (通过肖像)、会话加密和选择性披露。

- **典型用例**：主要是 [政府](https://www.corbado.com/passkeys-for-public-sector)
  发行的身份文档，如驾驶执照和国民身份证。它专为高保证场景设计，包括面对面 (例如：交通拦截、受限商品的年龄验证) 和在线 (例如：访问
  [政府](https://www.corbado.com/passkeys-for-public-sector) 服务、银行 [开户](https://www.corbado.com/zh/blog/shuzi-shenfen-yanzheng)
  的远程 [身份验证](https://www.corbado.com/zh/blog/passkey-providers))。

### 5.2. OpenID4VP 和 OpenID4VCI

- **起源与标准化**：OpenID4VP (用于展示) 和 [OpenID4VCI](https://www.corbado.com/glossary/openid4vci)
  (用于发行) 是由 OpenID 基金会开发的规范。它们扩展了 [OAuth 2.0](https://www.corbado.com/glossary/oauth2) 以支持
  [可验证凭证](https://www.corbado.com/zh/glossary/open-id-4-vp)
  的交换。这些是旨在实现各种凭证类型 (不仅仅是政府凭证) 广泛互操作性的开放标准。截至 2025 年初，OpenID4VP 处于高级草案阶段 (例如 4 月发布的 draft 28)。[OpenID4VCI](https://www.corbado.com/glossary/openid4vci)
  也日趋成熟。
- **数据模型**：OpenID4VP/VCI 设计为与凭证格式无关。它们可以携带 JSON/[JSON-LD](https://www.corbado.com/glossary/json-ld)
  或 JWT 格式的 W3C [可验证凭证](https://www.corbado.com/zh/glossary/open-id-4-vp)
  (VC)、mdocs、SD-JWT 以及其他格式。交互模型涉及验证方 (RP) 的授权请求和持有者钱包的响应 (包含 vp_token，即可验证展示令牌)。选择性披露通常使用 Presentation
  Exchange (DIF PE) 或更现代的 [Digital Credentials](https://www.corbado.com/blog/digital-credentials-api) Query
  Language (DCQL) 等查询语言来管理。
- **典型用例**：应用范围广泛，包括
  [身份验证](https://www.corbado.com/zh/blog/passkey-providers)、提供资格证明 (例如：教育文凭、专业认证)、会员资格
  [证明](https://www.corbado.com/glossary/attestation) 等。它们非常适合 [依赖方](https://www.corbado.com/glossary/relying-party)
  需要验证来自各种 [发行方](https://www.corbado.com/glossary/issuer) 的声明的在线交互。

### 5.3. org.iso.mdoc 与 OpenID4VP/VCI 的比较

| 特性           | org.iso.mdoc (ISO 18013-5/7)                                                         | OpenID4VP / OpenID4VCI                                                                          |
| :------------- | :----------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |
| **标准化机构** | ISO/IEC                                                                              | OpenID Foundation                                                                               |
| **主要关注点** | 移动驾驶执照 (mDLs) 和官方 ID                                                        | 通用可验证凭证交换 (任何类型)                                                                   |
| **数据格式**   | 基于 CBOR，严格定义的数据元素                                                        | 格式无关；通常为 [W3C VCs](https://www.w3.org/TR/vc-data-model-2.0/) (JSON/JWT)、mdocs、SD-JWTs |
| **传输**       | 定义了近场 (NFC, BLE, QR) 和在线 (18013-7)                                           | 主要是基于 OAuth 2.0 的在线传输；可通过二维码、深度链接发起                                     |
| **选择性披露** | 通过加盐哈希声明内置                                                                 | 通过 Presentation Exchange 或 DCQL 等查询语言                                                   |
| **成熟度**     | ISO 18013-5: 已发布标准。ISO 18013-7: 已发布 TS。ISO 23220 系列 (通用 mDocs): 开发中 | OpenID4VP: 高级草案 (如 2025 年 4 月的 draft 28)。OpenID4VCI: 高级草案                          |
| **典型发行方** | 政府机构 (DMV 等)                                                                    | 政府、教育机构、雇主、任何实体                                                                  |
| **标准成本**   | 付费                                                                                 | 免费 / 开放                                                                                     |

重要的是要认识到，这些并不总是互斥的。例如，OpenID4VP 可用于请求和传输 \[org.iso.mdoc]。选择通常取决于具体的用例、凭证类型和生态系统参与者。

### 5.4. 欧盟数字身份钱包支持

欧盟数字身份 (EUDI) 钱包是一项重大举措，旨在为所有欧盟公民和居民提供一个安全的
[数字钱包](https://www.corbado.com/zh/blog/shuzi-qianbao-jianzheng-kuangjia)，用于存储身份文档和
[证明](https://www.corbado.com/glossary/attestation)。EUDI 钱包架构和参考框架明确计划支持 mdoc
(特别是用于移动驾驶执照) 和 W3C [可验证凭证](https://www.corbado.com/zh/glossary/open-id-4-vp)，利用 OpenID4VP 和
[OpenID4VCI](https://www.corbado.com/glossary/openid4vci)
进行展示和发行流程。参考实现包括支持传输 mDocs 的 OpenID4VP 和以 mDoc 和 SD-JWT-VC
[格式](https://github.com/eu-digital-identity-wallet/.github/blob/main/profile/reference-implementation.md)
发行 PID 和 mDLs 的 OpenID4VCI。这样一个
[大规模](https://www.corbado.com/blog/introducing-passkeys-large-scale-overview)
项目的双重支持突显了这两个协议家族的重要性。

**2026 年 3 月更新：** 欧盟对数字凭证 API 的承诺变得更加具体。EUDI
[架构参考框架 (ARF) Topic F](https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/blob/main/docs/discussion-topics/f-digital-credential-api.md)
现在 **有条件地要求** EUDI 钱包单元和依赖方支持 DC
API 进行远程展示和证明发行流程。条件包括 DC
API 达到 W3C 推荐标准状态，并满足有关功能、浏览器/操作系统中立性、隐私和拒绝服务保护的期望。[欧洲钱包联盟 (EWC)](https://eudiwalletconsortium.org/)
已将 DC API 测试用例纳入其一致性测试计划，[NOBID 联盟](https://www.nobidconsortium.com/)
完成了使用 OpenID4VP 的支付试点 —— DC API 现在承载的正是同一协议。

然而，这一方向并非没有批评，一些观察家指出，深受“美国科技巨头”影响的数字凭证 API 可能会被深度整合到最终的 EUDI 钱包规范中。正如在社区论坛 (如
[这个 GitHub 讨论](https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/discussions/361)) 中所讨论的，人们担心非欧盟实体对欧盟关键基础设施的潜在影响。另外，在规范中
[硬编码 ISO 18013-7 引用](https://github.com/w3c-fedid/digital-credentials/pull/401)
的决定招致了
[Ping Identity 的反对](https://github.com/w3c-fedid/digital-credentials/pull/401#discussion_r2721337228)，他们认为规范性地引用付费规范与开放网络原则相冲突 —— 当规范过渡到候选推荐标准时，这种担忧可能会演变成正式反对意见。

## 6. 哪些浏览器支持数字凭证 API？

数字凭证 API 的浏览器格局现已成型，**Chrome 141** 和 **Safari 26**
已于 2025 年 9 月发布了稳定支持。各浏览器在方法和支持级别上存在显著差异。

### 6.1. Google Chrome：141 版本发布；协议无关

Chrome 在 **Chrome 141** (2025 年 9 月 30 日) 中 **发布** 了数字凭证 API。Chrome 的实现是
**协议无关** 的：兼容 **OpenID4VP** 和 **ISO 18013-7 Annex C** (mdoc 在线)。桌面端通过
**CTAP/BLE 支持** 的通道 (二维码交接) 支持来自移动钱包的 **跨设备**
展示，响应对浏览器是不透明的。API 形态变为
`navigator.credentials.get()`；**参数重命名**：`providers` → `requests`，`request` →
`data`。

**特性检测：**

```javascript
if (typeof DigitalCredential !== "undefined") {
    // Digital Credentials API supported
}
```

[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android)
的凭证管理器原生支持 OpenID4VP 用于展示和 OpenID4VCI 用于
[发行](https://www.androidcentral.com/apps-software/android-os/google-enhances-digital-credentials-access-with-androids-open-standards-support)，允许
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) 应用充当凭证持有者和验证者，使用这些
[标准](https://android-developers.googleblog.com/2025/04/announcing-android-support-of-digital-credentials.html)。Google 指出钱包支持正在增长；**Google 钱包**
是早期采用者，**Samsung Wallet** 和 **1Password** 也已宣布支持。

### 6.2. Apple Safari：26 版本发布；仅支持 mdoc (`org-iso-mdoc`)

在本文之前的版本中，我们预测 Apple 的策略将与 Google 不同，专注于 `org.iso.mdoc`
协议。作为历史背景，我们的推理如下：

> WebKit 错误跟踪器和标准贡献的证据表明，Safari 将选择 **专注于
> `org.iso.mdoc`**，而不是优先考虑 OpenID4VP 作为所有凭证类型的传输层。这可能是由于对
> [OpenID4VP](https://www.corbado.com/glossary/open-id-4-vp)
> 在浏览器上下文中的复杂性的技术保留，以及 Apple 在塑造 ISO
> mdoc 标准以符合其平台安全模型方面的深度投入。

正如我们正确预期的那样，[WWDC25](https://www.corbado.com/blog/wwdc25-passkeys-os26) 证实了这一策略。Safari **26**
(iOS/iPadOS/macOS) 于 2025 年 9 月 15 日 **发布**，支持数字凭证 API，确认其实陈 **仅支持
`org-iso-mdoc` 协议** (带连字符) 进行展示。

这在 [WWDC25](https://www.corbado.com/blog/wwdc25-passkeys-os26) 会议
[Verify identity documents on the web](https://developer.apple.com/videos/play/wwdc2025/232/)
中有详细说明。该 API 允许网站请求存储在 Apple 钱包或第三方文档提供程序应用中的身份文档 (如驾驶执照) 的可验证信息。

Apple 实现的关键要点：

- **仅支持 MDOC**：该 API 专门使用基于 ISO/IEC 18013-7 Annex C 标准的协议字符串
  `"org-iso-mdoc"`。Safari 的数字凭证 API 实现中 **不支持 OpenID4VP**。
- **仅展示**：该 API 用于现有凭证的展示 (验证)。发行到 Apple 钱包或其他应用仍然是一个独立的、非浏览器的流程。
- **以用户为中心且安全**：流程由用户手势发起，并利用“部分请求”机制，即操作系统在将请求传递给钱包应用程序之前，首先在沙箱中解析和验证请求，从而增强安全性。
- **可扩展至 App**：除了 Apple 钱包，第三方 App 还可以通过实现新的
  `IdentityDocumentServices` 框架和 App 扩展来充当文档提供者。
- **跨设备支持**：来自非 Apple 平台的 **跨设备** 展示在
  [二维码](https://www.corbado.com/zh/blog/erweima-denglu-renzheng) 交接后使用 [CTAP](https://www.corbado.com/zh/glossary/ctap)
  进行近场通信；JS 响应对浏览器保持加密/不透明。

Apple 提供了一个清晰的代码示例，说明依赖方将如何使用该 API：

```javascript
async function verifyIdentity() {
    try {
        // 服务器生成并对请求数据进行加密签名。
        const response = await fetch("drivers/license/data");
        const data = await response.json();

        // 请求指定 'org-iso-mdoc' 协议。
        const request = {
            protocol: "org-iso-mdoc",
            // data 包含加密签名的 mdoc 请求。
            data,
        };

        // API 必须在用户手势内调用。
        const credential = await navigator.credentials.get({
            mediation: "required",
            digital: {
                requests: [request],
            },
        });

        // 将来自钱包的加密响应发送到服务器进行解密和验证。
        const verificationResponse = await fetch("/decrypt", {
            method: "POST",
            body: JSON.stringify(credential.data),
            headers: {
                "Content-Type": "application/json",
            },
        });

        // 显示验证后的详细信息...
        const json = await verificationResponse.json();
        presentDetails(json);
    } catch (err) {
        // 处理错误，例如用户取消。
    }
}
```

这一确认巩固了浏览器市场的不同策略。虽然 Chrome 建立在灵活的 OpenID4VP 传输层之上，但 Apple 正在利用其在 ISO
mdoc 生态系统中的深度投资，提供一个高度集成且安全的解决方案，虽然灵活性较差，但专为官方身份文档量身定制。

### 6.3. Mozilla Firefox：从反对立场到积极实施

Mozilla 最初对数字凭证 API 表达了
**反对标准立场**。他们的担忧 ([详细记录](https://github.com/mozilla/standards-positions/issues/1003)) 是全面的，植根于他们保护
[用户隐私](https://www.corbado.com/faq/ensure-gdpr-compliance-with-passkeys)、自主权以及确保开放、公平网络的使命。

Mozilla 提出的主要担忧包括：

- **隐私风险**：如果数字凭证请求在微不足道的交互中变得普遍，可能会导致个人数据共享增加和在线匿名性降低。
- **用户排斥**：无法或选择不使用数字凭证的个人可能会被排除在在线服务和社区之外的风险。政府发行的凭证 (主要用例) 可能不符合个人的身份展示选择。
- **互操作性问题**：担心凭证格式的激增会导致生态系统碎片化，而不是通用的互操作性。
- **选择性披露**：担心如果实施时没有强有力的不可链接性保证，或者如果用户不完全理解正在共享的内容，选择性披露的隐私优势可能会被削弱。
- **信任集中化和用户自主权**：担心该 API 可能导致信任更加集中化，用户自主权降低，从而延续现有的社会权力不平衡。

虽然
[W3C 理事会否决了一项正式反对意见](https://www.w3.org/2025/02/council-report-fedid-dig-cred.html)，该反对意见与这些担忧有关 (为了允许工作在 W3C 内部进行，而不是在可能不太透明的场所进行)，但理事会确实建议工作组积极努力减轻这些潜在危害。

**2026 年 3 月更新 — 正在实施：** 尽管正式的反对立场在
[技术上保持不变](https://github.com/mozilla/standards-positions/issues/1003)，但 Mozilla 已开始
**积极实施**
数字凭证 API。2026 年第一季度，[基础 DC API 支持](https://bugzilla.mozilla.org/show_bug.cgi?id=2005077)
已合入 **Firefox 149** (在偏好设置标志后)，在
[meta bug 2004828](https://bugzilla.mozilla.org/show_bug.cgi?id=2004828)
下跟踪。[源代码](https://searchfox.org/mozilla-central/source/dom/credentialmanagement/digital/)
位于 mozilla-central 中，包括
`DigitalCredential.cpp`、WebIDL 绑定和 IPC 管道。桌面和 Android 权限提示的工作 ([bug 2010091](https://bugzilla.mozilla.org/show_bug.cgi?id=2010091),
[bug 2010093](https://bugzilla.mozilla.org/show_bug.cgi?id=2010093)) 正在进行中。

三位 Mozilla 工程师 —— John Schanck、Martin Thomson 和 Benjamin VanderSloot —— 是 W3C
FedID 工作组的
[活跃成员](https://www.w3.org/groups/wg/fedid/participants/)，Schanck 一直在为关键规范 PR 提供基于实施的实质性反馈，包括
[凭证展示算法](https://github.com/w3c-fedid/digital-credentials/pull/419) 和
[请求准备算法](https://github.com/w3c-fedid/digital-credentials/pull/420)。

这是一个重大进展：虽然 Mozilla 对该 API 潜在的滥用保持担忧，但显然它选择通过规范工作和实施从内部塑造该 API，而不是将设计权拱手让给其他浏览器供应商。这表明数字凭证 API 可能正朝着三大浏览器支持的方向发展，尽管 Mozilla 正在推动更强的隐私护栏 (包括提议的用于凭证请求的
[透明度日志](https://github.com/w3c-fedid/digital-credentials/issues/472))。

### 6.4. 概览表

**表 1：数字凭证 API 和协议的浏览器支持 (2026 年 3 月)**

| 特性 / 浏览器                                  | Google Chrome (Android & 桌面)                     | Apple Safari (iOS & macOS)       | Mozilla Firefox                                                                               |
| :--------------------------------------------- | :------------------------------------------------- | :------------------------------- | :-------------------------------------------------------------------------------------------- |
| **数字凭证 API (`navigator.credentials.get`)** | ✅ **稳定版** (141)                                | ✅ **稳定版** (26)               | 🔧 **开发中** ([Firefox 149](https://bugzilla.mozilla.org/show_bug.cgi?id=2005077)，在标志后) |
| **org.iso.mdoc (通过 API)**                    | ✅ **支持** (通过 DC API 下的 ISO 18013-7 Annex C) | ✅ **支持** (**仅**; \`protocol: |                                                                                               |
