几天后我将做一个关于 FIDO2/Webauthn 标准的演讲,我很高兴在 Yubico 的网站上看到这篇文章,指出 Apple 已经增加了对 FIDO 身份验证的支持,就像 Android 多年来一样。我让我的一些同事在运行 iOS 13.1 的较新设备上访问了各种 Webauthn 测试站点(webauthn.me、webauthn.io 等),但他们都显示错误,指出不支持浏览器(Safari 和 chrome )。您是否需要执行某些操作才能启用此功能,或者我们是否正在等待 Apple 的更新以启用该功能?
问题陈述:
我想使用FIDO2协议(通过提供SDK)解决Android应用程序上的用户身份验证,而不需要为同一设备上的不同应用程序执行多个注册仪式。例如,如果用户已在 Android 应用程序 A 中注册(生成公私密钥对),则不应要求他/她在 Android 应用程序 B 中注册(假设应用程序 A 和应用程序 B 在同一设备上) 。
可能的解决方案是什么(据我所知):-
我想继续使用解决方案 1,因为解决方案 2 可能并不理想,因为它需要下载额外应用程序(身份验证应用程序)的额外步骤。
我现在能够实现什么: - 我们能够通过维护应用程序 A 和应用程序 B 的单独私钥来对应用程序 A 和应用程序 B 的用户进行无密码身份验证。
我想知道以下场景的可行性? 我想对应用程序 A 和应用程序 …
authentication google-identity android-security webauthn fido
Apple 和 Google 都在其开发者大会(Google I/O和Apple WWDC 2022 )上演示了Passkeys,微软也参与其中。能够在设备之间传输密钥消除了 FIDO2/WebAuthn 的主要限制,并且可能会成为突破。
然而,苹果和谷歌在他们的演示中展示了在带有用户名和密码的帐户之上的密钥设置。创建密钥后,无需密码即可登录。
我不是 android 开发人员,并且一直专注于 android 的事情。我希望这里有人可以帮助我。
我正在我的网站上实施 WebAuthn/FIDO2,它与浏览器完美配合。但是当我在我的 android 应用程序 (android.webkit.webview) 中打开我的网站时,它给了我错误
I/chromium: [INFO:CONSOLE(136)] "Got error-NotSupportedError: The user agent does not support public key credentials."
Run Code Online (Sandbox Code Playgroud)
我在我的网站中使用的代码示例类似于:
navigator.credentials.create({ publicKey })
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中打开https://webauthn.io/,显示“当前不支持此浏览器”
我们不能以某种方式更新 webView 吗?
我使用的是 sdk 版本(API 26,Android 8.0 oreao)
有什么解决方法吗?
提前致谢!
我正在构建一个使用Webauthn进行无密码登录的站点。目前,这在适用于 Windows 和 macOS 的 Chrome 上运行良好。
我正在使用 YubiKey 5 来测试我的实现,它支持使用 PIN 来提供用户验证,而不仅仅是简单的用户状态(即用户触摸按键的按钮)。

