Keycloak
26.8.0SecurityACTION 21CHECK 64PLAN 10OTHER 258
管理機能やデプロイ構成の変更に加え、認証・認可、SCIM、OIDC、OID4VCI、ストレージに関する多数のセキュリティ修正が含まれます。デフォルト設定の変更と非推奨化、削除された機能を確認する必要があるリリースです。
要対応 (21)
securitymediumCVE-2026-12388 の修正
IdP mapperによる管理者ロールの昇格を修正しました。
securitymediumCVE-2026-19608 の修正
名前だけのグループクレームによって、パス指定のグループポリシーを同名グループが満たせてしまう問題を修正しました。
securitymediumJackson Databindの更新
com.を 2.22.0 に更新しました。対象は CVE-2026-54515 と CVE-2026-59889 です。fasterxml. jackson. core:jackson-databind securitymediumNetty HTTP codecの更新
io.を 4.1.136.Final に更新し、CVE-2026-59903 に対応しました。netty:netty-codec-http security
secure-client-node-hostnameの追加SSRF対策用のクライアントポリシーエグゼキューター
secure-client-node-hostnameが利用可能になりました。securitySMTP認証情報置換の検証修正
SMTPのマスク済み認証情報置換で、宛先フィールドが変更されていないことを検証していなかった問題を修正しました。
securityrefresh token再利用の修正
同一秒に行われたrefresh tokenローテーションで、古いトークンを再利用できる問題を修正しました。
security削除済みセッション復活の修正
キャッシュミス時にデータベースから無条件でキャッシュを再構築し、削除済みセッションを復活させる問題を修正しました。
securityユーザー部分フィルターの所属拒否適用
ユーザーの部分フィルターが、祖先グループの所属拒否を無視する問題を修正しました。
security管理イベントの秘密鍵属性保護
クライアント更新の管理イベントに秘密鍵属性が残る問題を修正しました。
security管理イベントのbearer token保護
Registration access tokenの再生成時に、使用可能なbearer tokenを管理イベントへ保存する問題を修正しました。
securityRP initiated logoutのIdP検証
偽造した
initiating_idpにより、RP initiated logoutが上流brokerのログアウトを抑止できる問題を修正しました。security
Class.呼び出しの制限forName() ComponentResource.のクエリーパラメーターに対する無制限のgetSubcomponentConfig Class.呼び出しを制限しました。forName() security読み取り専用クライアントプロパティの保護
登録時にClient typeの読み取り専用クライアントプロパティを迂回できる問題を修正しました。
securityイベント完了判定の修正
イベントが消費済みか未保存かを区別できない完了判定を修正しました。
security一括HQL更新のセキュリティ分類
一括HQL
executeUpdateがAsyncCommitIntegratorのセキュリティ分類を迂回する問題を修正しました。securityパスワード拒否リストのロケール対応
トルコ語ロケールでパスワード拒否リストを迂回できる問題を修正しました。
securityToken exchangeのactor検証
Token exchange providerのルーティングで、delegation tokenが標準交換経由でactor検証を迂回する問題を修正しました。
breaking総当たり攻撃検知データの保存先変更
総当たり攻撃検知データは、デフォルトでデータベースに保存されるようになりました。
breaking永続ログイン失敗のデフォルト化
永続化されたログイン失敗がデフォルトになりました。
breaking
getOrganizationId()の削除IdentityProviderModelからgetOrganizationId()メソッドを削除しました。
影響確認 (64)
securitymediumCVE-2026-14781 の修正
OIDC brokerを使用している場合に該当します。
OIDC brokerが
id_tokenのemail_verifiedをuserinfoのメールアドレスに適用し、未検証のアドレスを検証済みとして扱う問題を修正しました。securitylowCVE-2026-4633 の修正
organizationsを使用している場合に該当します。
Organizations機能有効時のidentity-first loginによるユーザー列挙を修正しました。
securityLDAP認証情報の送信先修正
LDAPを使用している場合に該当します。
接続URLの変更時にLDAP bind credentialsが新しいサーバーへ送信される問題を修正しました。
securityクライアントシークレットの露出修正
Client GET endpointsを使用している場合に該当します。
Client GET endpointsが
view-clientsロール保持者へ生のクライアントシークレットを返す問題を修正しました。securityクライアント秘密鍵保存とgenerate endpointsの変更
generate endpointsを使用している場合に該当します。
データベースへのクライアント秘密鍵の保存を停止し、generate endpointsを非推奨にしました。
security
Client baseUrlのURIスキーム検証Client baseUrlを使用している場合に該当します。realm importおよびpartial importで
Client baseUrlのURIスキーム検証が欠落していた問題を修正しました。securityprotocol mapper許可リストの適用
allowed-protocol-mappersを使用している場合に該当します。Admin REST APIのprotocol mapper操作で
allowed-protocol-mappersの強制が欠落していた問題を修正しました。securityOIDC PARキャッシュのrealm紐付け
OIDCを使用している場合に該当します。
OIDCのPAR request URIを保存する単回使用キャッシュにrealmの紐付けがなかった問題を修正しました。
securityOID4VCI削除APIの所有者検証
OID4VCIを使用している場合に該当します。
発行済み検証可能クレデンシャルの削除用Account API endpointで、所有者の検証が欠落していた問題を修正しました。
securityParameterized Scopesのユーザー名列挙修正
Parameterized Scopesを設定している場合に該当します。
usernameおよびdelegationのscope typeを使った事前認証前のユーザー名列挙を修正しました。securityParameterized Scopesのscope解決修正
Parameterized Scopesを設定している場合に該当します。
最初に一致したプレフィックスの解決により、緩いscopeが厳しいscopeを隠せる問題を修正しました。
securityParameterized Scopesの入力長制限
Parameterized Scopesを設定している場合に該当します。
CustomRegexScopeTypeが長さ制限のない攻撃者入力へ管理者の正規表現を適用する問題を修正しました。securitySCIMグループ操作の管理者チェック
SCIM Groups endpointを使用している場合に該当します。
SCIM Groups endpointのmembers操作で
isAdminUserチェックが適用されていなかった問題を修正しました。securitySCIM PATCH操作数の制限
SCIMを使用し、
maxOperationsを設定している場合に該当します。SCIMのPATCH操作リストにサイズ制限がなく、
maxOperationsが適用されていなかった問題を修正しました。securityClient API v2のクライアント作成認可
Client API v2を使用している場合に該当します。
addClient()shimによる一時クライアント作成がrealmレベルの認可を迂回する問題を修正しました。securityOID4VCI鍵構成証明の必須化
OID4VCIを使用し、
key_attestations_requiredを設定している場合に該当します。proof JWTに
key_attestationヘッダーがない場合、key_attestations_requiredが適用されない問題を修正しました。securityOID4VCI x5cチェーン検証
OID4VCIを使用している場合に該当します。
鍵構成証明のx5cチェーンが、EKUや失効状態を確認せずシステムのCA証明書で検証される問題を修正しました。
securityクレデンシャルオファーの有効期限制限
/create-credential-offerを使用している場合に該当します。/create-credential-offerのexpireパラメーターに上限がなく、事前認証コードを無期限にできる問題を修正しました。securityLD-VCのリモートコンテキスト取得
OID4VCIを使用している場合に該当します。
LD-VC signerが許可リストやキャッシュなしでHTTP経由のリモート
@contextURLを取得する問題を修正しました。securityOID4VCI did属性の一意性検証
OID4VCIを使用している場合に該当します。
ユーザーが編集できるdid属性をcredential subjectに使い、realm内でしか一意性を確認していなかった問題を修正しました。
securityCredential requestのRSA暗号方式制限
OID4VCIを使用している場合に該当します。
Credential requestの復号で、RSA-OAEP-256暗号化キーに対するRSA1_5を受け入れる問題を修正しました。
securitySCIM Users filterの所属情報漏えい修正
SCIM Users filtersを使用している場合に該当します。
SCIM Users filterがFGAP下で隠されたグループ所属を漏えいする問題を修正しました。
securitySCIM Groups filterの所属情報漏えい修正
SCIM Groups filtersを使用している場合に該当します。
SCIM Groups filterがFGAP下で隠されたユーザー所属を漏えいする問題を修正しました。
securitySCIMの表示権限適用
SCIMを使用している場合に該当します。
SCIMの読み取りとフィルターが、マッピング済み属性に対するuser-profileの表示権限を迂回する問題を修正しました。
securitySD-JWT署名アルゴリズム検証
SD-JWTを使用している場合に該当します。
SD-JWT検証で、JWSヘッダーと異なるアルゴリズムの署名を受け入れる問題を修正しました。
securityServer infoのデータベース情報保護
Server infoを使用している場合に該当します。
Server infoが
view-realm管理者へデータベースの運用情報を公開する問題を修正しました。securitySAML
LogoutResponseの署名検証LogoutResponseを使用している場合に該当します。受信する
LogoutResponseメッセージの署名検証を追加しました。securityOIDC Dynamic Client Registration PUTの例外修正
OIDC Dynamic Client Registration PUTを使用している場合に該当します。
OIDC Dynamic Client Registration PUTで、
scopeフィールドにより未認証のNullPointerException(HTTP 500)が発生する問題を修正しました。securityroot-pathリダイレクトのセキュリティヘッダー
http-relative-pathを設定している場合に該当します。http-relative-path設定時のroot-pathリダイレクトにセキュリティヘッダーがない問題を修正しました。securityOID4VCI RSA1_5 padding oracleの修正
OID4VCIを使用している場合に該当します。
OID4VCI credential requestに存在した未認証のRSA1_5 padding oracleを修正しました。
securityOID4VC credential削除範囲の制限
OID4VCを使用している場合に該当します。
OID4VC発行済みcredentialの削除範囲が、パスのユーザーまたはrealmに限定されていなかった問題を修正しました。
securityWebAuthn credential重複保存の修正
WebAuthnを使用している場合に該当します。
1つのWebAuthn登録セレモニーを同時完了すると、複数のpasswordless credentialが保存される問題を修正しました。
securityLDAP password-policy parserの修正
LDAPを使用している場合に該当します。
LDAP password-policy response control parserのwarning/errorタグ衝突と、捕捉されない
NumberFormatExceptionによるログイン失敗を修正しました。securitySCIM membership監査記録
SCIMを使用している場合に該当します。
SCIM membership PATCHイベントに、変更された関係が監査証跡へ記録されない問題を修正しました。
securitySCIM従来ロールの所属推測
SCIMを使用し、FGAPを有効にしていない場合に該当します。
FGAP無効時にSCIMの従来のクエリーロールがリソース間の所属を推測する問題を修正しました。
securitySCIM Group DELETEの保護
SCIM Group DELETEを使用している場合に該当します。
SCIM Group DELETEがcascadeを通じて管理リソース保護を迂回する問題を修正しました。
securitySCIMユーザー削除後の状態整理
SCIMを使用している場合に該当します。
SCIMによるユーザー削除でセキュリティ状態のクリーンアップが行われない問題を修正しました。
security総当たり攻撃検知カウンターの競合修正
総当たり攻撃検知を使用している場合に該当します。
総当たり攻撃検知のリセット境界で同時に失敗すると、新たに記録した試行が消える問題を修正しました。
security
LoginFailureEntityのフェイルオーバー処理LoginFailureEntityを使用している場合に該当します。フェイルオーバー後の
LoginFailureEntity非同期コミット分類で、失敗カウンターが破棄される問題を修正しました。securityMulti-Cluster v2のRPO設定
Multi-Cluster v2を有効にしている場合に該当します。
Multi-Cluster v2のRPO「No data loss」と、一時データへのデフォルトの非同期コミットが矛盾する問題を修正しました。
securitycredential offerのロール名前空間修正
credential offerを使用している場合に該当します。
同名のクライアントロールによるロール名前空間の混同で、被害者を対象とするcredential offerを認可できる問題を修正しました。
securityOID4VCI refresh token再利用の修正
OID4VCIを使用している場合に該当します。
ローテーション済みOID4VCI refresh tokenの再利用で、credential authorityを繰り返し再発行できる問題を修正しました。
securitySD-JWT有効期間の制限
SD-JWTを使用している場合に該当します。
ユーザーが編集可能なマッピング属性で、SD-JWT credentialの有効期間を発行者設定より延長できる問題を修正しました。
securityOID4VCI属性スナップショットの適用
OID4VCIを使用している場合に該当します。
credential発行が管理者承認済みの属性スナップショットを無視する問題を修正しました。
securityOID4VCI認証前復号の修正
OID4VCIを使用している場合に該当します。
未認証のcredential requestがbearer認証前に秘密鍵JWE復号を開始する問題を修正しました。
security対象指定credential offerの保護
OID4VCIを使用している場合に該当します。
盗まれた対象指定offerを更新すると、別ユーザーがoffer必須の発行を迂回できる問題を修正しました。
securityOID4VCI SD-JWT配列クレーム開示
OID4VCIを使用している場合に該当します。
OID4VCIのSD-JWT発行で、配列クレームの開示が全体一括になる問題を修正しました。
security
kcadm設定ファイル権限kcadmを使用している場合に該当します。kcadmが既存の設定ファイルにある全ユーザー読み取り可能な権限を保持する問題を修正しました。securitySCIM検索ログのフィルター値保護
SCIMを使用している場合に該当します。
SCIM検索が生のフィルター値をデバッグログへ書き込む問題を修正しました。
security復旧サイトのセキュリティ設定更新
サイトを使用している場合に該当します。
復旧したサイトが最大1時間、古いセキュリティ設定を適用できる問題を修正しました。
securityOID4VCI access tokenの用途制限
OID4VCIを使用している場合に該当します。
OID4VCI access tokenをcredential endpointだけで使用できるようにしました。
securityOID4VCI展開サイズとメモリ使用の修正
OID4VCIを使用している場合に該当します。
OID4VCIのメモリリークを防ぎ、展開サイズの上限を追加しました。
securityorganization-IdP link policyの維持
organizationsを使用している場合に該当します。
realm importでorganization-IdP link policyが許容的なデフォルトへ戻る問題を修正しました。
securityorganization linkの範囲保護
organizationsを使用している場合に該当します。
Identity-providerの読み取りが、呼び出し元の範囲外にあるorganization linkを開示する問題を修正しました。
securityclient-scoped endpointsの権限制御
client-scoped endpointsを使用している場合に該当します。
view-clientsがclient-scopedendpoints経由でview-users制限を迂回する問題を修正しました。securityAdmin v2 APIのローテーションポリシー
Admin v2 APIを使用している場合に該当します。
Admin v2 APIのPATCHがクライアントシークレットローテーションポリシーを迂回する問題を修正しました。
securityOIDC logout endpointのログインジェクション
OIDC logout endpointを使用している場合に該当します。
OIDC logout endpointのサニタイズされていない
client_idによるログインジェクションを修正しました。securitySCIM resource ID phishingの修正
SCIMを使用している場合に該当します。
SCIM resource ID phishingを修正しました。
securityAdmin API v2のクライアントシークレット保護
admin/apiを使用している場合に該当します。Admin API v2が
view-clientsロール保持者へ平文のクライアントシークレットを返す問題を修正しました。breakingSCIM username編集設定の適用
SCIMを使用している場合に該当します。
SCIM APIが、Edit username設定を無効にしていてもusernameを更新できる問題を修正しました。
securityorganization mapperの所属検証
identity brokeringを使用している場合に該当します。
単一値のorganization mapperが、攻撃者の選択した非メンバーorganizationを出力する問題を修正しました。
securityOrganization group metadataの保護
organizationsを使用している場合に該当します。
Organization group representationが、権限のない管理者へクライアントおよびrealmロールのメタデータを漏えいする問題を修正しました。
breakingKeycloak Realm Operatorの終了
Keycloak Realm Operatorを使用している場合に該当します。
Keycloak Realm Operatorを終了し、削除しました。
breakingOIDC Device flowのscope検証
OIDCを使用している場合に該当します。
Device flowで、クライアントに許可されていないscopeが
scopeパラメーターに含まれていてもエラーにならない問題を修正しました。
事前準備 (10)
deprecatedMulti-cluster v1 の非推奨化削除時期は未定
multi-siteを有効にしている場合に該当します。multi-site機能である Multi-cluster v1 は非推奨となり、将来のメジャーリリースで削除されます。deprecated
login-failures:v1の非推奨化login-failures:v1を有効にしている場合に該当します。従来のメモリ内動作は
login-failures:v1として利用できますが、非推奨になりました。deprecatedKerberos Credential delegationの非推奨化
Kerberosを使用している場合に該当します。
Kerberos Credential delegationを非推奨にする変更が提案されました。
deprecated従来のOIDCクライアントスイッチの非推奨化
OpenID Connect Compatibility Modesを設定している場合に該当します。OpenID Connect Compatibility Modesにある従来のOIDCクライアントスイッチを非推奨にしました。deprecatedvolatile sessionsの非推奨化
volatile sessionsを設定している場合に該当します。
volatile sessionsを非推奨にし、セッションキャッシュを無効にする選択肢を追加しました。
deprecated
Full scope allowedの非推奨化Full scope allowedを設定している場合に該当します。Full scope allowedクライアントスイッチを非推奨にしました。deprecatedOIDC以外のclient registration providerの非推奨化
client registration providerを使用している場合に該当します。
OIDC以外のclient registration providerを非推奨にしました。
deprecated
AUTH_SESSION_IDcookie routeの非推奨化AUTH_SESSION_IDcookieを設定している場合に該当します。スティッキーセッション用の
AUTH_SESSION_IDcookieからのroute指定を非推奨にしました。deprecated
clusterlessの非推奨化clusterlessを有効にしている場合に該当します。clusterless機能を非推奨にしました。deprecatedメモリ内ログイン失敗の非推奨化
メモリ内ログイン失敗を有効にしている場合に該当します。
メモリ内ログイン失敗を非推奨にしました。
その他の記録済み変更 258 件すべてsecurity fixes 1 · fixes 157 · value changes 50 · additions 37 · constraints 9 · defaults 3 · renames 1
security fixes (1)
- [OID4VCI] c_nonce Replay
fixes (157)
- SAML ECP endpoint returns inconsistent Content-Type on error responses
- UserInfo Endpoint: Add null-check for SignatureProvider when validating JWT bearer tokens
- UserInfo Endpoint: Handle malformed Content-Type header gracefully
- OIDC: Inverted return value in
compareSessionIdWithSessionCookie()backwards-compatibility path - OID4VCI: getAttestationRequirements() hardcodes proof-type key to jwt ignoring other types
- Identity Broker v2: Wrong-IdP token returned after account-linking due to un-namespaced session note
- Handling HTTP/2 connection coalescing issues originating from wildcard certificates
- OID4VC JWT proof JWK claim type confusion crashes proof validation
- URI client-policy executors omit OIDC front-channel logout URI
- Workflow group membership events confuse slash-named groups with nested paths
- Workflow role grant events match client and realm roles by bare name
- JOSE: Base64Url decoder throws unchecked exception on padding-only input
- Admin API v2 client update does not clean up stale rotated secret attributes
- SAML metadata key cache is not invalidated on client updates
- Selecting value in combobox not default listed
- PassKey "User verification requirement" error's are not translated
- refresh_expires_in is 0 for offline tokens when Offline Session Max Limited is disabled, but server enforces Offline Session Idle
- Ensure consistent transaction rollback across all error response paths
- Missing index on WORKFLOW_STATE.SCHEDULED_STEP_TIMESTAMP causes full filter scan in getDueScheduledSteps
- Organization group-by-path endpoint returns a brief representation instead of a full representation
- Ensure consistent transaction rollback in SCIM error response paths
- Keycloak with jdbc-ping stack failed to create a cluster after the MariaDB restore procedure
- Client configuration changes are not propagated between sites
- Organization authenticator drops the typed username when falling through to the default identity-provider-redirector (no login_hint)
- SAML broker: IdP-initiated logout fails with HTTP 500 and is rolled back when the IdP has no single logout service URL
- Flow steps back when changing locale or refreshing page (Regression of #30520 / #30644)
- After update from 26.0 to 26.1 extent account theme keycloak.v3 is not working for custom components
- User creation problem with default groups defined, with identity provider and federated openldap
- ConcurrentModificationException in parallel Quarkus build steps
- [OID4VCI] Issuance with Authorization Code Flow assumes same client_id for offer creation and redemption
- NullPointerException in ResourceIndicatorsPostProcessor when access token audience is null
- SSF: Client scopes ssf.read and ssf.manage not created when SSF enabled for existing realm
- Creating a new realm from json using kcadm gives a PK violation on KEYCLOAK_ROLE despite it only being defined once in the JSON.
- [OID4VCI] CNF is not included in sd-jwt when number_of_decoys is not explicitly configured
- Malformed Content-Type header causes HTTP 500 on token endpoints instead of RFC 6749 §5.2 compliant 400
- Keycloak doesn't honor
--https-trust-store-typewhen automatically creating the Trust Store - Scope-based permission accepts a scope not associated with the selected resource (Admin REST API)
- Admin Console: saving attributes fails when the attribute key is "constructor", "toString", or another Object.prototype name
- LifeSciences Login does not work anymore in Keycloak version 26.6.3
- SearchQuery.getFields() exceptions
- [CIMD] Claude Desktop authentication rejected by Keycloak: jwt-bearer grant type incompatible with public client
- Admin UI: Resource search does not work in Authorization Evaluate “Resources and Scopes - Key” selector
- ConcurrentModificationException in OrganizationAdapter.setAttributes on concurrent PUT /organizations/{id}
- User federation synchronizations will always evict all users of a realm from the users cache
- REVOKE_GRANT_ERROR prevents logout except when account console is open in another tab
- SAML broker artifact binding fails to validate signed nested Response inside ArtifactResponse: Cannot resolve element with ID
- UI shows inherited role as non-inherited when the same role is also assigned manually
- Email not lowercased in "Always Read Value From LDAP" delegate (incomplete fix from #43254)
- Exporting a realm with users says it needs file parameter, which is provided
- Trusted SSF event emission persists verbatim event payload in admin events
- Putting --optimized before command gives confusing error message
- NPE thrown on null secret in AbstractOauth2IdentityProdivder
- ClientManager.isInternalClient checks only for "master" realm
- SCIM: query-users role returns empty Resources array despite correct totalResults
- Dynamic client registration: "scope" member in the request suppresses realm default client scopes on the created client
- Synthetic SSF emit accepts mismatched user and tenant subjects when only the tenant is subscribed
- Keycloak does not apply connect timeout when Oracle runs in XA mode
- NPE in executor configuration validation
- Empty or null description causes duplicate "Allowed field:"
- [kcw]
kcw devgreps incorrect Keycloak version - Recovery codes have numeric input field despite alphanumeric codes being generated
- Usage of second class configuration may not be masked in show-config
- Logout fails when IdP is disabled
- PreparedStatement can have at most 65,535 parameters
- Token exchange and JWT grants ignore use-lightweight-access-token policy
- Test Authentication fails after correcting LDAP connection URL until configuration is saved
- SCIM filter parentPath not saved/restored in visitValuePath, breaks nested valuePath
- SCIM PATCH does not enforce attribute mutability
- SCIM PATCH NPE when request body contains "schemas": null
- [OID4VCI] Handling of realm optional client scopes
- Admin API v2: SAML string-attribute mapper does not remove attributes on explicit null or omission
- Do not pass the client for Delegation parameterized scope type
- LDAP Enabled switch remains interactive for users with view-realm only
- Account already existed page button has no gap and no hover on effect
- [OID4VCI] Incorrect metadata for key_attestations_required
- Better server error message and handling if email sender is disabled in configuration
- InvalidPathException when running test cases in embedded mode on Windows
- Admin Console: changing the search term while on a later page keeps the old page offset and shows no results
truststore-pathscertificates are ignored byFileTruststoreProviderFactory- Pin resolved identity to prevent consent transfer on user recreation
- SCIM filter predicates handle case-insensitive matching incorrectly
- Workflow add-required-action does not allow all available required actions
- [UX] account console nav on mobile not closing after selecting a page
- Enabling parameterized-scopes breaks the built-in organization:<alias> scope
- Deleting a user attribute deletes all custom message localizations of default language en
- Admin console Realm Settings delete uses display name instead of realm name (regression from #48084)
- SCIM filtered PATCH remove deletes all values for multivalued extension attributes
- Composite realm role mappings endpoint does not scale with the number of realm roles
- TypeError crash in Evaluation tab when selecting "Group" resource type
- SPNEGO mutual authentication response token is not returned after successful login
- SSF: Missing event details during user logout trigger NPE
- SCIM: organization groups exposed via the groups attribute on Users
- SCIM Users groups filter does not exclude organization groups
- Migrate remaining login pages have no override in the keycloak.v2 theme
- Keycloak's password length policy isn't triggered when changing password in FIPS mode
- Exceptions in Kubernetes federated-client-authentication signature verification are silently swallowed with no default-level log trace
- [OID4VCI] Labels for OID4VCI events missing in the admin console
- [OID4VCI] Some error events not reported
- Base implementation of AbstractModelSchema.getAttributeMappers is keyed by model attribute name
- Dutch translation for linkExpirationFormatter produces duplicated value ("12 12 uur")
- Scim complex type attributes are forced to be case-insenitive
- EXECUTE_ACTION_TOKEN : event impossible to save
- [OID4VCI] mdoc not properly configurable in admin console client scope tab
- Regression: resource_access claim becomes empty {} when populated via User Attribute mapper with JSON value (since 26.7.1)
- Organization invitation fails with invalid_redirect_uri when the organization has no Redirect URL configured
- Client-side password policy validation does not treat underscore _ as a special character
- Securing Client Cluster Node Registration via Client Policy Executor
- Organization invitation is lost when the invitee signs up with a realm-level identity provider
- Fix missing arguments in HardcodedLDAPRoleStorageMapper warning log
- Fine-Grained Admin Permissions v2: Cannot view a user who belongs to a group without "view" permission on that group
- [OID4VCI] Cannot unset values when configuring OID4VCI credential scope
- User Profile settings allow mapping multiple attributes to the same SCIM attribute
- User creation via SCIM API does not enforce User Profile "required" validation for core user schema attributes
- Duplicate English text in generateKeysDescription message key
- SCIM API does not enforce User Profile validators
- Missing detailed audit information in group / relam role operatons
- Workflows: notify-user email template hardcodes English text, so notifications cannot be fully translated
- Admin REST OpenAPI schema types groups-in-role responses as UserRepresentation
- Organization missing from the login form model on the invitation confirm-membership page
- [OID4VCI] Server-side validations for "Supported proof types" and "Cryptographic binding methods"
- DPoPBindEnforcerExecutor requires DPoP on client create/update, defeating its own refresh-token-only binding option
- Admin console crashes with a raw TypeError when a group request returns 404
- Integer overflow in OIDC re-auth max_age comparison (OIDCLoginProtocol)
- ResourceIndicatorsPostProcessor error does not log appropriate error event
- Regression in 26.7.0: DefaultClientSessionContext.getScopeString() no longer attaches "openid" scope on token refresh when the client omits it from the request
- ClosingStream does not close underlying stream when terminal operation throws an exception
- HHH90010101 warning logged during SCIM concurrent requests due to orphaned Hibernate before-completion callbacks
- HHH100503 INFO message logged during concurrent SCIM requests after constraint violation
- Organization group: removeMember should fail when user is not a member
- Stateless JPA providers: race condition between INSERT ON CONFLICT DO NOTHING and concurrent DELETE
- Cluster event poller: uncaught ClassCastException on malformed event data
- JpaRevokedTokenProvider uses deprecated Time.currentTime() (int) instead of Time.currentTimeSeconds() (long)
- First cluster-readiness probe returns UP before asynchronous CP check completes
- Unable to re login after deleting the Identity Provider configurations
- SCIM Group PUT overwrites externalId despite schema declaring it immutable
- NO_PROXY entries with leading dots or spaces after commas silently fail
- JWT Authorization Grant cannot be configured with Organization-linked IdPs
- Consent screen returns HTTP 500 for a user in more than one organization (regression in 26.7.0)
- Admin Console: Client scopes Evaluate tab does not refresh generated tokens when the user changes
- NullPointerException when POSTing null payload to /admin/realms/{realm}/groups
- Disabled organization set on session context during broker login callback
- [quick-theme] Login Page Preview stylesheet URL omits the http-relative-path prefix
- #46367 regression in user provider sync behavior
- Admin UI: IdP organization login switches always persisted as false
- Client roles are not displayed in "Effective role scope mappings" in Client Scope Evaluate
- GrantTypeCondition misses some event types
- Organizations: malformed domain in login username (e.g. user@example;com) causes unhandled ModelValidationException ('Invalid domain format')
- WARN [io.quarkus.deployment.index.IndexWrapper] (build-44) Failed to index void: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@66ce957f
- SSF discovery document (.well-known/ssf-configuration) omits /realms/{realm} path when realm frontendUrl is set
- signingCertificate handling in v2
- MayAct executor rejects valid delegation when the scope parameter is not the exact stored username
- Skips the ClientID binding checks when the claim is not a string
- prompt=none returns login_required for organization members without local credentials when the broker has "Redirect when email domain matches"
- Upgrade migration can attach a stale IdP route to another organization's domain
- Missing manage-organizations permission check for org group mappers
- Admin Console user picker (UserSelect) sends username= contains search, producing leading-wildcard LDAP filters that time out on large directories
- SCIM user PUT/PATCH bypass the user cache: active=false via SCIM does not disable the user for logins
value changes (50)
- the admin event store no longer receives unvalidated payloads to prevent PII leakage
- Parameterized scopes have officially moved from experimental to preview status.
- Token exchange delegation support status is now preview.
- Token lifecycle events (<code>CODE_TO_TOKEN</code>, <code>REFRESH_TOKEN</code>, and others) are now enriched with <code>impersonator</code> and <code>impersonator_id</code> details
- The Client Admin API v2, introduced as an experimental feature in Keycloak 26.7, has been promoted to preview.
- In this release, Client Secret Rotation is promoted from preview to supported.
- In this release, the SCIM API is promoted from preview to supported.
- In this release, multi-cluster v2 and the <code>stateless</code> feature are promoted from preview to supported.
- The social identity provider section on the login page has been refreshed with updated icons, a new divider layout, and improved button labels.
- Improve WebAuthn error messages
- SAML Responses with Invalid Signatures
- Upgrade FreeMarker to the most recent version
- Better memory management with argon2
- Upgrade to Quarkus 3.40 LTS
- Refactor SSF to use keycloak-admin-client and react hook form
- Switch internal HTTP client from Apache to Vert.x/Netty
- Make UuidUnmodified more generic so that we can use it on multiple fields
- Sorting Applications in Account Console
- Redesign identity provider buttons on the login page
- Improve runtime when building user representations via User Profile
- Upgrade to Quarkus …×5
- SCIM user serialization creates ~200x more UserProfile instances than necessary
- SCIM search/list executes unconditional COUNT(*) query on every request
- SCIM filter string is parsed twice through ANTLR4 grammar per request
- Unify QR code and divider components in the login theme
- [OID4VP] Improve cross-device login page layout
- Unify OTP setup buttons to use shared
buttonsmacro - Skip unnecessary provider initialization for non-server commands
- Authentication events should distinguish primary vs rotated client secret
- Improve help text for admin permissions (FGAP) fields
- Distinguish between Login Theme and Account Console for an already existing Mail in Keycloak
- SCIM filtered search should leverage the Infinispan entity cache
- Store provider.jar mtime in seconds in keycloak-persisted.properties for Quarkus re-augmentation
- Retarget quarkus-next to Quarkus 3.39 branch after 3.x branch was dropped
- Avoid contention on IDX_USER_SESSION_EXPIRATION_* indexes on MS SQL/MySQL
- Optimize index sizes for session storage in the database
- Avoid updates to IDX_USER_SESSION_EXPIRATION_LAST_REFRESH on every token refresh
- Upgrade to Quarkus ….CR1×2
- Extend asynchronous commit optimization to SQL Server and Oracle
- Upgrade to Infinispan 16.0.15
- Cache parsed theme resource declarations to avoid re-parsing them on every login page render
- Cache the resolved max-length configuration for OIDC request parameters
- Avoid building the WebAuthn trust verifier on every login
- <p>The <a href="https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html">OpenID for Verifiable Credential Issuance (OID4VCI)</a> feature has been promoted from experimental to preview.
- hardened x5c certificate validation following the HAIP profile.
additions (37)
- Keycloak can now act as an OID4VP verifier
- now emits RISC <code>account-disabled</code> and <code>account-enabled</code> event types
- Users can now delegate access to a client application through OAuth consent using the new <code>delegation:client:<client-id></code> parameterized scope.
- A new client policy executor allows administrators to restrict the <code>may_act</code> claim in access tokens
- The new <code>invite-user</code> workflow step sends an action-token email automatically when a user is created
- Client Policies now provide the <code>allowed-protocol-mappers</code> executor
- Multi-cluster v2 enables connecting two or more Keycloak clusters without an external Infinispan cluster
- Keycloak now supports encrypted PKCS#8 private keys in PEM format for HTTPS configuration.
- configured with the new <code>--cache-embedded-cluster-name</code> and <code>--cache-embedded-node-name</code> CLI options
- Keycloak now automatically creates skipped indexes in the background after startup
- Keycloak now provides an experimental Vert.x-based HTTP client
- Keycloak now releases an experimental Helm chart to install the Operator.
- Identity providers can now be linked to multiple organizations
- Document trust boundaries for attribute-based conditions with self-registration enabled
- Add warning about dynamic urls to reflect the danger of hostname pollution
- Supported client secret rotation
- SSF: Add support for RiscAccountPurged event
- [OID4VP] Support direct_post.jwt (encrypted) response mode
- Accept encrypted PEM TLS certificate key
- Parametrized client_id in the organization invite link and invite token
- Concurrent Index creation on PostgreSQL and other databases for DB migrations
- Account Console: Add per-application session termination on the Applications page
- Signed JWT - Federated: support managed Kubernetes (EKS, GKE, AKS) via dynamic OIDC issuer discovery
- Add
invite-userworkflow step - Add default non-endpoint methods to the admin api v2 interfaces as needed for typing
- [OID4VCI] Implement missing HAIP conformance tests
- Token Exchange Delegation for Clients
- Complete Identity Provider support in the Test Framework Realm DSL
- [CIMD] Resource Indicators with CIMD
- Introduce dedicated delegation permission for token exchange delegation
- Add actor to impersonation tokens and details to event logs
- Add session bucket and coarse-grained timestamp to ROOT_AUTH_SESSION for reduced index contention
- Refresh Token Introspection
- Credential lifecycle management now includes revocation when refresh tokens are revoked
- a new Application Initiated Action (AIA) lets users request credential issuance within an authenticated session.
- Key attestation is configurable in the admin console
- This release also adds experimental support for the mdoc format, provided by the new experimental feature <code>oid4vc-mdoc</code>.
constraints (9)
- The SCIM API received extensive improvements including support for multivalued user attributes
- SCIM: Missing lower-bound validation on count parameter in list operations
- Infinispan: LoginFailures cache should not be unbounded
- Infinispan metrics should not contain a dynamic node label
- KeyCloak Admin Client - Support Jackson 3
- Make the Roles field optional on the client Authorization Evaluate tab
- [SAST] Restrict direct access to
issuedForvariable - SCIM should also return a forbidden response status for schemas and resourceTypes if the query is present in the request
- Unable to select authorization scopes beyond the first 100 in Scope-Based Permissions
defaults (3)
- The <code>delegation:user</code> and <code>delegation:client</code> client scopes are now auto-created as Optional scopes in all realms
- When deploying with the Keycloak Operator, the node name is now automatically set to the Kubernetes pod name
- New identity provider links created after upgrading default to the Unmanaged membership type.
renames (1)
- Parameterized scopes (formerly known as dynamic scopes)
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。