Admin console login (helix-console client)¶
The Helix admin console signs in through a standard OpenID Connect client — helix-console —
using the authorization code flow with PKCE, exactly like any other application you register. This
means an admin's console login is a real single sign-on session: it appears on the Sessions
screen and can be ended with Single Logout, the same as Keycloak's security-admin-console.
How it works¶
- Opening the console with no session redirects the browser to
/realms/{realm}/oauth2/authorize?client_id=helix-console&…(authorization code + PKCE). - You sign in on the normal login page (the same page as before — it is shown inside the authorize redirect, so you still enter your password once).
- The console completes the token exchange at
/realms/{realm}/oauth2/token. That exchange is what registers the SSO session (the OIDCsid), so the login now shows on the Sessions screen. - Admin API calls (
/admin/**) continue to use the session cookie established during login — the token exchange only registers the session; it does not change how the admin API is authorized.
Sign-out performs RP-initiated logout (/realms/{realm}/connect/logout) so both the cookie session
and the SSO session end together.
Seeding & configuration¶
helix-console is seeded automatically in every realm at startup and whenever a realm is
created — no manual registration. It is a public client (no secret, PKCE required) with scopes
openid profile.
Its redirect URI, web origin, and post-logout URI are derived from a single setting:
| Setting | Env var | Default |
|---|---|---|
| Console base URL | HELIX_CONSOLE_BASE_URL |
http://localhost:8180 |
Point this at the console's external base URL (scheme + host + port). On every startup the client's
redirect_uri ({base}/console/callback), web origin ({base}), and post-logout URI ({base}/)
are reconciled from it, so changing the deployment URL and restarting is all that's needed — no
manual client edit.
Recovery (break-glass)¶
The console client is protected: it self-heals (recreated on the next restart if deleted) and
the admin API refuses to delete it. If the client is ever misconfigured (for example a wrong
HELIX_CONSOLE_BASE_URL), an admin can still sign in directly at the IdP login page —
/realms/{realm}/login — to get a session and fix the configuration. This break-glass path is always
available.
In the console¶
Because helix-console is a real OIDC client, it appears wherever clients do:
- Under Manage → Applications & clients → OIDC/SAML clients it shows as Helix Admin Console, a public client (PKCE) with scopes
openid profile. You can inspect it, but the admin API and self-heal keep it from being deleted or renamed away. - Under Manage → Users & access → Sessions, an admin's console login shows as an active SSO session that can be ended with Single Logout — see Sessions.
Over the API¶
helix-console is listed and read like any other client under /admin/realms/{realm}/clients. The examples below assume you have set $HELIX_URL / $REALM and logged in — see Authenticating to the API.
# It surfaces in the normal clients list
curl -s -b cookies.txt "$HELIX_URL/admin/realms/$REALM/clients"
[
{ "clientId": "helix-console", "name": "Helix Admin Console", "publicClient": true, "grantTypes": ["authorization_code","refresh_token"] }
]
Protected client
A DELETE against the helix-console client is refused, and if it is ever removed out-of-band it is recreated on the next restart. Do not manage its redirect_uri / web origin by hand — they are reconciled from HELIX_CONSOLE_BASE_URL on every startup.