fix: improve error handling and logging in OIDC token exchange and redirect callback
This commit is contained in:
+5
-1
@@ -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)):
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user