**2. Logout "No, stay signed in" redirects to wrong app (Project A instead of Project B)**
Vấn đề root cause: `client_id` không được gửi trong form body → `resolveRedirectUri` nhận `clientId=undefined` → fallback về `http://localhost:4001` (Project A).
-`oidcRoutes.ts` — POST `/oauth/logout/confirm`: đọc `client_id` từ `req.body` (ưu tiên `req.query`).
**3. `postLogoutSuccessSource` redirect fails after session destroy**
Sau khi logout confirmed, session bị destroy trước khi `postLogoutSuccessSource` chạy → `ctx.oidc.session?.state?.postLogoutRedirectUri` bị undefined → fallback về logout-success page.
Fix: Dùng `ctx.oidc.params.post_logout_redirect_uri` (query string, tồn tại sau session destroy) thay vì `ctx.oidc.session.state.postLogoutRedirectUri`. Validate URI với registered `postLogoutRedirectUris` của client trước khi redirect.