Introduction¶
JSON Web Token (JWT) Authentication module for CircuitPython. JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
- This library currently supports the following signature algorithms for JWT generation and verification:
 - No encoding (“none”)
 - RS256/SHA-256 (via Adafruit_CircuitPython_RSA)
 - RS384/SHA-384 (via Adafruit_CircuitPython_RSA)
 - RS512/SHA-512 (via Adafruit_CircuitPython_RSA)
 
Dependencies¶
This driver depends on:
Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle.
Installing from PyPI¶
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally from PyPI. To install for current user:
pip3 install adafruit-circuitpython-jwt
To install system-wide (this may be required in some cases):
sudo pip3 install adafruit-circuitpython-jwt
To install in a virtual environment in your current project:
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install adafruit-circuitpython-jwt
Usage Example¶
Generating encoded JWT
import adafruit_jwt
# Import Private RSA key from a secrets.py file
try:
    from secrets import secrets
except ImportError:
    print("WiFi secrets are kept in secrets.py, please add them there!")
    raise
# Create JWT Claims
claims = {"iss": "joe",
        "exp": 1300819380,
        "name": "John Doe",
        "admin": True}
# Generate JWT, sign with RSA private key and RS-256
encoded_jwt = adafruit_jwt.JWT.generate(
    claims, secrets["private_key"], algo="RS256")
print("Encoded JWT: ", encoded_jwt)
Validating a generated JWT, encoded_jwt.
import adafruit_jwt
decoded_jwt = adafruit_jwt.JWT.validate(encoded_jwt)
# The decoded JWT's JOSE header and claims set are returned as a tuple
print('JOSE Header: {}\nJWT Claims: {}'.format(decoded_jwt[0], decoded_jwt[1]))
Contributing¶
Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.
Documentation¶
For information on building library documentation, please check out this guide.