Skip to content

Commit c23e49c

Browse files
fix: Check for and remove expired tokens before using them (#228)
1 parent a315d17 commit c23e49c

File tree

3 files changed

+34
-33
lines changed

3 files changed

+34
-33
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ __pycache__/
44
*~
55
_venv
66
venv
7+
.venv
78
dist
89
build
910
*.egg-info/

src/sumo/wrapper/_auth_provider.py

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import stat
55
import sys
66
import time
7-
from datetime import datetime, timedelta
7+
from datetime import datetime, timedelta, timezone
88
from urllib.parse import parse_qs
99

1010
import jwt
@@ -91,35 +91,6 @@ def store_shared_access_key_for_case(self, case_uuid, token):
9191
protect_token_cache(self._resource_id, ".sharedkey", case_uuid)
9292
return
9393

94-
def cleanup_shared_keys(self):
95-
tokendir = get_token_dir()
96-
if not os.path.exists(tokendir):
97-
return
98-
for f in os.listdir(tokendir):
99-
ff = os.path.join(tokendir, f)
100-
if os.path.isfile(ff):
101-
(name, ext) = os.path.splitext(ff)
102-
if ext.lower() == ".sharedkey":
103-
try:
104-
with open(ff, "r") as file:
105-
token = file.read()
106-
pq = parse_qs(token)
107-
se = pq["se"][0]
108-
end = datetime.strptime(
109-
se, "%Y-%m-%dT%H:%M:%S.%fZ"
110-
)
111-
now = datetime.utcnow()
112-
if now > end:
113-
os.unlink(ff)
114-
pass
115-
pass
116-
pass
117-
except Exception:
118-
pass
119-
pass
120-
pass
121-
return
122-
12394
def has_case_token(self, case_uuid):
12495
return os.path.exists(
12596
get_token_path(self._resource_id, ".sharedkey", case_uuid)
@@ -487,3 +458,31 @@ def get_auth_provider(
487458
]
488459
):
489460
return AuthProviderManaged(resource_id)
461+
462+
463+
def cleanup_shared_keys():
464+
tokendir = get_token_dir()
465+
if not os.path.exists(tokendir):
466+
return
467+
for f in os.listdir(tokendir):
468+
ff = os.path.join(tokendir, f)
469+
if os.path.isfile(ff):
470+
(name, ext) = os.path.splitext(ff)
471+
if ext.lower() == ".sharedkey":
472+
try:
473+
with open(ff, "r") as file:
474+
token = file.read()
475+
pq = parse_qs(token)
476+
se = pq["se"][0]
477+
end = datetime.strptime(se, "%Y-%m-%dT%H:%M:%S.%fZ")
478+
now = datetime.now(timezone.utc)
479+
if now.timestamp() > end.timestamp():
480+
os.unlink(ff)
481+
pass
482+
pass
483+
pass
484+
except Exception:
485+
pass
486+
pass
487+
pass
488+
return

src/sumo/wrapper/sumo_client.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import httpx
77
import jwt
88

9-
from ._auth_provider import get_auth_provider
9+
from ._auth_provider import cleanup_shared_keys, get_auth_provider
1010
from ._blob_client import BlobClient
1111
from ._decorators import (
1212
raise_for_status,
@@ -94,6 +94,9 @@ def __init__(
9494
refresh_token = token
9595
pass
9696
pass
97+
98+
cleanup_shared_keys()
99+
97100
self.auth = get_auth_provider(
98101
client_id=APP_REGISTRATION[env]["CLIENT_ID"],
99102
authority=f"{AUTHORITY_HOST_URI}/{TENANT_ID}",
@@ -105,8 +108,6 @@ def __init__(
105108
case_uuid=case_uuid,
106109
)
107110

108-
self.auth.cleanup_shared_keys()
109-
110111
if env == "localhost":
111112
self.base_url = "http://localhost:8084/api/v1"
112113
else:

0 commit comments

Comments
 (0)