首页 > 解决方案 > 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

浏览器有一个奇怪的行为:

Chrome 实现是否有问题:CTAP2 尚未完全启用(它似乎在 Chromium 源代码中实现)?

还是来自身份验证器的问题:发送使 Chrome 切换到 CTAP1 的响应?

还是完全不同的东西?

标签: google-chromechromiumfido-u2fwebauthnfido

解决方案


在 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 功能现在看起来稳定且合规。


推荐阅读