Skip to content

feat: sign out at the provider too (RP-initiated logout) - #7

Merged
dskripchenko merged 1 commit into
mainfrom
feat/rp-logout
Oct 14, 2026
Merged

dskripchenko merged 1 commit into
mainfrom
feat/rp-logout

Conversation

@dskripchenko

Copy link
Copy Markdown
Owner

Leaving the panel after an SSO sign-in ends the provider's session too.

  • Flow\SignOut: end_session_endpoint + id_token_hint + post_logout_redirect_uri (the panel's login page) + client_id; null for a password sign-in, a deleted/switched-off provider, or no end_session_endpoint.
  • Registered per panel through the core's Admin::logoutRedirect() — needs laravel-admin 1.51 (feat(auth): logoutRedirect hook — sign out at the identity provider too laravel-admin#74); CI stays red until that is released.
  • Provider switch sign_out_at_provider (migration, on by default), hint shows the post-logout redirect URIs.
  • Tests: fake provider (4 cases) and the Keycloak job: Keycloak accepts the sign-out, 302 back to /admin/login, and the next sign-in shows the login form again (verified locally against Keycloak 26.4).
  • Docs ×4 languages.

🤖 Generated with Claude Code

After an SSO sign-in, the panel's sign-out sends the browser to the
provider's end_session_endpoint with id_token_hint, post_logout_redirect_uri
(the panel's login page) and client_id — through the core's
Admin::logoutRedirect() hook (laravel-admin 1.51). A per-provider switch,
sign_out_at_provider, on by default. The Keycloak CI job checks it end to
end.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@dskripchenko
dskripchenko merged commit 2664098 into main Oct 14, 2026
12 of 24 checks passed
@dskripchenko
dskripchenko deleted the feat/rp-logout branch October 14, 2026 12:17
@dskripchenko dskripchenko mentioned this pull request Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant