几天后我正在做一个关于 FIDO2/Webauthn 标准的演示,我很高兴在 Yubico 的网站上看到这篇文章,指出苹果已经像 Android 多年来一样通过 NFC 增加了对 FIDO 身份验证的支持。我让我的一些同事在运行 iOS 13.1 的较新设备上访问了各种 Webauthn 测试站点(webauthn.me、webauthn.io 等),但它们都显示错误,指出不支持浏览器(safari 和 chrome )。您是否需要做一些事情来启用此功能,或者我们是否正在等待 Apple 的更新以启用该功能?
4 回答
我们也在等这个。好兆头是在 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 安全密钥的第二因素(即非无用户名/无密码)登录。我自己使用 2 个支持 NFC 的不同 Yubico 键对此进行了测试。
不幸的是,此时通过 WebAuthn API 进行的注册似乎不起作用。它显示了一个 UI 提示以插入或点击该键,但似乎没有任何反应。
也不支持通过 PIN、Touch ID 或 Face ID 将手机本身用作安全密钥。
这仍然是重要的一步,我只能希望 Apple 继续扩展支持的功能集。
更新为在 iOS 上添加 Touch 和 Face ID 的公告:
正如在 WWDC 2020 上宣布的那样,带有 iOS/iPadOS 14 和 macOS Big Sur 的 Safari 支持带有 FaceID 和 TouchID 的 WebAuthn 。
更新:从 iOS 13.3 开始,Safari 中添加了 WebAuthn 支持。使用 NFC、Lightning 或 USB 的 WebAuthn 兼容安全密钥应该适用于 API 的当前实现。我已经能够使用我的 Yubikey 5Ci 使用 Lightning 来验证这一点。
原始答案:目前,iOS/iPadOS 中不支持 WebAuthn API,也没有启用它的方法。据我所知,iOS 上的 FIDO 身份验证目前仅适用于集成了它的应用程序。
在此页面上,您可以确切地看到目前哪些浏览器支持 WebAuthn API(以及任何其他 Web API)。
我在 iPhone 7 上使用 NFC 密钥(FEITAN ePass FIDO -NFC 安全密钥)已经有大约一年的时间了,它使用的是最新的 iOS。此外,Touch ID 在我的 iPhone 7 和 iPad Air 2 上运行良好(没有 Face ID,所以我无法测试)。
关于 Touch ID,使用起来有点棘手。如果您使用回调而不是与要调用的按钮事件相同的线程,则它不会作为在 Safari javascript 中注册的选项navigator.credentials.create({publicKey})
。发现这一点很糟糕!因此,没有“setTimeout(register...)”或使用 Touch ID 启动注册的承诺 (.then/await)。
我使用https://www.npmjs.com/package/fido2-lib作为服务器端的支持库。