Skip to main content

JSON Web Token library for Python 3.

Project description

https://travis-ci.org/GehirnInc/python-jwt.svg?branch=master https://coveralls.io/repos/GehirnInc/python-jwt/badge.png?branch=master https://badge.fury.io/py/jwt.svg?dummy

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_jwt_fork-1.3.1.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

python_jwt_fork-1.3.1-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

Details for the file python_jwt_fork-1.3.1.tar.gz.

File metadata

  • Download URL: python_jwt_fork-1.3.1.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for python_jwt_fork-1.3.1.tar.gz
Algorithm Hash digest
SHA256 e3c7b44d87c32535e535219c82bfd845f1e1bb32fa9489a72c03dfc88bc02513
MD5 f95de62a6288d3345d085e79b154bc5c
BLAKE2b-256 6fb3001de3519b885c2facc9ed3d5914913411e47958cd04fa95ed30fb0c0e43

See more details on using hashes here.

File details

Details for the file python_jwt_fork-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_jwt_fork-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 107cba53f81e9a70ef9e29501aa208ceecfe6a64a90100881b7e31dc47f09d7c
MD5 656d9d930ba3ea1f5dffaa785291a1c9
BLAKE2b-256 6b1f89529657764496b199ca8ea5a4e19caf8bb180f80d85bc9b8f79cb0c8649

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page