fix: improve error handling and logging in OIDC token exchange and redirect callback

This commit is contained in:
Mabe
2026-06-21 17:25:46 +02:00
parent c2f8c36bbb
commit fd9f9a13ba
2 changed files with 14 additions and 5 deletions
+5 -1
View File
@@ -115,7 +115,11 @@ async def auth_callback(payload: AuthCallbackRequest):
if response.status_code != 200: if response.status_code != 200:
raise HTTPException(status_code=400, detail=f"OIDC token exchange failed: {response.text}") raise HTTPException(status_code=400, detail=f"OIDC token exchange failed: {response.text}")
return response.json() result = response.json()
logger.debug("OIDC token exchange result keys: %s", list(result.keys()))
if "access_token" not in result:
logger.warning("OIDC token response missing access_token; may return only id_token or an opaque token")
return result
@app.post("/chat", response_class=StreamingResponse) @app.post("/chat", response_class=StreamingResponse)
async def chat(request: ChatRequest, token=Depends(validate_token)): async def chat(request: ChatRequest, token=Depends(validate_token)):
+9 -4
View File
@@ -166,12 +166,16 @@ async function handleRedirectCallback(): Promise<string | null> {
const result = await response.json() const result = await response.json()
const token = result.access_token || result.id_token const token = result.access_token || result.id_token
if (response.ok && token) { console.debug('OIDC callback result:', result)
setLocalToken(token) if (!response.ok) {
return token throw new Error(result.error_description || 'OIDC callback failed')
}
if (!token) {
throw new Error('OIDC callback did not return an access token')
} }
throw new Error(result.error_description || 'OIDC callback failed') setLocalToken(token)
return token
} }
function App() { function App() {
@@ -207,6 +211,7 @@ function App() {
) )
async function login() { async function login() {
clearLocalToken()
try { try {
const config = await fetchOIDCConfig() const config = await fetchOIDCConfig()
const state = generateUUID() const state = generateUUID()