google-chrome - Chrome 中 CTAP2 (FIDO2) 协议的不完整实现?
问题描述
我一直在研究使用 Google Chrome 实现 CTAP2 协议(Fido Authenticator 和 Fido 客户端(例如 Chrome)之间的协议),Chrome从版本 69 起应该支持该协议。
所以我在两种情况下将 chrome 请求转储给了身份验证器:
1. U2F (CTAP1) 与yubico 演示网站。
这里一切都按预期进行,chrome 遵循CTAP1 协议。
2. FIDO2/Webauthn (CTAP2) 与webauthn.org
浏览器有一个奇怪的行为:
- 它首先通过发送 AuthenticatorGetInfoRequest 遵循 CTAP2 协议
- Authenticator 回复 AuthenticatorGetInfoResponse
- 但随后 Chrome 通过发送注册请求消息 (U2F_REGISTER) 切换到 CTAP1 协议
Chrome 实现是否有问题:CTAP2 尚未完全启用(它似乎在 Chromium 源代码中实现)?
还是来自身份验证器的问题:发送使 Chrome 切换到 CTAP1 的响应?
还是完全不同的东西?
解决方案
在 AuthenticatorGetInfoRequest 中,验证者必须以“U2F_V2”和“FIDO_2_0”之间的支持版本的字符串列表进行响应。还要注意,在 NFC 或 CCID 的情况下,仅“FIDO_2_0”(CTAP2)的身份验证器应在 SELECT 命令上直接回答“FIDO_2_0”。我不知道 HID 和 BLE。
因此,也许您的身份验证器在 AuthenticatorGetInfoRequest 的协议版本列表中列出了“U2F_V2”。
我还想象有关这方面的 Chrome 代码库正在快速发展,可能是部分的或不严格的。根据我在 2020 年初的测试,Chrome CTAP 功能现在看起来稳定且合规。
推荐阅读
- weblate - 使用 weblate 翻译软件以外的内容
- ios - 关于Swift在一个viewController中创建多个collectionView问题的问题
- jsxgraph - 如何修复 jsxgraph 代码绘制正多边形?
- android-fragments - error: incompatible types: SearchFragment cannot be converted to Fragment
- sharepoint - 放置图像并在图像顶部放置 wiki 页面
- java - Cant compile java code in linux mint, i think java is not properly installed
- regex - How to accept . in url regex and still exclude the format
- powershell - 通过用户名搜索最终用户的 ipaddress
- java - How to insert random numbers into an array and sort them
- c++ - How can I have my array stop reading in characters when the enter key is pressed?