JSON Web Token library for Python 3.
Project description
python-jwt
python-jwt is a JSON Web Token (JWT) implementation in Python developed by Gehirn Inc.
Examples
import json
from datetime import datetime, timedelta, timezone
from jwt import (
JWT,
jwk_from_dict,
jwk_from_pem,
)
from jwt.utils import get_int_from_datetime
instance = JWT()
message = {
'iss': 'https://example.com/',
'sub': 'yosida95',
'iat': get_int_from_datetime(datetime.now(timezone.utc)),
'exp': get_int_from_datetime(
datetime.now(timezone.utc) + timedelta(hours=1)),
}
"""
Encode the message to JWT(JWS).
"""
# Load a RSA key from a JWK dict.
signing_key = jwk_from_dict({
'kty': 'RSA',
'e': 'AQAB',
'n': '...',
'd': '...'})
# Or load a RSA key from a PEM file.
with open('rsa_private_key.pem', 'rb') as fh:
signing_key = jwk_from_pem(fh.read())
# You can also load an octet key in the same manner as the RSA.
# signing_key = jwk_from_dict({'kty': 'oct', 'k': '...'})
compact_jws = instance.encode(message, signing_key, alg='RS256')
"""
Decode the JWT with verifying the signature.
"""
# Load a public key from PEM file corresponding to the signing private key.
with open('rsa_public_key.json', 'r') as fh:
verifying_key = jwk_from_dict(json.load(fh))
message_received = instance.decode(
compact_jws, verifying_key, do_time_check=True)
"""
Successfuly retrieved the `message` from the `compact_jws`
"""
assert message == message_received
Installation
You can install python-jwt with pip.
$ pip install jwt
Implementation Details
Supported Algorithms
Unsecured
none (disabled by default for security)
Symmetric
HS256
HS384
HS512
Asymmetric
PS256
PS384
PS512
RS256
RS384
RS512
Supported Python Versions
Python 3.6+
License
python-jwt is licensed under the Apache License version 2. See ./LICENSE.rst.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jwt-1.4.0.tar.gz
(24.9 kB
view details)
Built Distribution
jwt-1.4.0-py3-none-any.whl
(18.2 kB
view details)
File details
Details for the file jwt-1.4.0.tar.gz
.
File metadata
- Download URL: jwt-1.4.0.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
f6f789128ac247142c79ee10f3dba6e366ec4e77c9920d18c1592e28aa0a7952
|
|
MD5 |
5dc46cd3fc8e1e0c8eb25f39be5558a1
|
|
BLAKE2b-256 |
7f2021254c9e601e6c29445d1e8854c2a81bdb554e07a82fb1f9846137a6965c
|
File details
Details for the file jwt-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: jwt-1.4.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
7560a7f1de4f90de94ac645ee0303ac60c95b9e08e058fb69f6c330f71d71b11
|
|
MD5 |
6e6ec1072548464b8fe8979485ec521a
|
|
BLAKE2b-256 |
b98034e3fae850adb0b7b8b9b1cf02b2d975fcb68e0e8eb7d56d6b4fc23f7433
|