56 lines
1.2 KiB
Python
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'}
|
|
"""
|