Authorized assessment of SSO single logout (SLO) and cross-app session propagation: IdP/SP logout, front- vs back-channel termination, RP-initiated logout, refresh-token and cookie invalidation, and residual sessions after “logout everywhere.” Use when SSO logout, SLO, end_session, LogoutRequest, or peer apps staying signed in after logout appear in scope.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Authorized assessment of SSO single logout (SLO) and cross-app session propagation: IdP/SP logout, front- vs back-channel termination, RP-initiated logout, refresh-token and cookie invalidation, and residual sessions after “logout everywhere.” Use when SSO logout, SLO, end_session, LogoutRequest, or peer apps staying signed in after logout appear in scope.
SSO Logout Propagation (Authorized Assessment)
Methodology for single logout, logout propagation, and residual sessions across IdP and relying parties (SPs/RPs). Focus: whether logout at one place ends sessions and tokens elsewhere — not login-time crypto (hand those off).
When To Use
Situation
Direction
“Log out”, “Sign out everywhere”, SSO portal exit, multi-app suite logout
Graph: User → App A / App B / API → IdP. State which edges logout claims to cut.
2. Baseline multi-session setup
With test user V only: open concurrent sessions (App A, App B or second profile, optional mobile/API with refresh token). Record canaries (whoami, account page) and hash/last-4 of SIDs or refresh ids. Without concurrent sessions, propagation failure is not demonstrable.
3. RP-initiated logout (app-first)
From App A, trigger normal logout:
Check
Secure expectation
Weak signal
Local App A session
Cookie cleared and server record destroyed
Client clear only; SID still valid if replayed
IdP SSO session
Ended when product claims global logout
Silent SSO re-enters App A
App B session
Ended if SLO advertised
App B still serves V’s canary
Access / refresh tokens
AT rejected or short residual; RT revoked
RT still mints AT
post_logout_redirect_uri
Exact allowlist
Open redirect after logout
Replay pre-logout Cookie/Bearer from a second client. Finding: server still accepts it after “logout.”
4. IdP-initiated / global logout
From IdP “sign out” / “all applications”: note front-channel hits to each RP logout URL (missing RPs matter); if back-channel exists, check logout token verification (iss, aud, sid, signature). Retest App A, App B, and API.
Secure baseline: every registered V session dies, or docs clearly scope logout to “this app only” (then residual peers are not a bug — document expected behavior). Finding: UI claims “all apps” but peer RP or refresh token survives.
5. Protocol-specific SLO probes
OIDC/OAuth:end_session without id_token_hint/sid (wrong session or no-op?); weak post_logout_redirect_uri; revoke endpoint coverage (one RT vs siblings); front-channel iframe ignored; GET logout without binding (logout CSRF — integrity/availability note). Login redirect/state/PKCE → oauth-oidc-misconfiguration.
SAML: unsigned or attacker-signed LogoutRequest/LogoutResponse accepted?; SP clears local session but never notifies IdP (or inverse). Login signature/Audience/ACS → saml-sso-basics; keep this skill on logout message acceptance and teardown.
6. Propagation gaps
Gap
Test
Offline mobile / closed tab
Logout elsewhere; reopen later still authed?
Shared subdomain cookies
Logout on app. leaves admin. valid
Secondary tokens
remember-me, WS ticket, impersonation cookie
Privilege cookies
MFA/step-up cookie survives primary logout
Race
Parallel API during logout still 200?
Missing regenerate-on-login → session-fixation-management; here: invalidate on logout.
7. Remediation (report-ready)
Server-destroy sessions; clear cookies with matching flags; revoke refresh grants; complete SLO (OIDC front/back-channel; SAML SLO with signed requests and correct SessionIndex/NameID); exact-match post_logout_redirect_uri; verify back-channel logout tokens; honest product scope (“this app” vs “everywhere”); CSRF protection on state-changing logout; retest concurrent sessions. Pair implementation with code-quality-standards.