2021-10-28 17:39:56 +05:30

56 lines
1.2 KiB
Python

# jwt/claims_auth.py
import jwt
data = {'payload': 'data', 'iss': 'hein', 'aud': 'learn-python'}
secret = 'secret-key'
token = jwt.encode(data, secret)
def decode(token, secret, issuer=None, audience=None):
try:
print(jwt.decode(token, secret, issuer=issuer,
audience=audience, algorithms=["HS256"]))
except (
jwt.InvalidIssuerError, jwt.InvalidAudienceError
) as err:
print(err)
print(type(err))
decode(token, secret)
# not providing the issuer won't break
decode(token, secret, audience='learn-python')
# not providing the audience will break
decode(token, secret, issuer='hein')
# both will break
decode(token, secret, issuer='wrong', audience='learn-python')
decode(token, secret, issuer='hein', audience='wrong')
decode(token, secret, issuer='hein', audience='learn-python')
"""
$ python jwt/claims_time.py
Invalid audience
<class 'jwt.exceptions.InvalidAudienceError'>
{'payload': 'data', 'iss': 'hein', 'aud': 'learn-python'}
Invalid audience
<class 'jwt.exceptions.InvalidAudienceError'>
Invalid issuer
<class 'jwt.exceptions.InvalidIssuerError'>
Invalid audience
<class 'jwt.exceptions.InvalidAudienceError'>
{'payload': 'data', 'iss': 'hein', 'aud': 'learn-python'}
"""