fix: add logging to auth_callback for better debugging of OIDC token exchange

This commit is contained in:
Mabe
2026-06-21 17:08:00 +02:00
parent da0196b469
commit 8e395a4966
+15
View File
@@ -1,3 +1,4 @@
import logging
import os
from typing import AsyncGenerator
@@ -20,6 +21,9 @@ app = FastAPI(
version="0.1.0",
)
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
@@ -88,14 +92,25 @@ async def auth_callback(payload: AuthCallbackRequest):
data["client_id"] = settings.oidc_client_id
async with httpx.AsyncClient(timeout=15.0) as client:
logger.debug("Token endpoint: %s", token_endpoint)
logger.debug("Token request data: %s", data)
logger.debug("Using auth: %s", "basic" if auth is not None else "none")
response = await client.post(token_endpoint, data=data, headers={"Accept": "application/json"}, auth=auth)
logger.debug("Token response status: %s", response.status_code)
logger.debug("Token response headers: %s", response.headers)
logger.debug("Token response text: %s", response.text)
# Some providers only accept client authentication via POST body
if response.status_code != 200 and auth is not None:
data_with_secret = dict(data)
data_with_secret["client_id"] = settings.oidc_client_id
data_with_secret["client_secret"] = settings.oidc_client_secret
logger.debug("Retrying with client_secret_post: %s", data_with_secret)
response = await client.post(token_endpoint, data=data_with_secret, headers={"Accept": "application/json"})
logger.debug("Token response status (fallback): %s", response.status_code)
logger.debug("Token response headers (fallback): %s", response.headers)
logger.debug("Token response text (fallback): %s", response.text)
if response.status_code != 200:
raise HTTPException(status_code=400, detail=f"OIDC token exchange failed: {response.text}")