本页由自动翻译生成。请阅读英文原文 此处.
企业 Passkey 白皮书. 面向 passkey 项目的实用指南、推广模式和 KPI。
随着 iOS 17 和 Android 14 的发布,原生移动应用的通行密钥环境发生了根本性的变化。第三方密码管理器首次可以充当通行密钥提供程序,打破了 iCloud Keychain 和 Google Password Manager 的专属地位。这允许用户将 1Password、Bitwarden 或 Dashlane 等自己信任的解决方案引入原生应用的身份验证流程中。虽然这是用户选择的巨大胜利,但也给开发者带来了极大的复杂性。您的通行密钥实现在原生移动应用中跨不同密码管理器时可能会表现出不同的行为。因此,任何团队都必须正确测试原生应用通行密钥和第三方密码管理器。
这份综合指南分享了我们使用第三方密码管理器进行原生应用通行密钥测试的实战经验。尽管通行密钥生态系统在 2025 年已经显著成熟,但在现实世界的实施中,仍然需要在各种不同的密码管理器实现之间进行仔细验证。我们将经验总结成了一份实用的测试计划,确保您的原生应用能够与用户偏好的密码管理器无缝协作。

Passkeys 速查表. 面向 passkey 项目的实用指南、推广模式和 KPI。
密码管理器生态系统已经超越了平台原生的解决方案。用户会根据自身特定需求(如跨平台同步、企业功能或隐私偏好)积极选择 1Password、Bitwarden、Dashlane、Proton Pass 和 NordPass 等第三方密码管理器。您的原生 iOS / Android 应用必须适应这种多样性,而不是强迫用户切换他们信任的密码管理解决方案。
根据我们在 Corbado 页面上衡量的数据,我们发现只有 5-10% 的普通用户依赖第三方密码管理器。尽管这个数字听起来很低,但如果您在大规模环境中工作,它将对您的通行密钥实现的感知和支持工单数量产生巨大影响。我们发现,某些密码管理器对 WebAuthn 规范的实现略有不同,这会导致用户体验的细微差异,甚至出现错误。
原生 iOS 和 Android 应用提供了不同的通行密钥使用方式。在 Android 上,您会遇到通行密钥覆盖层和触发通行密钥仪式的手动文本字段输入(对于 Web 应用,Android 也支持 Conditional UI)。iOS 提供了自己的通行密钥覆盖层,以及 Conditional UI 和手动文本字段输入。此外,还有其他边缘情况需要检查。总而言之,您的原生应用程序必须优雅地处理:
正确的标志配置决定了通行密钥是否能跨设备和平台按预期工作。关键值包括:
配置错误的标志并不总是会导致立即失败。但是,它们可能会产生微妙的问题和不一致,例如通行密钥在一台设备上可用,但无法跨设备同步(即使两台设备上都可能安装了同一个第三方密码管理器)。我们在测试中的发现之一是,一些第三方密码管理器错误地设置了 BE/BS 标志,并占据了通行密钥问题的很大一部分。
单活动(Android)和单场景(iOS)架构需要细致的生命周期管理。当密码管理器表单出现并被关闭时,您的应用程序必须保留状态、处理回调并正确恢复。这在 Android 上尤为关键,因为
launchMode 配置可能会导致意外行为。
例如,我们发现将 MainActivity 设置为 launchMode="singleInstance"
会产生问题。在某些 Android 版本和 OEM 定制系统上,这种模式会导致通行密钥凭据管理器(Passkey
Credential
Manager) UI 作为单独的任务打开。这不仅会在“最近”屏幕上增加一个令人困惑的额外应用程序条目,而且如果在打开通行密钥对话框时将应用程序切换到后台,还可能导致应用程序挂起。
推荐的修复方法是将配置更改为
launchMode="singleTask"。这可以防止凭据管理器生成单独的任务,确保跨不同 OEM(三星、Google、vivo 等)的可预测生命周期,并降低供应商特定错误的风险。它为测试导航、覆盖层和深层链接提供了更稳定的基础。
我们观察到,这类生命周期问题经常伪装成“密码管理器错误”,而实际上它们是应用程序级别的问题。跨不同提供商进行适当的检测和测试有助于及早发现这些模式。
将您的原生应用通行密钥测试重点放在采用最广泛的第三方密码管理器上:
主要目标(基本覆盖):
次要目标(根据您的用户群):
避免试图测试每一个可用的密码管理器。专注于代表您 90% 用户群的提供商。我们的分析显示,这五个主要目标覆盖了欧盟/美国/英国/澳大利亚/新西兰 85% 的第三方密码管理器用户。
在开始每次测试运行之前,确保有一个干净、可重现的环境:
1. 清除凭据状态:
2. 稳定测试环境:
每个测试都验证通行密钥功能的特定方面。系统地记录结果,使用通过/失败状态并详细记录任何异常情况。
验证优雅的取消处理
✓ 密码管理器表单正确打开
✓ 用户取消而不创建通行密钥
✓ 应用程序返回登录屏幕
✓ 密码管理器中没有孤立的凭据
✓ UI 显示适当的重试选项
在身份验证流程后验证通行密钥创建
✓ 本地身份验证可靠启动
✓ 生物识别身份验证成功完成
✓ 创建具有正确 RP ID 的凭据
✓ 应用程序过渡到身份验证状态且没有循环
测试标准身份验证场景
✓ 通行密钥覆盖 UI 出现,或用户在文本字段场景中提供用户名
✓ 生物识别扫描和单一生物识别提示导致成功的身份验证
✓ 没有选择循环或表单重新出现
✓ 身份验证后会话保持稳定
验证应用内通行密钥管理
✓ 正确的 RP ID、可发现性和 BE/BS 标志
✓ 创建后应用程序保持身份验证状态
✓ 密码管理器立即更新正确的标签
测试凭据生命周期管理
✓ 在设置中删除通行密钥
✓ 无法使用通行密钥登录
✓ 提供了合适的回退选项
验证应用到 Web 的可移植性
✓ 浏览器识别应用创建的通行密钥
✓ 选择表单显示正确的 RP 关联
✓ 身份验证完成,没有 QR/CDA 绕道
测试 Web 到应用的凭据共享
✓ 应用程序在选择中显示 Web 创建的凭据
✓ 首次尝试身份验证成功
✓ 没有强制的密码回退
验证从原生应用到桌面浏览器的通行密钥同步
✓ 应用创建的通行密钥同步到桌面密码管理器
✓ 同步的通行密钥在桌面浏览器中无缝工作
✓ 没有触发二维码/跨设备流程
✓ 身份验证完成且没有循环或错误
验证从桌面浏览器到原生应用的通行密钥同步
✓ 桌面创建的通行密钥同步到移动密码管理器
✓ 原生应用正确显示同步的通行密钥
✓ 身份验证成功且没有密码回退
✓ 日志将断言与正确的凭据 ID 联系起来
验证将手机用作安全密钥的场景
✓ 手机为 Web CDA 提供应用程序创建的凭据
✓ 没有错误的“没有可用的通行密钥”报错
✓ Web 会话在移动生物识别后完成
我们广泛的测试揭示了几个影响第三方密码管理器通行密钥集成的常见模式:
问题: 在一台设备上创建的凭据可能不会立即出现在其他设备上。
解决方案: 实施具有指数退避机制的重试逻辑。为遇到同步延迟的用户提供手动刷新选项。
问题: 密码管理器的行为在不同操作系统版本之间存在显着差异,尤其是在 Android 14+ 和 iOS 17+ 上。
解决方案: 维护兼容性矩阵,并根据检测到的操作系统版本调整流程。考虑最佳体验的最低版本要求。
要在原生应用中成功实施第三方密码管理器通行密钥支持,需要进行有条理的测试并关注细节。我们通过实际测试完善的综合测试计划,为您验证通行密钥集成提供了坚实的基础。
生产部署的关键要点:
通行密钥生态系统继续快速发展。密码管理器定期更新其实现,操作系统引入新功能,WebAuthn 规范本身也在进步。通过现在建立一个强大的测试框架,您将准备好随着技术的成熟进行调整。
随着新模式的出现,我们将继续更新我们的 SDK 和测试方法。对综合的第三方密码管理器测试进行投资,可以减少客户支持负担并提高用户满意度。毕竟,身份验证应该能够无缝工作——无论您的用户选择哪种密码管理器。
Corbado 是面向大规模运行 consumer 身份验证的 CIAM 团队的Passkey Intelligence Platform。我们让你看到 IDP 日志和通用 analytics 工具看不到的内容:哪些设备、操作系统版本、浏览器和 credential manager 支持 passkey,为什么注册没有转化为登录,WebAuthn 流程在哪里失败,以及什么时候操作系统或浏览器更新会悄悄破坏登录 — 而且无需替换 Okta、Auth0、Ping、Cognito 或你自有的 IDP。两款产品:Corbado Observe 提供 针对 passkey 及任何其他登录方式的 observability。Corbado Connect 提供 内置 analytics 的 managed passkey(与你的 IDP 并存)。VicRoads 通过 Corbado 为 500 万以上用户运行 passkey(passkey 激活率 +80%)。 与 Passkey 专家交谈 →
优先将 1Password、Bitwarden、Dashlane、Proton Pass 和 NordPass 作为主要目标。这五家提供商覆盖了欧盟/美国/英国/澳大利亚/新西兰市场中 85% 的第三方密码管理器用户,提供了广泛的覆盖范围,而无需对长尾提供商进行过度投资。
不正确的备份资格(BE)和备份状态(BS)标志配置是导致跨设备同步失败的主要原因。一些第三方密码管理器错误地设置了这些标志,导致通行密钥存在于一台设备上,但无法同步到其他设备,即使两台设备上安装了相同的密码管理器。
将 MainActivity 设置为 launchMode singleInstance 会导致凭据管理器 UI 作为单独的任务生成,创建一个令人困惑的“最近”条目,并可能在后台时挂起应用程序。将配置更改为 launchMode singleTask 可以跨 OEM 厂商(包括三星、Google 和 vivo)解决此问题。
一份综合的测试计划涵盖 10 个场景:通行密钥创建和优雅取消、覆盖层和文本字段身份验证、应用内凭据管理、带回退机制的凭据删除以及双向跨设备同步。跨平台测试还应该确认应用创建的通行密钥可以在浏览器中进行身份验证,并且 Web 创建的通行密钥可以在原生应用中进行身份验证。
相关文章
目录