Get your free and exclusive +30-page Authentication Analytics Whitepaper
返回概览

原生 App 通行密钥的第三方密码管理器测试

在原生 iOS/Android 应用中使用 1Password、Bitwarden 等测试通行密钥的完整指南。测试计划、常见问题和生产就绪策略。

Vincent Delitz
Vincent Delitz

创建: 2025年9月24日

更新: 2026年5月28日

原生 App 通行密钥的第三方密码管理器测试

本页由自动翻译生成。请阅读英文原文 此处.

WhitepaperEnterprise Icon

企业 Passkey 白皮书. 面向 passkey 项目的实用指南、推广模式和 KPI。

获取白皮书
关键事实
  • iOS 17 和 Android 14 首次允许第三方密码管理器在原生应用中作为通行密钥提供程序,这需要进行系统的跨提供商测试。
  • 只有 5-10% 的用户依赖第三方密码管理器,但在大规模部署中,这会产生不成比例的客户支持工单。
  • 五个主要目标(1Password、Bitwarden、Dashlane、Proton Pass 和 NordPass)覆盖了欧盟/美国/英国/澳大利亚/新西兰市场中 85% 的第三方密码管理器用户。
  • 某些第三方密码管理器的 BE/BS 标志配置不正确,在生产环境的通行密钥同步失败中占了很大比例。
  • Android 的 launchMode singleInstance 会导致凭据管理器(Credential Manager)作为单独的任务打开;切换到 singleTask 可以防止各个 OEM 厂商出现生命周期错误。

1. 简介:原生 App 通行密钥遇上第三方密码管理器#

随着 iOS 17Android 14 的发布,原生移动应用的通行密钥环境发生了根本性的变化。第三方密码管理器首次可以充当通行密钥提供程序,打破了 iCloud KeychainGoogle Password Manager 的专属地位。这允许用户将 1PasswordBitwardenDashlane 等自己信任的解决方案引入原生应用的身份验证流程中。虽然这是用户选择的巨大胜利,但也给开发者带来了极大的复杂性。您的通行密钥实现在原生移动应用中跨不同密码管理器时可能会表现出不同的行为。因此,任何团队都必须正确测试原生应用通行密钥和第三方密码管理器。

这份综合指南分享了我们使用第三方密码管理器进行原生应用通行密钥测试的实战经验。尽管通行密钥生态系统在 2025 年已经显著成熟,但在现实世界的实施中,仍然需要在各种不同的密码管理器实现之间进行仔细验证。我们将经验总结成了一份实用的测试计划,确保您的原生应用能够与用户偏好的密码管理器无缝协作。

PasskeysCheatsheet Icon

Passkeys 速查表. 面向 passkey 项目的实用指南、推广模式和 KPI。

获取速查表

2. 为什么通行密钥测试在生产环境中很重要#

2.1 用户自带密码管理器#

密码管理器生态系统已经超越了平台原生的解决方案。用户会根据自身特定需求(如跨平台同步、企业功能或隐私偏好)积极选择 1PasswordBitwardenDashlane、Proton Pass 和 NordPass 等第三方密码管理器。您的原生 iOS / Android 应用必须适应这种多样性,而不是强迫用户切换他们信任的密码管理解决方案。

根据我们在 Corbado 页面上衡量的数据,我们发现只有 5-10% 的普通用户依赖第三方密码管理器。尽管这个数字听起来很低,但如果您在大规模环境中工作,它将对您的通行密钥实现的感知和支持工单数量产生巨大影响。我们发现,某些密码管理器对 WebAuthn 规范的实现略有不同,这会导致用户体验的细微差异,甚至出现错误。

2.2 原生应用中不同的用户体验模式#

原生 iOSAndroid 应用提供了不同的通行密钥使用方式。在 Android 上,您会遇到通行密钥覆盖层和触发通行密钥仪式的手动文本字段输入(对于 Web 应用,Android 也支持 Conditional UI)。iOS 提供了自己的通行密钥覆盖层,以及 Conditional UI 和手动文本字段输入。此外,还有其他边缘情况需要检查。总而言之,您的原生应用程序必须优雅地处理:

  • 在页面加载时立即出现的通行密钥覆盖层登录
  • 自动建议可用通行密钥的 Conditional UI 登录(仅限 iOS)
  • 用户在点击按钮前提供其用户名的文本字段登录
  • 使用另一台设备进行通行密钥使用的跨设备身份验证(CDA)
  • 通行密钥不可用时的回退机制

2.3 WebAuthn 标志需要精确#

