mirror of
https://github.com/clearml/clearml
synced 2025-02-07 21:33:25 +00:00
Fix PyJWT v2.0 token parsing
This commit is contained in:
parent
20fa70b33a
commit
a4126bab01
@ -172,7 +172,7 @@ class Session(TokenManager):
|
|||||||
|
|
||||||
# update api version from server response
|
# update api version from server response
|
||||||
try:
|
try:
|
||||||
token_dict = jwt.decode(self.token, verify=False)
|
token_dict = TokenManager.get_decoded_token(self.token)
|
||||||
api_version = token_dict.get('api_version')
|
api_version = token_dict.get('api_version')
|
||||||
if not api_version:
|
if not api_version:
|
||||||
api_version = '2.2' if token_dict.get('env', '') == 'prod' else Session.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)
|
Session.api_version = str(api_version)
|
||||||
except (jwt.DecodeError, ValueError):
|
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
|
# 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
|
# we do that here, so if we have problems authenticating, we see them immediately
|
||||||
|
@ -68,12 +68,17 @@ class TokenManager(object):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_token_exp(cls, token):
|
def get_decoded_token(cls, token):
|
||||||
""" Get token expiration time. If not present, assume forever """
|
""" Get token expiration time. If not present, assume forever """
|
||||||
return jwt.decode(
|
return jwt.decode(
|
||||||
token, verify=False,
|
token, verify=False,
|
||||||
options=dict(verify_signature=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):
|
def _set_token(self, token):
|
||||||
if token:
|
if token:
|
||||||
|
Loading…
Reference in New Issue
Block a user