fix(auth): enforce Keycloak access token age

This commit is contained in:
2026-08-05 17:15:53 +08:00
parent 41bf5e9d92
commit 78135c8a50
4 changed files with 58 additions and 3 deletions
+12 -2
View File
@@ -1,4 +1,4 @@
# import logging
import time
from uuid import UUID
from fastapi import Depends, HTTPException, status
@@ -23,12 +23,22 @@ def _decode_keycloak_token(token: str) -> dict:
key = settings.KEYCLOAK_PUBLIC_KEY.replace("\\n", "\n")
return jwt.decode(
payload = jwt.decode(
token,
key,
algorithms=[settings.KEYCLOAK_ALGORITHM],
audience=settings.KEYCLOAK_AUDIENCE or None,
)
if settings.KEYCLOAK_ACCESS_TOKEN_MAX_AGE_SECONDS <= 0:
return payload
issued_at = payload.get("iat")
if not isinstance(issued_at, (int, float)) or (
time.time() >= issued_at + settings.KEYCLOAK_ACCESS_TOKEN_MAX_AGE_SECONDS
):
raise JWTError("Keycloak access token is older than the allowed maximum age")
return payload
async def get_current_keycloak_payload(