代码之家  ›  专栏  ›  技术社区  ›  AGh

为什么Linux操作系统在使用Yubiky 5通过NFC在webauthn.io上注册和身份验证时存在问题,而它只支持基于usb?

  •  0
  • AGh  · 技术社区  · 2 年前

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

    我试着使用我的Yubiky over omnikey阅读器在Linux操作系统上的chrome浏览器上测试Webauthn.io,但它只要求基于usb的注册,但我想通过nfc进行注册。有什么解决方案吗?

    0 回复  |  直到 2 年前
        1
  •  0
  •   Pro Coder 101    2 年前

    免责声明:我周围没有读卡器,所以我无法测试这个。

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

    现在Yubiky需要能够通过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与Yubiky进行通信。但是你的浏览器仍然不支持NFC。

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

    通常有两种解决方法:

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

    我在铬浏览器上发现了一个叉子,叫做未渗铬,可以使用PCSC。 Ungoogled Chromium Github 。您可以从flatpak安装。首先卸载当前的chrome(如果已安装),然后运行。

    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设备读取。 This repo 给出了一个有前景的方法。 我个人不使用诗歌来安装包装,所以我只会使用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
    

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

    推荐文章