Fornece funcionalidade de biblioteca para comunicação com um dispositivo FIDO por USB, bem como verificação de atestados e assinaturas de asserção.
Esta biblioteca tem como objetivo suportar os protocolos FIDO U2F e FIDO 2 para comunicação com um autenticador USB através do protocolo Client-to-Authenticator (CTAP 1 e 2). Além desse acesso ao dispositivo de baixo nível, as classes definidas nos módulos fido2.client
e fido2.server
implementam operações de nível superior que são úteis na interface com um autenticador ou na implementação do suporte WebAuthn para uma parte confiável.
Para uso, consulte o diretório examples/
.
Estes links relacionados ao WebAuthn e FIDO2 podem ajudá-lo a começar:
Guia Yubico WebAuthn/FIDO2: https://developers.yubico.com/FIDO2/
Especificação W3C WebAuthn: https://www.w3.org/TR/webauthn/
Especificações FIDO: https://fidoalliance.org/specifications/download/
Este projeto, com exceção dos arquivos mencionados abaixo, está licenciado sob a licença BSD de 2 cláusulas. Consulte o arquivo COPYING para obter o texto completo da licença.
Este projeto contém código-fonte do pyu2f (https://github.com/google/pyu2f) que está licenciado sob a Licença Apache, versão 2.0. Esses arquivos estão localizados em fido2/hid/
. Consulte http://www.apache.org/licenses/LICENSE-2.0 ou o arquivo COPYING.APLv2 para obter o texto completo da licença.
Este projeto também agrupa a lista pública de sufixos (https://publicsuffix.org) que está licenciada sob a Licença Pública Mozilla, versão 2.0. Este arquivo é armazenado como fido2/public_suffix_list.dat
. Consulte https://mozilla.org/MPL/2.0/ ou o arquivo COPYING.MPLv2 para obter o texto completo da licença.
fido2 é compatível com Python 3.7 e posterior e é testado em Windows, MacOS e Linux. O suporte para OpenBSD, FreeBSD e NetBSD é fornecido no estado em que se encontra e depende das contribuições da comunidade.
fido2 pode ser instalado executando o seguinte comando:
pip instalar fido2
Para instalar as dependências necessárias para comunicação com autenticadores NFC, use:
pip instalar fido2[pcsc]
No Windows 10 (1903 ou posterior), o acesso aos dispositivos FIDO é restrito e requer execução como Administrador. Esta biblioteca ainda pode ser usada quando executada como não administrador, por meio da classe fido.client.WindowsClient
. Um exemplo disso está incluído no arquivo examples/credential.py
.
No Linux você precisará adicionar uma regra Udev para poder acessar o dispositivo FIDO ou executar como root. Por exemplo, a regra Udev pode conter o seguinte:
Regra #Udev para permitir acesso HID a dispositivos Yubico para suporte FIDO. KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050"
Pode já existir um pacote disponível para sua distribuição que faça isso para você, veja: https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux
No FreeBSD você precisará executar como root ou adicionar regras para o seu dispositivo em /etc/devd.conf, que podem ser automatizadas instalando security/u2f-devd:
# pacote instala u2f-devd
Este projeto depende de criptografia. Para obter instruções sobre como instalar esta dependência, consulte https://cryptography.io/en/latest/installation/.
O suporte NFC está opcionalmente disponível via PC/SC, usando a biblioteca pyscard. Para obter instruções sobre como instalar esta dependência, consulte https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md.
Para o desenvolvimento da biblioteca utilizamos poesia. Para configurar o ambiente de desenvolvimento, execute este comando no diretório raiz do repositório:
instalação de poesia
Também usamos o pré-commit para executar algumas varreduras no código antes do commit.
Embora muitos testes possam ser executados sozinhos, alguns requerem um dispositivo U2F ou FIDO2 conectado para serem executados.
poesia executa pytest