# 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 {'payload': 'data', 'iss': 'hein', 'aud': 'learn-python'} Invalid audience Invalid issuer Invalid audience {'payload': 'data', 'iss': 'hein', 'aud': 'learn-python'} """