无法将 Yubikey 注册为无密码登录的 passkeys

我遇到了一个奇怪的问题 - 我无法在任何 Discourse 论坛上注册 YubiKey(我使用的是 5 系列,有 4 个)。我可以成功注册我的 Android 手机的通行密钥和我的密码管理器的通行密钥。

当我尝试注册 YubiKey 时,总是会收到以下错误:

但是,我的 YubiKey 上会创建一个本地密钥。我使用 ykman fido credentials list 确认了这一点。
image

显然,当我再次尝试登录时,此密钥不起作用。

随后,我尝试在我自己的 Discourse 安装上注册该密钥以检查日志,这是我看到的错误:

COSE::MalformedKeyError (Malformed CBOR key input) lib/discourse_webauthn/registration_service.rb:161:in `extract_public_key_and_credential_from_attestation' lib/discourse_webauthn/registration_servic

我想了解这是否是一个已知问题,因为我在论坛上找不到任何关于 YubiKey 无法正常工作的讨论。如果不是,我很乐意提供任何可能需要的其他详细信息。

2 个赞

不确定 YubiKey 是否适合作为通行密钥,只有生物识别部分?

不过不应该出现错误,我们应该有一些 YubiKey 可以进行测试。@pmusaraj 将协助处理此事。

编辑 生物识别 部分确实可以作为通行密钥。不确定生物识别部分以外的任何部分是否适合作为通行密钥?那样的话你只有一个因素。

2 个赞

您可以在非 Discourse 应用程序(如 Github、Google 或 https://www.passkeys.io/ 等测试实现)中注册这些 YubiKey 吗?

2 个赞

@pmusaraj 是的,我已经成功地在 Google、GitHub、Vercel 以及其他几个服务上注册了它们,并且它们运行正常。

@sam Yubikey Series 5 是一个很好的通行密钥候选者,因为它结合了我所知道的(PIN)和我所拥有的(令牌本身)来用作通行密钥。没有 PIN,它甚至不会列出驻留密钥。生物识别系列用生物识别取代了 PIN。

4 个赞

感谢您检查,@rishabhlakhotia。我在 meta 上的日志中看到了错误,此故障的位置是一个通用安全密钥证明函数,该函数已有四年未进行任何更改。它也用于 2FA 安全密钥流程。

您能否在此处 meta 上将 Yubikey 注册为双因素身份验证安全密钥?

2 个赞

ykman list 的输出是什么?

我的 YubiKey 5 NFC (5.1.2) 在 Meta 上可以正常用作通行密钥。

我已使用 Chromium 注册,并且可以在 Chromium、Firefox 和 Edge 中使用它进行登录。

3 个赞

任何带有驻留密钥的 Yubikey 都应该适用,因为浏览器可以在其上强制执行多重身份验证:既有存在性检查(触摸密钥),也有 Yubikey PIN 设置。

6 个赞

是的,我已经注册了所有四个 Yubikeys 作为安全密钥。为了可能避免任何极端情况,我再次尝试删除其中两个作为安全密钥,然后将它们重新注册为通行密钥,但即使这样也无效。

我使用的是 YubiKey 5C NFC (5.4.3),并且我使用 Chrome 浏览器。

我知道如果一个密钥网站有安全密钥凭证,尝试将其用作通行密钥将会失败,我遇到过这种情况。

但是,删除安全密钥并将其重新注册为通行密钥应该可以工作。

2 个赞

更新:感谢 @supermathie 的回复,我下载了 Firefox 并尝试注册 Yubikey,结果成功了。我能够注册同一个在 Chrome 中报错的密钥。

有趣的是,在 Firefox 上注册后,我能够使用同一个 Yubikey 在 Chrome 上登录。然后我又在 Chrome 上重复了一遍同样的过程,但又出现了同样的错误。

我认为我们可以对问题进行一些缩小范围。

3 个赞

您能否告知我们您尝试过的 Chrome 和 FF 版本?

3 个赞

Chrome 版本 120.0.6099.234 (官方版本) (arm64) 和 Firefox 版本 122.0.1 (64 位)

1 个赞

在 macOS 上使用 Arc Browser(即 Chromium 122.0.6261.57)时,我刚刚遇到了同样的问题,使用的是 YubiKey 5C NFC(5.4.3)和 YubiKey 安全密钥(蓝色的)。

我在 Safari 中也做了同样的操作,一切正常。而且就像您的情况一样,使用这些 Passkeys 在 Chromium 浏览器中也没有出现任何问题。

3 个赞

您好,很高兴找到这个帖子!我之前一直很想在 Discourse 实例上添加我的 YubiKey,但一直不成功——所以我想,嗯,也许这些人是自托管的,并且存在某种配置错误。然后我想我可以在网上搜索一下——看到 meta.discourse.org 似乎 曾经提到过这一点。

不幸的是,我在 Brave (Chromium) 中尝试设置,但和楼主报告的一样,完全失败了。

这是我的设置:

  • macOS Big Sur 11.7.9 (20G1426) 运行在一台老旧的 Apple MacBook Pro 上。
  • YubiKey 5 NFC 固件:5.4.3

浏览器:

  • Brave [Chromium] 版本 1.73.91 Chromium: 131.0.6778.85 (官方构建) (x86_64)
  • Safari: [WebKit] 16.6.1 (16615.3.12.11.5, 16615)
  • Firefox: [Gecko] 133.0
  • Microsoft Edge: [Chromium] 版本 131.0.2903.70 (官方构建) (x86_64)

所以,我启动了 Safari,继续添加一个通行密钥,开始时使用的是软件通行密钥,Safari 和 Discourse 都接受了;然后,我尝试额外添加 YubiKey 5 NFC 作为通行密钥 额外的 2FA 确认——Discourse 在接受所有这些方面都没有问题!

配置完成后,我用 Firefox 测试了一下,立即就能用了;Microsoft Edge 也是如此。然后,当我回到 Brave 时,它 现在 也能毫无问题地使用 YubiKey 了。

看来 Discourse 唯一的问题是与密钥的初始通信(或者更确切地说,是使密钥对浏览器“可见”的任何东西)在基于 Chromium 的浏览器中。一旦该密钥被分配给 Discourse,它就可以被任何其他浏览器轻松接受。我没有在 iOS 上的 Safari 上测试过(YubiKey 5 NFC 肯定也能用),但我严重怀疑在那里也不会有问题。

现在我得回到我之前加入但未成功的许多 Discourse 设置中,看看它们现在是否能用了!:smile_cat:

2 个赞