Skip to content

Commit 9653019

Browse files
authored
Merge pull request #169 from skiyooka/master
Renew bearer token early and use local timezone
2 parents b135db4 + 81a668f commit 9653019

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

blackduck/Authentication.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ def __init__(self, session, token):
3535
self.access_token = token
3636
self.bearer_token = None
3737
self.csrf_token = None
38-
self.valid_until = datetime.utcnow()
38+
self.valid_until = datetime.now()
3939

4040
def __call__(self, request):
41-
if not self.bearer_token or self.valid_until < datetime.utcnow():
42-
# If bearer token not set or no longer valid
41+
if not self.bearer_token or datetime.now() > self.valid_until - timedelta(minutes=5):
42+
# If bearer token not set or nearing expiry
4343
self.authenticate()
4444

4545
request.headers.update({
@@ -66,8 +66,8 @@ def authenticate(self):
6666
content = response.json()
6767
self.bearer_token = content['bearerToken']
6868
self.csrf_token = response.headers['X-CSRF-TOKEN']
69-
self.valid_until = datetime.utcnow() + timedelta(milliseconds=int(content['expiresInMilliseconds']))
70-
logger.info(f"success: auth granted until {self.valid_until} UTC")
69+
self.valid_until = datetime.now() + timedelta(milliseconds=int(content['expiresInMilliseconds']))
70+
logger.info(f"success: auth granted until {self.valid_until.astimezone()}")
7171
return
7272
except (json.JSONDecodeError, KeyError):
7373
logger.exception("HTTP response status code 200 but unable to obtain bearer token")
@@ -115,11 +115,11 @@ def __init__(self, session, username, password):
115115
self.password = password
116116
self.bearer_token = None
117117
self.csrf_token = None
118-
self.valid_until = datetime.utcnow()
118+
self.valid_until = datetime.now()
119119

120120
def __call__(self, request):
121-
if not self.bearer_token or self.valid_until < datetime.utcnow():
122-
# If bearer token not set or no longer valid
121+
if not self.bearer_token or datetime.now() > self.valid_until - timedelta(minutes=5):
122+
# If bearer token not set or nearing expiry
123123
self.authenticate()
124124

125125
request.headers.update({
@@ -158,8 +158,8 @@ def authenticate(self):
158158
#
159159
# HUB-25720: It is not possible to extend the validity time
160160
# of the bearer token obtained via /j_spring_security_check.
161-
self.valid_until = datetime.utcnow() + timedelta(minutes=120) # token is good for 2 hours
162-
logger.info(f"success: auth granted until {self.valid_until} UTC")
161+
self.valid_until = datetime.now() + timedelta(minutes=120) # token is good for 2 hours
162+
logger.info(f"success: auth granted until {self.valid_until.astimezone()}")
163163
return
164164
except (KeyError, ValueError):
165165
logger.exception("HTTP response status code 204 but unable to obtain bearer token")

0 commit comments

Comments
 (0)