正确的标志配置决定了通行密钥是否能跨设备和平台按预期工作。关键值包括:

  • 信赖方 ID(rpID):必须在 Web 和原生实现中完全匹配,并且是通行密钥绑定到的域
  • 用户验证:确定用户需要提供其本地身份验证
  • 驻留密钥/可发现凭据:启用无用户名身份验证(允许使用 Conditional UI
  • 备份资格(BE)和备份状态(BS):允许跨设备同步通行密钥

配置错误的标志并不总是会导致立即失败。但是,它们可能会产生微妙的问题和不一致,例如通行密钥在一台设备上可用,但无法跨设备同步(即使两台设备上都可能安装了同一个第三方密码管理器)。我们在测试中的发现之一是,一些第三方密码管理器错误地设置了 BE/BS 标志,并占据了通行密钥问题的很大一部分。

2.4 单实例应用程序中的生命周期管理#

单活动(Android)和单场景(iOS)架构需要细致的生命周期管理。当密码管理器表单出现并被关闭时,您的应用程序必须保留状态、处理回调并正确恢复。这在 Android 上尤为关键,因为 launchMode 配置可能会导致意外行为。

例如,我们发现将 MainActivity 设置为 launchMode="singleInstance" 会产生问题。在某些 Android 版本和 OEM 定制系统上,这种模式会导致通行密钥凭据管理器(Passkey Credential Manager) UI 作为单独的任务打开。这不仅会在“最近”屏幕上增加一个令人困惑的额外应用程序条目,而且如果在打开通行密钥对话框时将应用程序切换到后台,还可能导致应用程序挂起。

推荐的修复方法是将配置更改为 launchMode="singleTask"。这可以防止凭据管理器生成单独的任务,确保跨不同 OEM(三星、Google、vivo 等)的可预测生命周期,并降低供应商特定错误的风险。它为测试导航、覆盖层和深层链接提供了更稳定的基础。

我们观察到,这类生命周期问题经常伪装成“密码管理器错误”,而实际上它们是应用程序级别的问题。跨不同提供商进行适当的检测和测试有助于及早发现这些模式。

3. 设置您的测试环境#

3.1 目标密码管理器#

将您的原生应用通行密钥测试重点放在采用最广泛的第三方密码管理器上:

主要目标(基本覆盖):

次要目标(根据您的用户群):

避免试图测试每一个可用的密码管理器。专注于代表您 90% 用户群的提供商。我们的分析显示,这五个主要目标覆盖了欧盟/美国/英国/澳大利亚/新西兰 85% 的第三方密码管理器用户。

3.2 飞行前检查清单#

在开始每次测试运行之前,确保有一个干净、可重现的环境:

1. 清除凭据状态:

  • 删除您 RP ID 的所有现有凭据
  • 清除浏览器和应用缓存
  • 完全退出并重新登录密码管理器
  • 强制关闭并重新启动目标应用程序

2. 稳定测试环境:

  • 确保稳定的网络连接(测试期间不使用 VPN)
  • 如果自动进行测试,禁用 UI 动画
  • 使用一致的设备方向
  • 记录操作系统版本、应用程序版本和密码管理器版本

4. 综合测试计划#

每个测试都验证通行密钥功能的特定方面。系统地记录结果,使用通过/失败状态并详细记录任何异常情况。

4.1 核心身份验证流程测试#

测试 1:中止通行密钥创建(在成功的常规登录后)#

验证优雅的取消处理

✓ 密码管理器表单正确打开
✓ 用户取消而不创建通行密钥
✓ 应用程序返回登录屏幕
✓ 密码管理器中没有孤立的凭据
✓ UI 显示适当的重试选项

测试 2:创建通行密钥(在成功的常规登录后)#

在身份验证流程后验证通行密钥创建

✓ 本地身份验证可靠启动
✓ 生物识别身份验证成功完成
✓ 创建具有正确 RP ID 的凭据
✓ 应用程序过渡到身份验证状态且没有循环

测试 3:使用现有通行密钥进行身份验证#

测试标准身份验证场景

✓ 通行密钥覆盖 UI 出现,或用户在文本字段场景中提供用户名
✓ 生物识别扫描和单一生物识别提示导致成功的身份验证
✓ 没有选择循环或表单重新出现
✓ 身份验证后会话保持稳定

测试 4:从设置中创建通行密钥#

验证应用内通行密钥管理

✓ 正确的 RP ID、可发现性和 BE/BS 标志
✓ 创建后应用程序保持身份验证状态
✓ 密码管理器立即更新正确的标签

测试 5:删除通行密钥并尝试重新登录#

测试凭据生命周期管理

✓ 在设置中删除通行密钥
✓ 无法使用通行密钥登录
✓ 提供了合适的回退选项

4.2 跨平台兼容性测试#

测试 6:在 Web 中使用原先创建的通行密钥(同一设备)#

验证应用到 Web 的可移植性

✓ 浏览器识别应用创建的通行密钥
✓ 选择表单显示正确的 RP 关联
✓ 身份验证完成,没有 QR/CDA 绕道

测试 7:在原生应用中使用 Web 创建的通行密钥#

测试 Web 到应用的凭据共享

✓ 应用程序在选择中显示 Web 创建的凭据
✓ 首次尝试身份验证成功
✓ 没有强制的密码回退

测试 8:跨设备同步(移动端到桌面端)#

验证从原生应用到桌面浏览器的通行密钥同步

✓ 应用创建的通行密钥同步到桌面密码管理器
✓ 同步的通行密钥在桌面浏览器中无缝工作
✓ 没有触发二维码/跨设备流程
✓ 身份验证完成且没有循环或错误

测试 9:跨设备同步(桌面端到移动端)#

验证从桌面浏览器到原生应用的通行密钥同步

✓ 桌面创建的通行密钥同步到移动密码管理器
✓ 原生应用正确显示同步的通行密钥
✓ 身份验证成功且没有密码回退
✓ 日志将断言与正确的凭据 ID 联系起来

测试 10:移动设备作为 Web 的身份验证器#

验证将手机用作安全密钥的场景

✓ 手机为 Web CDA 提供应用程序创建的凭据
✓ 没有错误的“没有可用的通行密钥”报错
✓ Web 会话在移动生物识别后完成

5. 常见问题和缓解策略#

我们广泛的测试揭示了几个影响第三方密码管理器通行密钥集成的常见模式:

跨设备同步延迟#

问题: 在一台设备上创建的凭据可能不会立即出现在其他设备上。

解决方案: 实施具有指数退避机制的重试逻辑。为遇到同步延迟的用户提供手动刷新选项。

特定版本的行为#

问题: 密码管理器的行为在不同操作系统版本之间存在显着差异,尤其是在 Android 14+ 和 iOS 17+ 上。

解决方案: 维护兼容性矩阵,并根据检测到的操作系统版本调整流程。考虑最佳体验的最低版本要求。

6. 结论:构建生产就绪的通行密钥支持#

要在原生应用中成功实施第三方密码管理器通行密钥支持,需要进行有条理的测试并关注细节。我们通过实际测试完善的综合测试计划,为您验证通行密钥集成提供了坚实的基础。

生产部署的关键要点:

  1. 系统地测试: 使用我们的测试计划作为基准,使其适应您的特定用例
  2. 尊重用户选择: 支持用户喜欢的密码管理器,而不仅仅是平台默认值
  3. 持续监控: 实施全面的日志记录以捕获生产中的边缘情况
  4. 全面记录: 维护清晰的提供商特定行为和解决方法的记录

通行密钥生态系统继续快速发展。密码管理器定期更新其实现,操作系统引入新功能,WebAuthn 规范本身也在进步。通过现在建立一个强大的测试框架,您将准备好随着技术的成熟进行调整。

随着新模式的出现,我们将继续更新我们的 SDK 和测试方法。对综合的第三方密码管理器测试进行投资,可以减少客户支持负担并提高用户满意度。毕竟,身份验证应该能够无缝工作——无论您的用户选择哪种密码管理器。

Corbado

关于 Corbado

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 专家交谈

常见问题解答#

在测试原生 App 通行密钥时,我应该优先考虑哪些第三方密码管理器?#

优先将 1Password、Bitwarden、Dashlane、Proton Pass 和 NordPass 作为主要目标。这五家提供商覆盖了欧盟/美国/英国/澳大利亚/新西兰市场中 85% 的第三方密码管理器用户,提供了广泛的覆盖范围,而无需对长尾提供商进行过度投资。

为什么在使用第三方密码管理器时,在原生 App 中创建的通行密钥无法跨设备同步?#

不正确的备份资格(BE)和备份状态(BS)标志配置是导致跨设备同步失败的主要原因。一些第三方密码管理器错误地设置了这些标志,导致通行密钥存在于一台设备上,但无法同步到其他设备,即使两台设备上安装了相同的密码管理器。

如何修复在“最近”屏幕中显示为单独任务的 Android 凭据管理器 UI 错误?#

将 MainActivity 设置为 launchMode singleInstance 会导致凭据管理器 UI 作为单独的任务生成,创建一个令人困惑的“最近”条目,并可能在后台时挂起应用程序。将配置更改为 launchMode singleTask 可以跨 OEM 厂商(包括三星、Google 和 vivo)解决此问题。

在验证原生 iOS 或 Android 应用中的第三方密码管理器支持时,我必须测试哪些身份验证流程?#

一份综合的测试计划涵盖 10 个场景:通行密钥创建和优雅取消、覆盖层和文本字段身份验证、应用内凭据管理、带回退机制的凭据删除以及双向跨设备同步。跨平台测试还应该确认应用创建的通行密钥可以在浏览器中进行身份验证,并且 Web 创建的通行密钥可以在原生应用中进行身份验证。

看清你的 passkey 推广中真实发生了什么。

探索 Console

分享本文


LinkedInTwitterFacebook