RP-initiated hub logout
Auto-generated from the source archive. Do not edit by hand — rerun
catalyst-changelog-syncinstead.
What changed
Section titled “What changed”- Adds a navigable hub endpoint
GET /api/o-auth/logoutthat clears thehub_sessioncookie and 302-redirects to a validated destination, echoingstate; it is idempotent when no session exists. - Adds a satellite BFF
GET /auth/logoutfaçade that bounces the browser to the hub, and turnsPOST /auth/logoutfrom a no-op stub into a real hub refresh-token revocation — both keeping the hub URL and client secret server-side. - Validates
post_logout_redirect_uriby same-origin against the client’s registered redirect, rejecting cross-origin or non-absolute destinations.
Why it matters
Section titled “Why it matters”Sign-out used to revoke the token pair and clear local storage while the httpOnly hub_session cookie survived — so the next visit to a protected route silently re-authenticated the user, making logout apparent but not real. Now sign-out navigates through the BFF to the hub, which clears the cookie on its own domain, ending the session in both local-provider (same-origin) and aurora-hub (cross-domain) topologies. The frontend never learns the hub URL — the BFF owns it, symmetric to login. Constraining the post-logout redirect to the registered origin keeps the endpoint from becoming an open redirect.