了解 Passkey(通行密钥)提供商的类型(第一方/第三方/认证提供商)、AAGUID 如何识别及在 Android、iOS 与 Web 上的管理与采用建议。

Vincent
Created: December 17, 2025
Updated: December 18, 2025

See the original blog version in English here.

Looking for a developer-focused passkey reference? Download our Passkeys Cheat Sheet (incl. WebAuthn ceremonies, objects & Conditional UI). Trusted by dev teams at Ally, Stanford CS & more.
Get Cheat Sheet在使用 Passkey(通行密钥)或进行相关开发工作时,有一个组件变得非常重要:Passkey 提供商。虽然它是 Passkey 生态系统中至关重要的一部分,但许多人对 Passkey 提供商的理解还很模糊,或者分不清 第一方 Passkey 提供商、第三方 Passkey 提供商 和 Passkey 认证提供商 之间的区别。
这篇文章旨在为你揭开迷雾。无论你是软件开发人员、产品经理,还是仅仅对最新的网络安全技术好奇,理解 Passkey 提供商的角色和类型都是必不可少的。通过揭秘这一话题,我们希望赋予大家相应的知识,以便自信地理解和使用 Passkey。
Passkey 提供商在基于 Passkey 的认证生态系统中扮演着基础性角色,它是连接用户设备与依赖方(在线服务)之间安全、无缝访问的桥梁。但究竟什么是 Passkey 提供商?毕竟目前还没有官方定义,而且网上也有各种不同的解读。
以下定义反映了我们的理解,并不代表是唯一的准确定义。
Passkey 提供商本质上是任何能够创建、管理和使用 Passkey 的实体。经过研究,我们将 Passkey 提供商主要分为两类:第一方/第三方 Passkey 提供商 和 Passkey 认证提供商。
这一类实体能够在客户端(用户设备上)生成 Passkey。通过这些平台创建 Passkey 时,它们会被安全地管理和存储,通常是在操作系统制造商的云端(例如 iCloud 钥匙串、Google 密码管理器)或第三方密码管理器中(例如 KeePassXC、1Password、Dashlane,详见下文)。
原生支持 Passkey 创建和管理的操作系统被视为 第一方 Passkey 提供商。相比之下,通过 API 与平台集成的第三方密码管理器则被称为 第三方 Passkey 提供商。
无论是第一方还是第三方 Passkey 提供商,都拥有相同的 Authenticator Attestation Globally Unique Identifiers (AAGUIDs),这有助于提升用户体验(例如在账户设置中更容易区分 Passkey)。有时它们可能有多个 AAGUID,但都属于同一个第一方或第三方 Passkey 提供商。
iOS 17.4 设备上的 Passkey 提供商
Android 14 设备上的 Passkey 提供商
Android 的 Credential Manager API
第二类包含开发人员可以集成到其应用程序中以处理 Passkey 管理各个方面的认证提供商。这类提供商更多地是在服务端工作(相对于上述的客户端)。这个定义也包括像 Corbado 这样的解决方案,它们为网站和 App 提供以 Passkey 为核心的认证方案。因此,这类 Passkey 提供商更准确的描述应该是 Passkey 认证提供商,以区别于前面提到的第一方和第三方 Passkey 提供商。
在本文接下来的部分,我们将按照我们的定义,使用“Passkey 提供商”一词来指代第一方和第三方 Passkey 提供商。
随着用户开始在各种依赖方采用 Passkey,如何有效地管理它们成为了一大挑战。对于在同一个账户使用多个 Passkey 的用户来说也是如此,因为对于依赖方来说,区分这些 Passkey 以便进行编辑或删除可能很复杂。尽管 Passkey 带来了便利和安全性,但如果用户丢失了其中一个 Passkey,可能会出现潜在问题。幸运的是,他们仍然可以使用其他替代 Passkey 访问依赖方的账户。为了帮助用户识别特定的 Passkey,有些资源建议在账户设置中添加元数据,例如 Passkey 的创建日期和最后使用日期。此外,建议利用 User Agent 或 Client Hints 在创建时自动命名和分类 Passkey。然而,原生 Android 或 iOS App 以及第三方 Passkey 提供商可能不会使用 User Agent,或者它们不会添加表明 Passkey 是由第三方提供商生成的信息。这种局限性凸显了我们需要更好的方法来帮助用户高效管理 Passkey,无论平台或提供商如何。
为了促进 Passkey 管理,开发人员可以使用 Authenticator Attestation Globally Unique Identifier (AAGUID)。AAGUID 是分配给验证器型号的唯一标识符,而不是特定实例。它嵌入在公钥凭据的验证器数据中,为依赖方提供了一种识别 Passkey 提供商的方法。这一功能对于帮助用户和依赖方理清 Passkey 的来源至关重要,确保每个 Passkey 都能与其创建源准确对应。
例如,如果 Passkey 是在 Android 设备上使用 Google 密码管理器创建的,依赖方可以接收到一个特定于 Google 密码管理器的 AAGUID。通过引用这个 AAGUID,依赖方可以相应地标记该 Passkey,从而简化用户的管理和识别过程。此外,依赖方可以通过使用 WebAuthn 服务器选项 excludeCredentials 来防止为同一个 Passkey 提供商创建多个 Passkey。这进一步改善了 Passkey 的用户体验,因为每个 Passkey 提供商只保留一个 Passkey,从而避免用户混淆。
{ "attestation": "none", "authenticatorSelection": { "residentKey": "preferred", "userVerification": "preferred" }, "challenge": "6V61d0VM5bNTPxWSsrv7YKz0o4awe0ryoDh1V44RPRn6-mBQwv98BTRws6nMrBhEggGn7-tk1bl3YNSwc0oZpA", "excludeCredentials": [ { "id": "1kBn2dmhv5JhuFxqeco1khCBCUBLlWYqZmFtdDujH5pM", "transports": ["internal"], "type": "public-key" } ], "extensions": { "credProps": true }, "pubKeyCredParams": [ { "alg": -7, "type": "public-key" }, { "alg": -257, "type": "public-key" } ], "rp": { "id": "Passkey Demo", "name": "passkeys.eu" }, "user": { "displayName": "Test Name", "id": "ZG1sdVkyVnxe3SFJsYzNR", "name": "Test Name" } }
要确定与 AAGUID 对应的 Passkey 提供商,依赖方可以参考社区维护的 AAGUID 仓库。该仓库提供了必要的映射关系,可以通过名称(可能还有图标)来识别 Passkey 提供商,有助于为 Passkey 管理提供更直观的用户界面。不过需要注意,有些 Passkey 提供商可能会故意使用通用的 AAGUID ("00000000-0000-0000-0000-0000000000000"),代表未知或通用的提供商。
使用大多数 WebAuthn 库获取 AAGUID 都很简单。例如,当在服务端使用 SimpleWebAuthn 时,开发人员可以从注册信息中提取 AAGUID,将其与已知的提供商进行匹配,从而增强用户轻松管理 Passkey 的能力(摘自 Google 的"通过 AAGUID 确定 Passkey 提供商")。
// Import a list of AAGUIDs from a JSON file import aaguids from "./aaguids.json" with { type: "json" }; // ... // Use SimpleWebAuthn handy function to verify the registration request. const { verified, registrationInfo } = await verifyRegistrationResponse({ response: credential, expectedChallenge, expectedOrigin, expectedRPID, requireUserVerification: false, }); // ... const { aaguid } = registrationInfo; const provider_name = aaguids[aaguid]?.name || "Unknown";
虽然 AAGUID 是 Passkey 管理的有力工具,但使用时应谨慎。AAGUID 的完整性取决于 Attestation(认证)过程,该过程验证 Passkey 提供商的真实性。如果没有有效的 Attestation 签名,AAGUID 可能会被篡改。值得注意的是,截至 2024 年 3 月,某些平台上的 Passkey 并不支持 Attestation,这凸显了在使用时需要仔细考虑。
下面,你将看到在 Android App、iOS App 和 Web App 中,基于常见操作系统版本和浏览器的一些第一方和第三方 Passkey 提供商的非详尽列表:
以下是一些第三方 Passkey 提供商创建/保存 Passkey 的弹窗界面:
Passkey 提供商在 Passkey 的部署和管理中处于核心地位,它们不仅促进了 Passkey 的创建和管理,还确保了其在各种平台和设备上的无缝集成。
本文的目标是帮助大家理解什么是 Passkey 提供商,区分第一方和第三方提供商,以及 Authenticator Attestation Globally Unique Identifier (AAGUID) 的关键作用。正如我们所讨论的,使用 AAGUID 提供了一个很有前景的解决方案,能够更直接地识别和管理 Passkey。
此外,我们还分析了目前针对 Android、iOS 和 Windows 存在哪些第一方和第三方 Passkey 提供商,帮助用户找到合适的第三方 Passkey 提供商或心仪的设备。
对于开发人员和产品经理来说,深入了解 Passkey 提供商及其管理方式,不仅能指导 Passkey 认证的技术实现,也符合提升用户体验和安全性的更广泛目标。
Related Articles
Table of Contents