Guide

This section provides a quick overview of how to get started with joserfc and perform encoding and decoding a JWT.

Encode and decode JWT

>>> from joserfc import jwt
>>> from joserfc.jwk import OctKey
>>> key = OctKey.import_key("secret")
>>> encoded_jwt = jwt.encode({"alg": "HS256"}, {"key": "value"}, key)
>>> encoded_jwt
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ2YWx1ZSJ9.FG-8UppwHaFp1LgRYQQeS6EDQF7_6-bMFegNucHjmWg'
>>> token = jwt.decode(encoded_jwt, key)
>>> token.header
{'alg': 'HS256', 'typ': 'JWT'}
>>> token.claims
{'key': 'value'}
>>> claims_requests = jwt.JWTClaimsRegistry()
>>> claims_requests.validate(token.claims)

Learn the details of JSON Web Token in the next chapter.

Import and generate JWK

>>> from joserfc.jwk import RSAKey
>>> rsa_key = RSAKey.generate_key(512)
>>> rsa_key.as_pem(private=True)
b'-----BEGIN PRIVATE KEY-----\n....'
>>> rsa_key.as_pem(private=False)
b'-----BEGIN PUBLIC KEY-----\n...'
>>> rsa_key.as_dict(private=False)
{
  'n': 's6DoAL_A4EZ9pQFemuFtUPxjuPxyZC_1_...',
  'e': 'AQAB', 'kty': 'RSA', 'kid': 'Y9-Lx9yk...'
}
>>> from joserfc.jwk import RSAKey
>>> f = open("your-rsa-key.pem")
>>> pem_data = f.read()
>>> pem_data
'-----BEGIN PUBLIC KEY-----\n...'
>>> rsa_key = RSAKey.import_key(pem_data)
>>> rsa_key.as_pem()
b'-----BEGIN PUBLIC KEY-----\n...'

Learn the details of JSON Web Key in the next chapter.

Dive deep

Next, learn each module in details.

JSON Web Key

Learn how to use OctKey, RSAKey, ECKey, OKPKey, and JSON Web Key Set.

JSON Web Key
JSON Web Token

JSON Web Token (JWT) is built on top of JSON Web Signature or JSON Web Encryption.

JSON Web Token
JSON Web Signature

Most JSON Web Token are encoded with JWS in compact serialization.

JSON Web Signature
JSON Web Encryption

JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.

JSON Web Encryption