API Reference
- jwt.encode(payload, key, algorithm='HS256', headers=None, json_encoder=None)
Encode the
payloadas JSON Web Token.- Parameters:
payload (dict) – JWT claims, e.g.
dict(iss=..., aud=..., sub=...)key (str or bytes or jwt.PyJWK) –
a key suitable for the chosen algorithm:
for asymmetric algorithms: PEM-formatted private key, a multiline string
for symmetric algorithms: plain string, sufficiently long for security
algorithm (str) – algorithm to sign the token with, e.g.
"ES256". Ifheadersincludesalg, it will be preferred to this parameter. Ifkeyis ajwt.PyJWKobject, by default the key algorithm will be used.headers (dict) – additional JWT header fields, e.g.
dict(kid="my-key-id").json_encoder (json.JSONEncoder) – custom JSON encoder for
payloadandheaders
- Return type:
- Returns:
a JSON Web Token
- jwt.decode(jwt, key='', algorithms=None, options=None, audience=None, issuer=None, leeway=0)
Verify the
jwttoken signature and return the token claims.- Parameters:
jwt (str) – the token to be decoded
key (str or bytes or jwt.PyJWK) – the key suitable for the allowed algorithm
algorithms (list) –
allowed algorithms, e.g.
["ES256"]Ifkeyis ajwt.PyJWKobject, allowed algorithms will default to the key algorithm.Warning
Do not compute the
algorithmsparameter based on thealgfrom the token itself, or on any other data that an attacker may be able to influence, as that might expose you to various vulnerabilities (see RFC 8725 §2.1). Instead, either hard-code a fixed value foralgorithms, or configure it in the same place you configure thekey. Make sure not to mix symmetric and asymmetric algorithms that interpret thekeyin different ways (e.g. HS* and RS*).options (dict) –
extended decoding and validation options
verify_signature=Trueverify the JWT cryptographic signaturerequire=[]list of claims that must be present. Example:require=["exp", "iat", "nbf"]. Only verifies that the claims exists. Does not verify that the claims are valid.verify_aud=verify_signaturecheck thataud(audience) claim matchesaudienceverify_iss=verify_signaturecheck thatiss(issuer) claim matchesissuerverify_exp=verify_signaturecheck thatexp(expiration) claim value is in the futureverify_iat=verify_signaturecheck thatiat(issued at) claim value is an integerverify_nbf=verify_signaturecheck thatnbf(not before) claim value is in the paststrict_aud=Falsecheck that theaudclaim is a single value (not a list), and matchesaudienceexactly
Warning
exp,iatandnbfwill only be verified if present. Please pass respective value torequireif you want to make sure that they are always present (and therefore always verified ifverify_exp,verify_iat, andverify_nbfrespectively is set toTrue).audience (Union[str, Iterable]) – optional, the value for
verify_audcheckissuer (str) – optional, the value for
verify_isscheckleeway (float) – a time margin in seconds for the expiration check
- Return type:
- Returns:
the JWT claims
- class jwt.PyJWK
A class that represents a JSON Web Key.
- __init__(self, jwk_data, algorithm=None)
- static from_json(data, algorithm=None)
- Parameters:
- Returntype:
jwt.PyJWK
Create a
jwt.PyJWKobject from a JSON string.
- property Algorithm
The
Algorithmclass associated with the key.
- jwt.api_jwt.decode_complete(jwt, key='', algorithms=None, options=None, audience=None, issuer=None, leeway=0)
Identical to
jwt.decodeexcept for return value which is a dictionary containing the token header (JOSE Header), the token payload (JWT Payload), and token signature (JWT Signature) on the keys “header”, “payload”, and “signature” respectively.- Parameters:
jwt (str) – the token to be decoded
key (str) – the key suitable for the allowed algorithm
algorithms (list) –
allowed algorithms, e.g.
["ES256"]Warning
Do not compute the
algorithmsparameter based on thealgfrom the token itself, or on any other data that an attacker may be able to influence, as that might expose you to various vulnerabilities (see RFC 8725 §2.1). Instead, either hard-code a fixed value foralgorithms, or configure it in the same place you configure thekey. Make sure not to mix symmetric and asymmetric algorithms that interpret thekeyin different ways (e.g. HS* and RS*).options (dict) –
extended decoding and validation options
verify_signature=Trueverify the JWT cryptographic signaturerequire=[]list of claims that must be present. Example:require=["exp", "iat", "nbf"]. Only verifies that the claims exists. Does not verify that the claims are valid.verify_aud=verify_signaturecheck thataud(audience) claim matchesaudienceverify_iss=verify_signaturecheck thatiss(issuer) claim matchesissuerverify_exp=verify_signaturecheck thatexp(expiration) claim value is in the futureverify_iat=verify_signaturecheck thatiat(issued at) claim value is an integerverify_nbf=verify_signaturecheck thatnbf(not before) claim value is in the paststrict_aud=Falsecheck that theaudclaim is a single value (not a list), and matchesaudienceexactly
Warning
exp,iatandnbfwill only be verified if present. Please pass respective value torequireif you want to make sure that they are always present (and therefore always verified ifverify_exp,verify_iat, andverify_nbfrespectively is set toTrue).audience (Iterable) – optional, the value for
verify_audcheckissuer (str) – optional, the value for
verify_isscheckleeway (float) – a time margin in seconds for the expiration check
- Return type:
- Returns:
Decoded JWT with the JOSE Header on the key
header, the JWS Payload on the keypayload, and the JWS Signature on the keysignature.
Note
TODO: Document PyJWS class
Exceptions
- class jwt.exceptions.InvalidTokenError
Base exception when
decode()fails on a token
- class jwt.exceptions.DecodeError
Raised when a token cannot be decoded because it failed validation
- class jwt.exceptions.InvalidSignatureError
Raised when a token’s signature doesn’t match the one provided as part of the token.
- class jwt.exceptions.ExpiredSignatureError
Raised when a token’s
expclaim indicates that it has expired
- class jwt.exceptions.InvalidAudienceError
Raised when a token’s
audclaim does not match one of the expected audience values
- class jwt.exceptions.InvalidIssuerError
Raised when a token’s
issclaim does not match the expected issuer
- class jwt.exceptions.InvalidIssuedAtError
Raised when a token’s
iatclaim is non-numeric
- class jwt.exceptions.ImmatureSignatureError
Raised when a token’s
nbforiatclaims represent a time in the future
- class jwt.exceptions.InvalidKeyError
Raised when the specified key is not in the proper format
- class jwt.exceptions.InvalidAlgorithmError
Raised when the specified algorithm is not recognized by PyJWT
- class jwt.exceptions.MissingRequiredClaimError
Raised when a claim that is required to be present is not contained in the claimset