Fournit une fonctionnalité de bibliothèque pour communiquer avec un périphérique FIDO via USB ainsi que pour vérifier les signatures d'attestation et d'assertion.
Cette bibliothèque a pour objectif de prendre en charge les protocoles FIDO U2F et FIDO 2 pour communiquer avec un authentificateur USB via le Protocole Client-to-Authenticator (CTAP 1 et 2). En plus de cet accès de bas niveau aux appareils, les classes définies dans les modules fido2.client
et fido2.server
implémentent des opérations de niveau supérieur qui sont utiles lors de l'interface avec un authentificateur ou lors de l'implémentation du support WebAuthn pour une partie de confiance.
Pour l'utilisation, voir le répertoire examples/
.
Ces liens liés à WebAuthn et FIDO2 peuvent vous aider à démarrer :
Guide Yubico WebAuthn/FIDO2 : https://developers.yubico.com/FIDO2/
Spécification WebAuthn du W3C : https://www.w3.org/TR/webauthn/
Spécifications FIDO : https://fidoalliance.org/spécifications/download/
Ce projet, à l'exception des fichiers mentionnés ci-dessous, est sous licence BSD 2 clauses. Voir le fichier COPIE pour le texte complet de la licence.
Ce projet contient le code source de pyu2f (https://github.com/google/pyu2f) qui est sous licence Apache, version 2.0. Ces fichiers se trouvent dans fido2/hid/
. Voir http://www.apache.org/licenses/LICENSE-2.0 ou le fichier COPYING.APLv2 pour le texte complet de la licence.
Ce projet regroupe également la liste de suffixes publics (https://publicsuffix.org) qui est sous licence Mozilla Public License, version 2.0. Ce fichier est stocké sous fido2/public_suffix_list.dat
. Voir https://mozilla.org/MPL/2.0/ ou le fichier COPYING.MPLv2 pour le texte complet de la licence.
fido2 est compatible avec Python 3.7 et versions ultérieures et est testé sur Windows, MacOS et Linux. La prise en charge d'OpenBSD, FreeBSD et NetBSD est fournie telle quelle et repose sur les contributions de la communauté.
fido2 peut être installé en exécutant la commande suivante :
pip installer fido2
Pour installer les dépendances nécessaires à la communication avec les authentificateurs NFC, utilisez plutôt :
pip installer fido2[pcsc]
Sous Windows 10 (1903 ou version ultérieure), l'accès aux appareils FIDO est restreint et nécessite une exécution en tant qu'administrateur. Cette bibliothèque peut toujours être utilisée lors de l'exécution en tant que non-administrateur, via la classe fido.client.WindowsClient
. Un exemple de ceci est inclus dans le fichier examples/credential.py
.
Sous Linux vous devrez ajouter une règle Udev pour pouvoir accéder au périphérique FIDO, ou l'exécuter en tant que root. Par exemple, la règle Udev peut contenir les éléments suivants :
Règle #Udev pour autoriser l'accès HID aux appareils Yubico pour la prise en charge FIDO. KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050"
Il existe peut-être déjà un package disponible pour votre distribution qui fait cela pour vous, voir : https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux
Sous FreeBSD, vous devrez soit exécuter en tant que root, soit ajouter des règles pour votre appareil dans /etc/devd.conf, qui peuvent être automatisées en installant security/u2f-devd :
# paquet d'installation u2f-devd
Ce projet dépend de la cryptographie. Pour obtenir des instructions sur l'installation de cette dépendance, consultez https://cryptography.io/en/latest/installation/.
La prise en charge NFC est disponible en option via PC/SC, en utilisant la bibliothèque pyscard. Pour obtenir des instructions sur l'installation de cette dépendance, consultez https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md.
Pour le développement de la bibliothèque, nous utilisons la poésie. Pour configurer l'environnement de développement, exécutez cette commande dans le répertoire racine du référentiel :
installation de poésie
Nous utilisons également le pré-commit pour exécuter des analyses sur le code avant de le valider.
Bien que de nombreux tests puissent s'exécuter seuls, certains nécessitent un appareil U2F ou FIDO2 connecté pour s'exécuter.
pytest de poésie