但是,当我尝试在 Android 9 上的 Chrome 76 上使用同一个站点时,系统不会提示我输入 pin,因此未设置用户验证标志,并且我的登录(按设计)失败。
Google 在 Android 7+ 兼容 FIDO2 方面做了大量工作,但除了一篇提到以下内容的过时文章外,我似乎找不到任何提及此关键缺失功能的内容:
我们还致力于开发由 CTAP 2 和 WebAuthn 支持的更高级流程,例如受 PIN 保护的身份验证器、本地帐户选择(而不是输入用户名或密码)和指纹注册。
现已支持指纹注册;即使 Windows 和 macOS 版本的 Chrome 76 支持,是否仍然不支持受 PIN 保护的身份验证器?
这是我呼吁的相关部分navigator.credentials.create(),应该要求用户验证:
"authenticatorSelection": {"requireResidentKey": false, "userVerification": "required"}
Run Code Online (Sandbox Code Playgroud) 看看是不是只有我,或者W3C 规范没有说这应该已经发生了:-
1.2.2. 验证
在笔记本电脑或台式机上:
用户通过蓝牙将手机与笔记本电脑或台式机配对。
用户在浏览器中导航到 example.com 并开始登录。
用户从浏览器收到一条消息,“请在您的手机上完成此操作。”
接下来,在他们的手机上:
用户会看到一个离散的提示或通知,“登录 example.com”。
用户选择此提示/通知。
向用户显示他们的 example.com 身份列表,例如,“以 Mohamed 身份登录/以 ?? 身份登录”。
用户选择一个身份,提示输入授权手势(PIN、生物识别等)并提供此信息。
现在,回到笔记本电脑上:
网页显示所选用户已登录,并导航到登录页面。
================
我的 WebAuthn 代码愉快地与 Windows Hello 交互以通过 PIN 进行用户验证。我的三星 Android 手机愉快地与https://webauthn.appspot.com演示交互并接受指纹验证。
但是我似乎无法将手机用作安全密钥,就像连接到计算机上的 YubiKey 一样?
我可以通过蓝牙将其与 PC 配对或使用 USB 电缆将其连接起来,但 Windows 不会将其识别为安全密钥。
这是可能的,还是功能受到限制?如果我们可以使用我们的手机作为安全密钥,我们就不需要特殊的加密狗来进行平台不可知的身份验证。
我正在尝试在 Android 上实现 FIDO2。我的域上托管有 assetlinks.json(抱歉,我不想也不确定是否允许透露整个网址)。我定义了 asset_statements 字符串并将其添加到我的清单中,并且还实现了整个获取注册质询逻辑,其中我从 PublicKeyCredentialCreateOptions 创建待处理意图。启动意图后,我看到一个白色屏幕,它显示并关闭得非常快,没有任何描述性错误或任何东西,我不知道如何调试这个问题。日志显示:
ActivityTaskManager: Displayed com.google.android.gms/.fido.fido2.ui.Fido2FullScreenActivity
E/Fido: [DigitalAssetsAssociationChecker] JSON Object doesn't have linked key
E/Fido: [Fido2RequestController] The incoming request cannot be validated
E/Fido: [Fido2RequestController] The incoming request cannot be validated
Run Code Online (Sandbox Code Playgroud)
在https://developers.google.com/digital-asset-links/tools/generator上,它说我的域授予应用程序深度链接到我的包名称。
我在用com.google.android.gms:play-services-fido:18.1.0
日志中的错误没有任何帮助,我不确定我是否仍然遗漏了一些东西,任何帮助将不胜感激。
例如,在此 WebAuthn 演示页面上创建的: https: //webauthnworks.github.io/FIDO2WebAuthnSeries/WebAuthnIntro/UsernamelessExample.html
我在苹果论坛上发现了类似的问题但没有答案:https ://developer.apple.com/forums/thread/681638
我正在寻找使用 CTAP2 规范将智能手机设置为身份验证器的用例/场景。
我正在寻找用户设置浏览器以与智能手机交互的用例,就像使用 Yubikey 或其他类似的安全密钥时一样。我已阅读与其相关的所有文档,但不幸的是我总是收到一篇使用 Yubikeys/其他 USB 设备作为身份验证器的文章。我期待着手机作为漫游验证器进行一些交互。
通过从概念上查看文档和 CTAP 规范,我知道这可以通过在手机和主机之间建立某种连接来完成:
建立连接后,移动认证器可以执行 CTAP2 协议,以便浏览器将其视为漫游认证器。我也期待看到使用某些支持 BLE 的设备进行身份验证过程。我已经尝试在网站上使用 yubikey 安全密钥登录。但我想使用蓝牙启用 Thetis BLE 密钥或手机本身来实现相同的流程登录机制。
任何见解都会非常有帮助。我也期待从事此特定用例的人们能够进行相互讨论。
Chrome 中提供的虚拟身份验证器扩展(虚拟身份验证器选项卡)用于测试/调试 FIDO2 Webauthn 身份验证机制,而无需使用物理身份验证器密钥。这在自动化测试中很有用,例如通过 Selenium。
我尝试使用虚拟身份验证器选项卡扩展设置 Google 帐户两步验证。但是 Google 不允许我们从虚拟身份验证器选项卡扩展中注册 FIDO 密钥。