A Python3 implementation of the WebAuthn API focused on making it easy to leverage the power of WebAuthn.
This library supports all FIDO2-compliant authenticators, including security keys, Touch ID, Face ID, Windows Hello, Android biometrics...and pretty much everything else.
This module is available on PyPI:
pip install webauthn
- Python 3.8 and up
The library exposes just a few core methods on the root webauthn
module:
generate_registration_options()
verify_registration_response()
generate_authentication_options()
verify_authentication_response()
Two additional helper methods are also exposed:
options_to_json()
base64url_to_bytes()
Additional data structures are available on webauthn.helpers.structs
. These Pydantic-powered dataclasses are useful for constructing inputs to the methods above, and for providing type hinting to help ensure consistency in the shape of data being passed around.
See examples/registration.py for practical examples of using generate_registration_options()
and verify_registration_response()
.
You can also run these examples with the following:
# See "Development" below for venv setup instructions
venv $> python -m examples.registration
See examples/authentication.py for practical examples of using generate_authentication_options()
and verify_authentication_response()
.
You can also run these examples with the following:
# See "Development" below for venv setup instructions
venv $> python -m examples.authentication
Set up a virtual environment, and then install the project's requirements:
$> python3 -m venv venv
$> source venv/bin/activate
venv $> pip install -r requirements.txt
Python's unittest module can be used to execute everything in the tests/ directory:
venv $> python -m unittest