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.