提供用于通过 USB 与 FIDO 设备通信以及验证证明和断言签名的库功能。
该库旨在支持 FIDO U2F 和 FIDO 2 协议,以便通过客户端到身份验证器协议(CTAP 1 和 2)与 USB 身份验证器进行通信。除了这种低级设备访问之外, fido2.client
和fido2.server
模块中定义的类还实现了更高级别的操作,这些操作在与身份验证器交互或为依赖方实现 WebAuthn 支持时非常有用。
使用方法请参见examples/
目录。
这些与 WebAuthn 和 FIDO2 相关的链接可以帮助您入门:
Yubico WebAuthn/FIDO2 指南:https://developers.yubico.com/FIDO2/
W3C WebAuthn 规范:https://www.w3.org/TR/webauthn/
FIDO 规范:https://fidoalliance.org/specifications/download/
该项目(除下面提到的文件外)均根据 BSD 2 条款许可证获得许可。请参阅复制文件以获取完整的许可证文本。
该项目包含 pyu2f (https://github.com/google/pyu2f) 的源代码,该代码根据 Apache 许可证 2.0 版获得许可。这些文件位于fido2/hid/
中。请参阅 http://www.apache.org/licenses/LICENSE-2.0 或COPYING.APLv2文件以获取完整的许可证文本。
该项目还捆绑了公共后缀列表 (https://publicsuffix.org),该列表已根据 Mozilla 公共许可证 2.0 版获得许可。该文件存储为fido2/public_suffix_list.dat
。请参阅 https://mozilla.org/MPL/2.0/ 或COPYING.MPLv2文件以获取完整的许可证文本。
fido2 与 Python 3.7 及更高版本兼容,并在 Windows、MacOS 和 Linux 上进行了测试。对 OpenBSD、FreeBSD 和 NetBSD 的支持按原样提供,并依赖于社区贡献。
fido2 可以通过运行以下命令进行安装:
pip 安装 fido2
要安装与 NFC 身份验证器通信所需的依赖项,请改用:
pip 安装 fido2[pcsc]
在 Windows 10(1903 或更高版本)下,对 FIDO 设备的访问受到限制,并且需要以管理员身份运行。当以非管理员身份运行时,仍然可以通过fido.client.WindowsClient
类使用该库。文件examples/credential.py
中包含一个示例。
在 Linux 下,您需要添加 Udev 规则才能访问 FIDO 设备,或以 root 身份运行。例如,Udev 规则可能包含以下内容:
#Udev 规则,允许 HID 访问 Yubico 设备以获得 FIDO 支持。 KERNEL==“hidraw*”,SUBSYSTEM==“hidraw”, 模式=“0664”,组=“plugdev”,ATTRS {idVendor}==“1050”
您的发行版可能已经有一个软件包可以为您执行此操作,请参阅:https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux
在 FreeBSD 下,您需要以 root 身份运行,或者将设备规则添加到 /etc/devd.conf,这可以通过安装 security/u2f-devd 来自动化:
# pkg 安装 u2f-devd
该项目依赖于密码学。有关安装此依赖项的说明,请参阅 https://cryptography.io/en/latest/installation/。
可以使用 pyscard 库通过 PC/SC 选择提供 NFC 支持。有关安装此依赖项的说明,请参阅 https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md。
为了图书馆的发展,我们使用诗歌。要设置开发环境,请在存储库的根目录中运行以下命令:
诗歌装置
我们还使用预提交在提交之前对代码运行一些扫描。
虽然许多测试可以单独运行,但有些测试需要连接的 U2F 或 FIDO2 设备才能运行。
诗歌运行 pytest