比较通过原生应用和 Passkeys 进行二维码登录的两种方式,实现安全便捷的认证。为您的组织找到最佳方法。
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place and passkeys provide a superior solution to achieve that. That's why we want to keep you updated with the latest industry insights here.
安全便捷的认证方法比以往任何时候都更加重要。随着我们每天在不同设备上访问的在线服务越来越多,传统的密码系统正变得效率低下且日益繁琐。特别是对于那些在原生应用(iOS 或 Android 应用)上拥有大量用户的公司而言,这导致了对基于二维码登录的需求日益增长。这种方式提供了一种快速简便的用户认证方法,无需输入复杂的密码甚至用户名。
在这种背景下,出现了以下问题:
Native QR Code Revolut Passkeys QR Code Apple
在原生应用登录中使用二维码的著名例子包括 WhatsApp、TikTok 或 Revolut 等“应用优先”的服务。与此同时,支持 Passkeys 登录的公司名单也在迅速增长。
在本文中,我们将探讨基于二维码的认证技术。我们不会重点讨论用于第二因素初始化的 TOTP 二维码(需要配合 Authy 或 Google Authenticator 等额外应用)。
我们还将比较不同的二维码认证方法,审视它们的优缺点以及潜在的漏洞。
读完本文,您将更清楚地了解基于二维码的认证是否是满足您安全需求的正确选择。
二维码(QR code),即快速响应码,是一种可以存储从 URL 到纯文本等各种信息的二维条码。二维码最初由丰田集团的子公司 Denso Wave 于 1994 年开发,旨在快速高效地追踪汽车零部件。从那时起,二维码不断发展,并因其能在小小的可扫描方块中存储大量数据而应用于各行各业。
“QR Code”一词实际上是 Denso Wave 的商标,尽管该技术本身已被广泛采用,并不受该商标的限制。二维码的特点是其黑白相间的方形图案,可以使用智能手机或专用扫描设备(二维码扫描器)进行扫描,以访问编码信息。
多年来,对二维码的支持已被集成到 iOS 和 Android 等移动操作系统中。这两个平台都通过各自的相机应用原生支持二维码扫描,使用户无需额外软件即可轻松与二维码互动。
通常,与应用结合使用的二维码会利用自定义 URL 或应用链接。这些链接可以触发应用自动打开,如果设备上安装了相应的应用。如果应用未安装,二维码可以将用户引导至相关的应用商店下载并安装该应用,从而提供流畅的用户体验。在这里,您可以看到 Revolut 为应用处理注册的路径列表:
https://revolut.com/.well-known/apple-app-site-association{ "applinks": { "apps": [], "details": [ { "appID": "QUZEZSEARC.com.revolut.revolut", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.test", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.retail.india", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.retail.india-debug", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.invest", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.invest-debug", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.revolutx", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.revolutx-debug", "paths": ["/app/*"] } ] } }
如您所见,所有以“/app/*”开头的链接都会被处理,您将在下一节中看到一个例子。通过在二维码中嵌入自定义 URL 和应用链接,企业和开发者可以创建定制化体验,将用户直接引导至目标应用或服务,从而在用户互动中提升便利性和安全性。
通过原生应用进行二维码登录利用了移动设备摄像头与二维码中嵌入的特定 URL 之间的无缝交互。该过程通常从用户使用智能手机的摄像头扫描网站或另一台设备上显示的二维码开始。该二维码包含一个自定义 URL,专门设计用于与特定的原生应用(例如 iOS 或 Android 设备上的应用)进行交互。
例如,像 Revolut 这样的服务可能会使用一个带有 URL 的二维码,如 https://revolut.com/app/challenges/qr/e2d78521-d38a-4773-b1b8-27a902a36b4b。这个 URL 注定会被用户设备上安装的 Revolut 应用识别。
当扫描二维码时,应用会自动捕获此链接,识别它并显示相应的应用(在上面的例子中,您可以看到“Revolut”被识别为匹配的应用),然后继续在内部处理登录过程。这种交互是通过 iOS 和 Android 都支持的深度链接机制实现的,该机制允许特定链接直接在已安装的应用内打开,而不是在网页浏览器中打开:
如果设备上未安装该应用,操作系统通常会提示用户安装该应用,将他们重定向到相应的应用商店,无论是 iOS 设备的 Apple App Store 还是 Android 设备的 Google Play Store。
这确保了即使用户最初没有安装该应用,他们也可以快速轻松地获取它,并在安装后继续该过程。
在大多数情况下,已经安装了该应用的现有客户将体验到顺畅的登录过程。他们扫描二维码,应用自动打开,认证完成,无需输入用户名或密码。这种方法主要为用户提供了便利,因为在二维码扫描过程中没有传输敏感信息。
技术上发生的是,手机上现有的已登录会话被用来认证桌面上的新会话。有不同的技术可以实现这一点。一个非常精细的版本发布在 WhatsApp 安全白皮书的“客户端注册 → 配套设备注册 → 使用二维码链接”部分。
图片来源 https://engineering.fb.com/2021/07/14/security/whatsapp-multi-device/
由于 WhatsApp 自 2021 年起支持多设备访问和端到端加密,其架构并不完全适用于认证——因为该协议主要是为多设备消息应用设计的。有更简单的方法可以实现安全握手,具体取决于实际的认证实现。需要记住的是,您始终需要确保用户会话和设备与服务器之间通信渠道的安全处理。无论二维码认证登录的实现有多复杂,都应始终遵循一些关键的安全原则:
通过遵循这些最佳实践,公司可以实施既用户友好又安全的基于二维码的认证,利用移动设备的便利性,同时保持强大的安全措施来保护用户数据和会话。
现在让我们来看看通过 Passkeys 进行的二维码登录。
基于 Passkeys 的认证提供了一个安全的跨设备认证系统,该系统已集成到 iOS 和 Android 生态系统中,并在 WebAuthn 标准中进行了规定。目前,只有在 iOS 或 Android 上创建的 Passkeys 可用于通过二维码进行跨设备认证(CDA)。
让我们来分析一下使用 Passkeys 的二维码登录是如何工作的。下图展示了不同步骤的高级概览。
对于 iOS 和 Android,Passkeys 都存储在平台的原生认证器中(例如 Face ID、Touch ID 或 Android 生物识别)。这确保了用户的 Passkeys 在他们登录了相同 Apple ID(对于 iOS)或 Google 帐户(对于 Android)的所有现代操作系统版本的设备上都可用。
在实施基于 Passkeys 的跨设备认证(CDA)时,向用户提供关于该过程的明确指导至关重要。应告知用户将显示一个二维码,并且他们需要使用手机扫描它。
我们认为,重要的是要确保在用户没有可用于 CDA 的 Passkey 时不显示二维码。此外,有必要在显示二维码之前验证用户当前的操作系统和浏览器是否支持 CDA。
为了有效管理这些情况,我们在这篇文章中概述了所有关键案例,因此我们在这里不作详细介绍。我们的 Passkey 智能系统旨在自动处理这些情况,确保仅在适当的时候显示二维码,并引导用户顺利完成认证过程。这确保了在各种设备和操作系统上保持高安全性和兼容性的同时,提供无缝的体验。
在本节中,我们将总结本文讨论的两种主要的基于二维码的登录方法:通过原生应用进行二维码登录和通过 Passkeys 进行二维码登录。每种方法都有其独特的优势,并根据安全性、用户体验和实现复杂性等因素适用于不同的用例。
让我们看看这两种方法的比较以及它们的不同特点:
比较表:通过原生应用进行二维码登录 vs. 通过 Passkeys 进行二维码登录
特性 | 通过原生应用进行二维码登录 | 通过 Passkeys 进行二维码登录 |
---|---|---|
应用要求 | 是,需要原生应用 | 否 |
是否需要推广 Passkeys | 否,独立 | 是,用户需要选择使用 Passkeys |
实现工作量 | 高 | 高 |
防钓鱼多因素认证 | 否 | 是(防钓鱼且为多因素认证) |
邻近检查 | 否 | 是 |
用户体验 | 如果应用已安装,则体验无缝 | 如果存在 Passkey,则体验无缝 |
安全级别 | 中 | 非常高 |
我们在比较表中侧重于基于认证的特性,第三节中概述的相关要求适用于这两种方案。使用 Passkeys 时不需要基于位置和时间的限制,因为它们通过 WebAuthn 采用了防钓鱼和邻近检查机制。
正如引言中所述,我们已经探讨了两种最常见的跨设备认证场景,让我们简要总结一下:
回答我们引言中的问题:
无论当前对哪种解决方案更适合现有认证架构的评估如何,都应记住,Passkeys 是对未来认证方式的一项投资,因为整个生态系统正朝着这个方向明确发展。尽早开始收集 Passkeys 可以与不同的CDA 策略相结合。
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents