Linux 操作系统中的 Webauthn.io 要求基于 USB 的注册和身份验证。由于某些问题,它不支持 NFC 上的 yubikey。
我尝试在 Linux 操作系统上的 chrome 浏览器上使用我的 yubikey 而不是omnikey reader 在 Webauthn.io 上进行测试,但它只要求基于 USB 的注册,但我想通过 nfc 来完成。有什么解决办法吗?
免责声明:我周围没有读卡器,所以我无法对此进行测试。
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)
通常有两种解决方法:
我遇到了一个名为 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
现在您可以再次使用浏览器进行测试。希望这有效。