Webauthn 在 iOS/Safari 上的状态如何?

What is the status of Webauthn on iOS/Safari?

几天后我正在做一个关于 FIDO2/Webauthn 标准的演示,我很高兴在 Yubico 的网站上看到 this article 声明苹果已经通过 NFC 添加了对 FIDO 身份验证的支持,例如 Android 已经有很多年了。我让我的一些同事在较新的设备 运行 iOS 13.1 上访问了各种 Webauthn 测试站点(webauthn.me、webauthn.io 等),但它们都显示错误声明不支持浏览器(safari 和 chrome)。您是否需要做些什么才能启用此功能,或者我们是否正在等待 Apple 的更新以启用此功能?

更新: 从 iOS 13.3 开始,在 Safari 中添加了 WebAuthn 支持。使用 NFC、Lightning 或 USB 的 WebAuthn 兼容安全密钥应该可以与 API 的当前实现一起使用。我已经能够使用我的 Yubikey 5Ci 和 Lightning 来验证这一点。

原回答: 目前,iOS/iPadOS 中不支持 WebAuthn API,也没有启用它的方法。据我所知,iOS 上的 FIDO 身份验证目前仅适用于已集成它的应用程序。

this page 上,您可以确切地看到目前哪些浏览器支持 WebAuthn API(以及任何其他网络 API)。

我们也在等待。好兆头是在 13 中添加的新 NFC 写入支持。WebAuthn JavaScript API 也作为实验性功能在 Safari 中可用 - 它只是不执行任何操作 FIDO2/CTAP2东西还没。

我完全希望在不久的将来看到本机支持(使用 NFC、Lightning 和内置 PIN/Touch/Face ID)——特别是考虑到 Apple 已加入此功能并在桌面 Safari 中提供支持不错

问题是什么时候...

编辑添加 2019 年 12 月 15 日:

自 2019 年 12 月 10 日起,iOS 13.3 上的 Safari 支持使用 NFC、Lightning 或 USB 安全密钥的第二因素(即不是 usernameless/passwordless)登录。我已经使用支持 NFC 的 2 个不同的 Yubico 密钥自己对此进行了测试。

不幸的是,目前似乎无法通过 WebAuthn API 进行注册。它显示 UI 提示插入或点击按键,但似乎没有任何反应。

也不支持通过 PIN、Touch ID 或 Face ID 使用 phone 本身作为安全密钥。

这仍然是重要的一步,我只能希望 Apple 继续扩展支持的功能集。

文章在这里:https://www.yubico.com/2019/12/native-support-for-webauthn-and-fido-is-finally-here-on-iphones-and-ipads/

已更新以在 iOS 上添加触摸和面容 ID 公告:

https://developer.apple.com/videos/play/wwdc2020/10670/

具有 iOS/iPadOS 14 和 macOS Big Sur 的 Safari 支持具有 FaceID 和 TouchID 的 WebAuthn,如 announced at the WWDC 2020

我的 iPhone 7 使用 NFC 密钥(FEITAN ePass FIDO -NFC 安全密钥)大约一年,使用的是最新的 iOS。此外,Touch ID 在我的 iPhone 7 和 iPad Air 2 上运行良好(没有 Face ID,所以我无法测试)。

关于Touch ID,使用起来有点棘手。如果您使用回调而不是与按钮事件相同的线程来调用 navigator.credentials.create({publicKey}),则它不会作为在 Safari javascript 中注册的选项出现。发现这一点是令人讨厌的!因此,没有“setTimeout(register...)”或承诺 (.then/await) 使用 Touch ID 启动注册。

我在服务器端使用 https://www.npmjs.com/package/fido2-lib 作为后备库。