Keycloak
Scanned 9/5/2026
Install to Claude Code
npx -y skills add Nevaberry/nevaberry-plugins --skill keycloak-knowledge-patch --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Keycloak Knowledge Patch?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/nevaberry-keycloak-knowledge-patch)More formats (shields.io, HTML) on the badges page.
---
name: keycloak-knowledge-patch
description: Keycloak
version: "26.7.0"
license: MIT
metadata:
author: Nevaberry
---
# Keycloak Knowledge Patch
Use this skill for Keycloak implementation, configuration, authentication,
administration, extension, operation, and upgrade work. Establish the exact
server, Operator, adapter, and client-library versions before applying
version-dependent guidance. Prefer the deployment's manifests, configuration,
code, and observed behavior when they differ from general guidance.
## Reference index
| Reference | Topics |
| --- | --- |
| [Admin, Account, and Organization APIs](references/admin-account-and-organizations.md) | Client Admin API, Account REST, SCIM, organizations, permissions, realm search, and corrected API behavior |
| [Identity and Authentication](references/identity-and-authentication.md) | Redirects, origins, consent, logout delivery, browser flows, passkeys, assurance, session limits, X.509, and authorization resources |
| [Protocols, Token Exchange, and Brokering](references/protocols-token-exchange-and-brokering.md) | Standard and legacy exchange, external tokens, OID4VCI, ID-JAG, SSF, AuthZEN, SAML step-up, delegation, DPoP, and parameterized scopes |
| [Server, Operator, and Observability](references/server-operator-and-observability.md) | Quarkus configuration, builds, health, queues, trust, datasources, clustering, caches, proxies, metrics, storage, Kubernetes, and shutdown |
| [Upgrades, Extensions, and Themes](references/upgrades-extensions-and-themes.md) | Major-version migrations, JavaScript, themes, User Profile, representations, SPIs, events, registration, feature changes, and extension lifecycle |
## Working method
1. Identify the exact Keycloak image and Operator versions from deployment
manifests, build metadata, or startup output.
2. Identify separately versioned consumers such as `keycloak-js`, Java
extensions, themes, adapters, generated clients, and custom resources.
3. Load the reference matching the task. For an upgrade, load both the
operational and extension/theme references, plus any protocol reference
used by the deployment.
4. Treat preview and experimental features as explicit opt-ins. Verify their
feature flags and profile before depending on endpoints or persisted data.
5. Test authentication, token refresh, logout, proxy, readiness, database, and
rolling-upgrade behavior at their actual boundaries.
6. Preserve exact option spelling and distinguish build-time options from
runtime configuration.
## Breaking changes and deprecations
### Preserve sessions during major upgrades
- When carrying online sessions forward, take the required intermediate
persistence migration path; enabling persistence after the migration point
cannot safely merge persisted and non-persisted sessions.
- Expect incompatible cache-marshalling changes to clear caches. Verify that
sessions are database-backed before the cache transition.
- Apply explicit bounds to custom session caches instead of assuming the
standard cache limits carry over.
### Replace legacy hostname and proxy settings
- Use hostname v2 semantics. Supply a full frontend URL when scheme, port, or
path matters, and always give the admin hostname as a full URL.
- Replace `proxy` with one trusted `proxy-headers` format plus the required
hostname and HTTP settings.
- Enable dynamic backchannel resolution only with a full frontend URL.
### Migrate browser integrations and themes
- Import browser code from `keycloak-js` or `keycloak-js/authz`; do not rely on
deep imports, a server-hosted script, or a UMD/global build.
- Pass configuration explicitly, run in a secure context, and await login and
URL-construction APIs.
- Move maintained themes to the current parent and shared-resource paths, and
test custom FreeMarker templates against the newer compatibility level.
### Update authentication and logout entry points
- Use OIDC RP-Initiated Logout instead of legacy `redirect_uri` behavior.
- Use `prompt=create` for registration and the supported
`/forgot-credentials` authorization-path variant for credential reset.
- Do not deep-link into `/login-actions` or `/broker`.
- Replace the boolean WebAuthn discoverable-credential option with
`required`, `preferred`, or `discouraged`.
### Update extensions and API representations
- Treat `UserRepresentation.getAttributes()` as custom attributes only; use
dedicated root properties or server-side `getRawAttributes()` as needed.
- Query identity providers through their dedicated endpoint rather than
expecting them in ordinary realm representations.
- Do not restart a request transaction. Asynchronous work must own a separate
session and transaction lifecycle.
- Replace removed token convenience methods and update provider-factory and
test-builder APIs before recompiling extensions.
### Remove obsolete configuration and dependencies
- Remove obsolete token-exchange and persistent-session batching switches.
- Replace `dynamic-scopes` with `parameterized-scopes`.
- Supply removed drivers and frontend libraries explicitly, and migrate away
from removed handlers, BOMs, test helpers, admin clients, and brokers.
- Replace deprecated bootstrap administrator variables with
`KC_BOOTSTRAP_ADMIN_USERNAME` and `KC_BOOTSTRAP_ADMIN_PASSWORD`.
## Security-critical quick reference
### Redirects, origins, and logout
- Match redirect URIs exactly and case-sensitively unless the registered value
has a trailing wildcard.
- Force exact matching when a wildcard request contains userinfo or `/../`,
and never use a full `*` pattern in production.
- Treat token-embedded Web Origins as adapter-specific behavior, not portable
OIDC client metadata.
- Validate `post_logout_redirect_uri`; logout confirmation presents it as a
continuation instead of automatically redirecting.
### Token exchange
- Use standard token exchange v2 only with confidential, authenticated
requesters that explicitly enable the capability.
- Treat `audience` as a filter, never as a way to add an audience, and do not
send the unsupported `resource` parameter.
- Require the original sender and matching DPoP proof or mTLS certificate for
sender-constrained subject tokens.
- Restrict legacy exchange permission to trusted clients because its external
JWT path does not validate `aud`.
### Authentication assurance
- Order conditional LoA subflows from lowest to highest.
- Use an essential `claims` request when failure is required; `acr_values` is
non-essential.
- Protect browser-carried assurance requests with PAR or a request object and
verify the returned `acr`.
- Place the session limiter after the user is known and avoid checking normal
SSO-cookie reuse a second time.
### Secrets, trust, and client credentials
- Use `KCRAW_` for literal environment values containing dollar signs, and do
not define its `KC_` counterpart simultaneously.
- Never place secrets in build options because build values are persisted in
plaintext.
- Trust the authenticator CA for direct WebAuthn attestation.
- Anchor X.509 client credentials to an exact CA subject DN and move away from
regex subject matching.
- Allow at least 86 characters in stores receiving newly generated client
secrets, and verify rotated-secret invalidation behavior.
## High-value features
### Declarative client administration
- Enable Client Admin API v2 for strictly validated OIDC and SAML client
management over REST, Java, generated JavaScript, CLI, or Operator resources.
- Use its management-interface OpenAPI document as the schema contract.
- Apply `q` filtering to the full representation before `fields` projection.
### Organizations and provisioning
- Separate organization write, read, and query roles, and combine member
listing with user-view permission.
- Use fine-grained organization resources for per-organization delegation.
- Enable group-role mappings when organization group roles must appear in
realm, client, and organization token claims.
- Enable `scim-api` for preview user and group provisioning, PATCH, filtering,
pagination, extensions, and schema discovery.
### Policy, credential, and event protocols
- Enable `authzen` for single or batch authorization-policy evaluations.
- Enable `ssf` for signed CAEP or RISC events delivered through durable push
or poll streams.
- Enable `identity-assertion-jwt` only for the receiving authorization-server
role; the complete ID-JAG flow is not implemented.
- Configure OID4VCI refresh separately from credential lifetime, and use the
dedicated client-attestation feature when required.
- Enable token-exchange delegation only when consent and refresh-time
reassessment match the intended impersonation policy.
### Operational resilience
- Route traffic with `/health/ready`; startup and liveness may be UP while
asynchronous initialization remains incomplete.
- Bound queued requests with `http-max-queued-requests` to shed excess work
with HTTP 503.
- Give provider JARs deterministic modification times before optimized builds.
- Treat the synchronously replicated database and its invalidation outbox as
central to stateless multi-cluster operation.
- Roll clustered shutdowns one node at a time and account for cache-rebalance
time.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!