Bietet Bibliotheksfunktionen für die Kommunikation mit einem FIDO-Gerät über USB sowie für die Überprüfung von Attestierungs- und Assertionssignaturen.
Ziel dieser Bibliothek ist es, die Protokolle FIDO U2F und FIDO 2 für die Kommunikation mit einem USB-Authentifikator über das Client-to-Authenticator-Protokoll (CTAP 1 und 2) zu unterstützen. Zusätzlich zu diesem Gerätezugriff auf niedriger Ebene implementieren in den Modulen fido2.client
und fido2.server
definierte Klassen Vorgänge auf höherer Ebene, die bei der Schnittstelle mit einem Authentifikator oder bei der Implementierung der WebAuthn-Unterstützung für eine vertrauende Partei nützlich sind.
Informationen zur Verwendung finden Sie im Verzeichnis examples/
.
Diese Links zu WebAuthn und FIDO2 können Ihnen den Einstieg erleichtern:
Yubico WebAuthn/FIDO2-Leitfaden: https://developers.yubico.com/FIDO2/
W3C WebAuthn-Spezifikation: https://www.w3.org/TR/webauthn/
FIDO-Spezifikationen: https://fidoalliance.org/specifications/download/
Dieses Projekt ist mit Ausnahme der unten genannten Dateien unter der BSD-2-Klausel-Lizenz lizenziert. Den vollständigen Lizenztext finden Sie in der COPYING- Datei.
Dieses Projekt enthält Quellcode von pyu2f (https://github.com/google/pyu2f), der unter der Apache-Lizenz, Version 2.0, lizenziert ist. Diese Dateien befinden sich in fido2/hid/
. Den vollständigen Lizenztext finden Sie unter http://www.apache.org/licenses/LICENSE-2.0 oder in der Datei COPYING.APLv2 .
Dieses Projekt bündelt auch die öffentliche Suffixliste (https://publicsuffix.org), die unter der Mozilla Public License, Version 2.0, lizenziert ist. Diese Datei wird als fido2/public_suffix_list.dat
gespeichert. Den vollständigen Lizenztext finden Sie unter https://mozilla.org/MPL/2.0/ oder in der Datei COPYING.MPLv2 .
fido2 ist mit Python 3.7 und höher kompatibel und wurde unter Windows, MacOS und Linux getestet. Die Unterstützung für OpenBSD, FreeBSD und NetBSD wird unverändert bereitgestellt und ist auf Beiträge der Community angewiesen.
fido2 kann durch Ausführen des folgenden Befehls installiert werden:
pip install fido2
Um die für die Kommunikation mit NFC-Authentifikatoren erforderlichen Abhängigkeiten zu installieren, verwenden Sie stattdessen:
pip install fido2[pcsc]
Unter Windows 10 (1903 oder höher) ist der Zugriff auf FIDO-Geräte eingeschränkt und erfordert die Ausführung als Administrator. Diese Bibliothek kann weiterhin über die Klasse fido.client.WindowsClient
verwendet werden, wenn sie als Nicht-Administrator ausgeführt wird. Ein Beispiel hierfür ist in der Datei examples/credential.py
enthalten.
Unter Linux müssen Sie eine Udev-Regel hinzufügen, um auf das FIDO-Gerät zugreifen oder es als Root ausführen zu können. Die Udev-Regel kann beispielsweise Folgendes enthalten:
#Udev-Regel zum Gestatten des HID-Zugriffs auf Yubico-Geräte zur FIDO-Unterstützung. KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050"
Möglicherweise ist für Ihre Distribution bereits ein Paket verfügbar, das dies für Sie erledigt, siehe: https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux
Unter FreeBSD müssen Sie entweder als Root ausführen oder Regeln für Ihr Gerät zu /etc/devd.conf hinzufügen, was durch die Installation von security/u2f-devd automatisiert werden kann:
# pkg installiere u2f-devd
Dieses Projekt basiert auf Kryptographie. Anweisungen zur Installation dieser Abhängigkeit finden Sie unter https://cryptography.io/en/latest/installation/.
NFC-Unterstützung ist optional über PC/SC unter Verwendung der Pyscard-Bibliothek verfügbar. Anweisungen zur Installation dieser Abhängigkeit finden Sie unter https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md.
Für die Entwicklung der Bibliothek nutzen wir Poesie. Um die Entwicklungsumgebung einzurichten, führen Sie diesen Befehl im Stammverzeichnis des Repositorys aus:
Poesieinstallation
Wir verwenden Pre-Commit auch, um vor dem Commit einige Scans des Codes durchzuführen.
Während viele Tests eigenständig ausgeführt werden können, erfordern einige zur Ausführung ein angeschlossenes U2F- oder FIDO2-Gerät.
Poesie führt Pytest aus