本页由自动翻译生成。请阅读英文原文 此处.
isUserVerifyingPlatformAuthenticatorAvailable() 在所有非 Safari 浏览器上均返回 false,这需要更新检测逻辑。不要实施通行密钥。
至少,如果您没有足够的资源来正确地实施,就不要不惜一切代价地去实施。
企业 Passkey 白皮书. 面向 passkey 项目的实用指南、推广模式和 KPI。
是的,通行密钥是过去十年来消费者身份验证领域发生的最美好的事情。是的,它们消除了网络钓鱼。是的,它们可以大幅提升用户体验。但是,如果实施不当,通行密钥也可能造成很大的危害。
实施 WebAuthn 服务器并不太复杂。真正的挑战在于围绕它的一切。要大规模地高效运营通行密钥,需要提前规划。您需要考虑所有的“第二天”问题——这些运营现实只有在您开始推广通行密钥后才会浮出水面。
本文涵盖了始终会导致通行密钥项目失败的五个“第二天”问题。如果您不能解决所有这些问题,您就没有准备好发布通行密钥。如果您能解决,您将构建出比密码更安全、更易用的身份验证系统。
在工程领域,“第一天”是您构建和发布的时候。“第二天”是您运营、维护和扩展所发布内容的时候。对于通行密钥而言,第一天可能很简单:
大多数团队可以在几天或几周内运行一个基础的通行密钥实现。
第二天才是项目容易失败的地方。此时真实用户在真实设备上带着真实的边缘情况与您的通行密钥系统进行交互。此时您会发现,在您的 MacBook 上完美运行的漂亮演示,却在企业代理后面的运行 Chrome 的 Windows 笔记本电脑上崩溃了。此时您的支持团队会被“我无法登录了”的工单淹没。
一个正常工作的通行密钥演示与生产级通行密钥部署之间的差距是巨大的。我们之前已经探讨过技术实施陷阱和通行密钥项目失败的战略原因。本文专门从运营的角度重点讨论上线后会发生什么。
以下是我们即将讨论的五个“第二天”问题:
如果您没有正确设计恢复和回退机制,您要么会大规模地将用户拒之门外,要么会在悄无声息中重新引入您原本想消除的容易遭受钓鱼攻击的流程。
假设一位用户在他们的 iPhone 上注册了一个通行密钥,然后丢失了这部 iPhone。通常情况下,现在这类恢复案例很大一部分是由凭证管理器(在 iPhone 上很可能是 iCloud 钥匙串)处理的。只要用户能够访问他们的 Apple 帐户,他们就可以在新设备上使用同步的通行密钥登录。但是如果他们无法再访问那个云帐户怎么办?这就需要您的常规恢复路径发挥作用了。
假设您认为用户尝试登录的设备上仍然存在私钥,因此您启动了 WebAuthn 登录仪式。这将弹出一个操作系统/浏览器模态框,要求用户“在另一台设备上使用您的通行密钥登录”。基本上,用户现在被锁在他们的帐户之外了。没有其他设备存储了该通行密钥。用户会感到非常困惑。将其乘以成千上万的用户,您就会面临一场支持危机。
常见的反应是添加基于电子邮件的帐户重置作为回退机制。但这违背了通行密钥的初衷:您刚刚重新引入了一个容易受到网络钓鱼攻击的恢复渠道。一个能够攻破用户电子邮件的攻击者现在可以完全绕过您抗钓鱼的通行密钥实现。
在我们看来,正确的方法是分层恢复:
一般来说,您需要决定从成本/摩擦的角度来看,哪些帐户恢复层是合理的。例如,在零售 / 电子商务中,出于财务原因,您可能只提供前两层并接受网络钓鱼风险。在安全性更为重要的其他行业中,您可以采用第 3 层和第 4 层。
每一层都会增加复杂性。您需要决定您的用例需要哪些层,构建它们,在所有设备组合中测试它们,并监控它们的使用情况。这比最初的 WebAuthn 集成要做的工作多得多。
大多数团队要么过度简化恢复(回退到密码或 SMS OTP),要么过度复杂化(例如,要求每次恢复都使用硬件安全密钥)。正确的平衡取决于您的威胁模型、用户群和监管要求。做错了意味着要么破坏您的安全态势,要么制造太多摩擦导致用户放弃该流程。
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case study您的用户并不生活在一个纯净的 Apple 世界中。他们会更换设备,将 Windows 与 iOS 混合使用,使用不同的浏览器,并在企业管理的设置上工作。如果您没有为此做好计划,这就是通行密钥流程崩溃的地方。
通行密钥生态系统跨越三大平台(Apple、Google 和 Microsoft)、多种浏览器(Chrome、Safari、Firefox 和 Edge)、数十个通行密钥提供商/凭证管理器(例如 1Password、Bitwarden、Dashlane 等等)以及无数的操作系统/浏览器/设备组合。每种组合的行为可能略有不同,例如:
当用户在他们的 iPhone 上创建了一个通行密钥,但想在 Windows 笔记本电脑上登录时,他们可以使用跨设备身份验证(通常通过二维码和蓝牙)。这个流程是可行的,但很脆弱:
我们在数千种设备组合中亲眼见证了这些边缘情况。如果您在内部构建通行密钥,您需要测试并处理每一种情况。如果不能,您的用户就会遇到您的支持团队无法解释的错误。
即使在同一台设备上,不同浏览器的行为也有所不同。macOS 上的 Chrome 显示的通行密钥模态框与 macOS 上的 Safari 不同。Firefox 也有自己的行为。客户端提示 (Client hints) 和用户代理 (User agent) 检测对于向正确的用户提供正确的流程变得至关重要,但在所有组合中正确解析它们是一项永无止境的维护负担。
对于 Web 应用而言,通行密钥的测试和 QA 本身已经是一个挑战(我们在问题 5:平台更改中详细介绍了这一点)。但如果您的产品还包含原生 iOS 和 Android 应用,那么由于架构决策和特定于平台的行为,其复杂性将会成倍增加,而纯 Web 团队则永远不会面临这些问题。
第一个决定是通过原生方式还是通过 WebView 来实施通行密钥。每种方法都有权衡:
| 方面 | 原生实施 | WebView 实施 |
|---|---|---|
| 用户体验质量 | 一流的,原生平台体验 | 取决于 WebView 类型 |
| 维护 | iOS 和 Android 独立的代码库 | 共享 Web 逻辑 |
| 平台要求 | 必须遵循 Apple/Google SDK 的更改 | 必须处理 WebView 对通行密钥支持的问题 |
| 复杂性 | 高(特定于平台的 API) | 中等(但 WebView 类型很重要) |
单在 iOS 上,您就可以在 WKWebView、SFSafariViewController、SFAuthenticationSession 和 ASWebAuthenticationSession 之间进行选择——每种对通行密钥的支持特性都不同。在 Android 上,Chrome 自定义选项卡 (Custom Tabs) 的行为与标准的 WebView 不同。这些是纯 Web 团队永远不必做出的决定,而每个选择都会创造其自身的维护面。
除了架构决策之外,iOS 和 Android 在操作系统层面处理通行密钥的方式也有所不同:
NotAllowedError,但在 iOS 上会显示为 SimpleAuthenticationServices.AuthorizationError,而在 Android 的凭证管理器上则显示为 User cancelled the operation。如果您同时运营 Web 应用和原生应用,您的 QA 工作量不仅仅是翻倍,而是增加了两倍。Web、iOS 和 Android 各自都相当于独立的通行密钥环境,需要独立的端到端测试和监控。而且与 Web 端不同,您可以立即部署修复程序,原生应用的修复则受到应用商店审核周期的限制。
“支持通行密钥”并不意味着“使用通行密钥”。如果您没有推广策略和衡量指标,您的采用率将令人失望,该项目在内部将被标记为失败。
我们在一篇关于通行密钥实施为何失败的文章中广泛探讨了这一点:如果用户不改用通行密钥,项目就已经失败了。密码仍然占据主导地位,SMS OTP 成本居高不下,网络钓鱼风险依然存在,您的组织也看不到重大工程投资的回报。
采用通行密钥的商业理由很充分,但这仅在采用真正发生时才成立。我们见过一些企业在上线通行密钥时技术实现非常出色,但采用率却不到 5%,因为没有人考虑过推广和采用策略。
推动通行密钥的采用是一项产品挑战,它需要:
根据我们在大规模通行密钥部署方面的经验,以下是企业应设定的目标:
| 指标 | 较弱 | 可接受 | 强劲 |
|---|---|---|---|
| 通行密钥创建率(占符合条件的用户) | <10% | 10-60% | >60% |
| 通行密钥登录率(占所有登录) | <5% | 5-40% | >40% |
如果您的采用数字在三个月后看起来像“较弱”这一列,那么该项目就遇到麻烦了。如果没有数据分析来衡量这一点,您甚至不会知道。
操作系统和浏览器更新会更改提示、自动填充行为和回退流程。如果您没有持续的监控,您会在没有预警的情况下遭遇功能回归和支持工单。
与密码(仅仅是服务器验证的字符串)不同,通行密钥依赖于与操作系统、浏览器和凭证管理器的深度集成。当 Apple 发布新的 iOS 版本时,通行密钥的创建提示可能会看起来不同。当 Chrome 更新其自动填充逻辑时,您的登录流程可能会被破坏。当密码管理器发布新版本时,它可能会开始以您意想不到的方式拦截通行密钥请求。
最近的一个例子是 iOS 26.2 的错误,该错误导致 isUserVerifyingPlatformAuthenticatorAvailable() 在所有非 Safari 浏览器(Chrome、Edge、Firefox)上均返回 false,这需要使用 getClientCapabilities() 作为变通方案来实现感知平台的检测逻辑。
为了确保您能发现所有潜在的错误并跟踪采用情况,您需要建立您的身份验证可观测性技术栈。我们建议至少落实以下几点:
NotAllowedError)和意外错误(由于并发错误导致 AbortError 激增,或者 Android 更新后出现的新的凭证管理器通行密钥错误)这正是大多数团队在发生事故之前不会去构建的身份验证分析基础架构。到那时,对用户信任和内部项目可信度的损害已经造成。
通行密钥实施的真正成本不在于最初的构建,而在于持续的维护:
订阅我们的 Passkeys Substack,获取最新消息。
鉴于这些“第二天”问题,以下是对您何时应该以及何时不应该发布通行密钥的诚实评估。
如果没有适当的规划,纯粹为了监管原因而孤注一掷可能会显著推高成本。实施不佳的通行密钥系统比没有通行密钥系统更糟糕:它会侵蚀用户信任,产生支持开销,并给内部利益相关者提供取消项目的理由。
本文描述的“第二天”问题正是许多企业选择购买而不是自建其通行密钥基础架构的原因。构建 WebAuthn 服务器是最简单的部分。而在数千种设备组合中运行生产级通行密钥系统,并具备适当的恢复、监控和采用率分析功能,才是区分演示与真正部署的关键。
Corbado 的存在正是因为第二天的问题很难解决。我们的平台处理了运营的复杂性,因此您不必自己构建和维护。
Corbado 提供开箱即用、具有自适应安全级别的恢复流程。从同步的通行密钥策略到跨设备身份验证,再到自动化的身份验证。恢复逻辑内置并持续更新。
我们的前端 SDK 已在数千种操作系统、浏览器和通行密钥提供商组合中进行了预测试。设备检测、条件 UI (Conditional UI) 处理和回退路由会自动发生。当新版本的浏览器破坏了某些功能时,我们会在您的用户注意到之前在我们的 SDK 中对其进行修复。
Corbado 支持原生和 WebView 的通行密钥实施,并通过 SDK 抽象化平台的差异。您只需专注于您应用的用户体验,而我们则处理跨 iOS 和 Android 的通行密钥底层工作。
我们的数据分析仪表板可跟踪所有重要的指标:通行密钥创建率、登录成功率、回退率以及设备级别的细分数据。您将获得可操作的见解以推动采用,而不仅仅是原始数据。
Corbado 持续监控影响通行密钥的操作系统和浏览器更改。我们的 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 专家交谈 →
这五个运营问题是:不安全的恢复和回退流程、跨设备生态系统的边缘情况、原生应用的复杂性、低用户采用率以及操作系统和浏览器更新带来的静默回归。大多数团队将重点放在最初的 WebAuthn 集成上,而低估了这些发布后的挑战,这就是为什么许多通行密钥项目在内部被回滚或悄悄放弃的原因。
用户可以通过二维码和蓝牙跨设备流程进行身份验证,但这需要两台设备都启用蓝牙,并且可能会被企业 MDM 策略和防火墙拦截。不同浏览器之间的用户体验差异显著,而且用户经常不明白为什么要扫描二维码,因此,具备感知设备的回退路由和清晰的沟通对于企业部署至关重要。
强劲的采用率意味着通行密钥创建率超过符合条件用户的 60%,而通行密钥登录率超过所有登录的 40%。如果在三个月后,创建率低于 10% 且登录率低于 5%,则表明推广正在失败。要衡量这一点,需要专门的基础架构来跟踪创建率、登录成功率、回退率以及按设备和操作系统组合细分的放弃率。
原生实施提供了一流的用户体验,但需要适用于 iOS 和 Android 的独立代码库,包括特定于平台的 API 处理和独立的 QA 流程。WebView 方法共享了 Web 逻辑,但会根据 WebView 类型引入通行密钥支持的不一致性。单在 iOS 上,在 WKWebView、SFSafariViewController 和 ASWebAuthenticationSession 之间的选择就带有不同的通行密钥支持特性,在致力于某个架构之前必须对此进行评估。
简化的恢复(如基于电子邮件的重置)会重新引入容易被网络钓鱼攻击的渠道,而过于严格的恢复(如强制要求硬件安全密钥)则会导致用户放弃。推荐的方法是分层的:将同步的通行密钥作为主要策略,跨设备的二维码身份验证作为第二层,带有活体检测的自动化身份验证作为第三层,数字可验证凭证作为第四层。具体实施哪些层取决于您的威胁模型、用户群和监管要求。
相关文章
目录