Fix PyJWT v2.0 token parsing

This commit is contained in:
allegroai 2021-01-13 13:58:19 +02:00
parent 20fa70b33a
commit a4126bab01
2 changed files with 10 additions and 4 deletions

View File

@ -172,7 +172,7 @@ class Session(TokenManager):
# update api version from server response
try:
token_dict = jwt.decode(self.token, verify=False)
token_dict = TokenManager.get_decoded_token(self.token)
api_version = token_dict.get('api_version')
if not api_version:
api_version = '2.2' if token_dict.get('env', '') == 'prod' else Session.api_version
@ -182,7 +182,8 @@ class Session(TokenManager):
Session.api_version = str(api_version)
except (jwt.DecodeError, ValueError):
pass
(self._logger or get_logger()).warning(
"Failed parsing server API level, defaulting to {}".format(Session.api_version))
# now setup the session reporting, so one consecutive retries will show warning
# we do that here, so if we have problems authenticating, we see them immediately

View File

@ -68,12 +68,17 @@ class TokenManager(object):
return 0
@classmethod
def _get_token_exp(cls, token):
def get_decoded_token(cls, token):
""" Get token expiration time. If not present, assume forever """
return jwt.decode(
token, verify=False,
options=dict(verify_signature=False),
algorithms=get_default_algorithms()).get('exp', sys.maxsize)
algorithms=get_default_algorithms())
@classmethod
def _get_token_exp(cls, token):
""" Get token expiration time. If not present, assume forever """
return cls.get_decoded_token(token).get('exp', sys.maxsize)
def _set_token(self, token):
if token: