Skip to content

Commit 84d2ac2

Browse files
committed
Cleaning up token decoding
1 parent 6650a63 commit 84d2ac2

1 file changed

Lines changed: 21 additions & 11 deletions

File tree

bluesky_httpserver/_authentication.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,25 @@ async def decode_token(token, secret_keys, proxied_authenticator=None):
146146
detail="Could not validate credentials",
147147
headers={"WWW-Authenticate": "Bearer"},
148148
)
149-
proxied_decoder = (
150-
proxied_authenticator.decode_token if proxied_authenticator is not None else None
151-
)
152-
return await auth_tokens.decode_token(
153-
token,
154-
secret_keys,
155-
proxied_decoder=proxied_decoder,
156-
credentials_exception=credentials_exception,
149+
payload = auth_tokens.decode_token_with_secret_keys(token, secret_keys)
150+
if payload is not None:
151+
return payload
152+
if proxied_authenticator is not None:
153+
return await proxied_authenticator.decode_token(token)
154+
raise credentials_exception
155+
156+
157+
def decode_token_sync(token, secret_keys):
158+
"""Sync-only decode for app-minted tokens (no proxied path needed)."""
159+
credentials_exception = HTTPException(
160+
status_code=401,
161+
detail="Could not validate credentials",
162+
headers={"WWW-Authenticate": "Bearer"},
157163
)
164+
payload = auth_tokens.decode_token_with_secret_keys(token, secret_keys)
165+
if payload is not None:
166+
return payload
167+
raise credentials_exception
158168

159169

160170
def _extract_scopes(decoded_access_token: dict[str, Any]) -> set[str]:
@@ -432,7 +442,7 @@ async def get_current_principal_websocket(
432442
return None
433443

434444
try:
435-
principal = get_current_principal(
445+
principal = await get_current_principal(
436446
request=websocket,
437447
security_scopes=security_scopes,
438448
access_token=access_token,
@@ -1173,9 +1183,9 @@ def revoke_session(
11731183
return JSONResponse(status_code=200, content={"success": True, "msg": ""})
11741184

11751185

1176-
async def slide_session(refresh_token, settings, db, api_access_manager):
1186+
def slide_session(refresh_token, settings, db, api_access_manager):
11771187
try:
1178-
payload = await decode_token(refresh_token, settings.secret_keys)
1188+
payload = decode_token_sync(refresh_token, settings.secret_keys)
11791189
except ExpiredSignatureError:
11801190
raise HTTPException(status_code=401, detail="Session has expired. Please re-authenticate.")
11811191
# Find this session in the database.

0 commit comments

Comments
 (0)