为什么 Linux 操作系统在使用 yubikey 5 通过 NFC 在 webauthn.io 上注册和身份验证时出现问题,而它仅支持基于 USB 的连接?

问题描述 投票:0回答:1

Linux 操作系统中的 Webauthn.io 要求基于 USB 的注册和身份验证。由于某些问题,它不支持 NFC 上的 yubikey。

我尝试在 Linux 操作系统上的 chrome 浏览器上使用我的 yubikey 而不是omnikey reader 在 Webauthn.io 上进行测试,但它只要求基于 USB 的注册,但我想通过 nfc 来完成。有什么解决办法吗?

linux nfc fido yubico yubikey
1个回答
0
投票

免责声明:我周围没有读卡器,所以我无法对此进行测试。

Linux 系统出现 webauthn 问题的原因可能有多种。第一个可能是支持您的 webauthn 是否通过 PCSC。 PCSC 代表个人计算机/智能卡。它是智能卡集成到计算环境中的规范。 Linux 系统使用 PCSC 的 pcsclite 实现,我假设您已经安装了。

现在 Yubikey 需要能够通过 PCSC 进行 Webauthn 通信。这是由 libfido2 控制的。您可以安装它,也可以从源代码构建它。我个人建议从源代码构建最新版本。

您需要从 apt 安装以下依赖项:

sudo apt-get install git make cmake gcc build-essential libcbor-dev libudev-dev libpcsclite libssl-dev libfido2-doc fido2-tools

然后您需要克隆 libfido2 存储库,构建并安装它

git clone https://github.com/Yubico/libfido2
cd libfido2
cmake -B build
make -C build
sudo make -C build install

现在您可以重新启动系统以使最新版本的 libfido2 正常工作。

现在第二个问题出现了。您的系统现在可以通过 NFC 上的 PCSC 与 Yubikey 进行通信。但您的浏览器仍然不支持 NFC。

这是所有主要浏览器(如 Chrome、Chromium、Firefox)的问题。(参见此处 Stackoverflow

通常有两种解决方法:

  1. 获取支持的浏览器
  2. 让浏览器将 YubiKey 读取为 USB 设备,即使它处于 NFC 状态

我遇到了一个名为 ungoogled-chromium 的 chromium 浏览器分支,它可以允许使用 PCSC。 未通过谷歌搜索 Chromium Github。您可以从 flatpak 安装它。首先卸载当前的 chromium(如果已安装),然后运行。

sudo apt-get install flatpak
sudo flatpak install com.github.Eloston.UngoogledChromium

现在您可以通过以下方式启用 PCSC

flatpak kill com.github.Eloston.UngoogledChromium
flatpak override --user com.github.Eloston.UngoogledChromium --socket=pcsc

现在您可以尝试测试您的 YubiKey。

现在,第二种方法是将 YubiKey 桥接为 USB 设备来读取。 这个存储库提供了一种有前途的方法。 我个人不使用诗歌来安装软件包,所以我只会使用 pip3。

pip3 install cffi cryptography pyscard pycparser uhid fido2 fido2[pcsc]
sudo pip3 install cffi cryptography pyscard pycparser uhid fido2 fido2[pcsc]

现在克隆存储库并运行它

git clone https://github.com/BryanJacobs/fido2-hid-bridge
cd fido-hid-bridge
sudo python3 bridge.py

现在您可以再次使用浏览器进行测试。希望这有效。

© www.soinside.com 2019 - 2024. All rights reserved.