Keycloak
26.8.0SecurityACTION 21CHECK 64PLAN 10OTHER 258
관리 기능과 배포 동작이 확장되었고, 기본값과 저장 방식이 일부 바뀌었습니다. 여러 인증 및 관리 경로의 보안 문제가 수정되었으며, 일부 기능과 설정은 사용 중단 예정이거나 제거되었습니다. 관련 기능을 사용하는 운영자는 변경된 기본값과 보안 동작, 사용 중단 항목을 확인해야 합니다.
조치 필요 (21)
securitymediumIdP 매퍼 관리자 역할 상승 수정
CVE-2026-12388에 해당하는 IdP 매퍼의 관리자 역할 상승 문제가 수정되었습니다.
securitymedium그룹 이름만으로 경로 정책을 충족하던 문제 수정
CVE-2026-19608에 해당하는 문제로, 이름만 같은 그룹이 경로별 그룹 정책을 충족하던 동작이 수정되었습니다.
securitymedium
jackson-databind버전 변경com.가 2.22.0으로 변경되었으며, CVE-2026-54515와 CVE-2026-59889에 대응합니다.fasterxml. jackson. core:jackson-databind securitymedium
netty-codec-http버전 변경io.가 4.1.136.Final로 변경되었으며, CVE-2026-59903에 대응합니다.netty:netty-codec-http security
secure-client-node-hostname클라이언트 정책 실행기 추가SSRF 방어를 위한 클라이언트 정책 실행기
secure-client-node-hostname이 추가되었습니다.securitySMTP 자격 증명 치환 검증 수정
SMTP 마스킹 자격 증명 치환 과정에서 대상 필드가 바뀌지 않았는지 확인하지 않던 문제가 수정되었습니다.
security리프레시 토큰 재사용 수정
같은 초에 리프레시 토큰을 교체할 때 이전 토큰을 다시 사용할 수 있던 문제가 수정되었습니다.
security삭제된 세션의 캐시 재생성 수정
캐시 누락 때 데이터베이스에서 캐시를 무조건 다시 채워 삭제된 세션을 되살리던 문제가 수정되었습니다.
security사용자 부분 필터 상위 그룹 권한 적용
사용자 부분 필터가 상위 그룹 소속에 따른 거부를 무시하던 문제가 수정되었습니다.
security클라이언트 수정 이벤트의 개인 키 속성 제거
클라이언트 수정 관리자 이벤트에 개인 키 속성이 남던 문제가 수정되었습니다.
security등록 접근 토큰 관리자 이벤트 저장 수정
등록 접근 토큰을 다시 생성할 때 실제 bearer 토큰을 관리자 이벤트에 저장하던 문제가 수정되었습니다.
securityRP 시작 로그아웃 브로커 검증 수정
위조한 initiating_idp로 RP 시작 로그아웃에서 상위 브로커 로그아웃을 막을 수 있던 문제가 수정되었습니다.
security
Class.입력 제한forName() ComponentResource.의 쿼리 매개 변수에 제한 없이getSubcomponentConfig Class.을 적용하던 문제가 수정되었습니다.forName() security읽기 전용 클라이언트 속성 제한 수정
등록 과정에서 읽기 전용 클라이언트 속성 제한을 우회할 수 있던 문제가 수정되었습니다.
security이벤트 완료 판정 수정
소비된 이벤트와 한 번도 저장되지 않은 이벤트를 구분하지 못하던 완료 판정 문제가 수정되었습니다.
security대량 HQL 보안 분류 적용
대량 HQL
executeUpdate가 AsyncCommitIntegrator의 보안 분류를 우회하던 문제가 수정되었습니다.security터키어 로캘 비밀번호 거부 목록 수정
터키어 로캘에서 비밀번호 거부 목록을 우회할 수 있던 문제가 수정되었습니다.
security토큰 교환 행위자 검증 수정
토큰 교환 제공자 라우팅으로 위임 토큰이 일반 교환을 거쳐 행위자 검증을 우회할 수 있던 문제가 수정되었습니다.
breakingBrute force detection 데이터 저장 방식 변경
Brute force detection 데이터가 이제 기본적으로 데이터베이스에 저장됩니다.
breaking영속 로그인 실패 저장을 기본값으로 변경
로그인 실패를 영속적으로 저장하는 방식이 기본값이 되었습니다.
breaking
IdentityProviderModel.제거getOrganizationId() IdentityProviderModel에서getOrganizationId()메서드가 제거되었습니다.
영향 확인 (64)
securitymediumOIDC 브로커 이메일 검증 상태 처리 수정
OIDC 브로커를 사용하는 경우에 적용됩니다.
OIDC 브로커를 사용하는 경우에 적용됩니다. CVE-2026-14781에 해당하는 문제로, 브로커가
id_token의email_verified값을 사용자 정보의 이메일에 잘못 적용해 검증되지 않은 주소를 검증된 것으로 표시하던 동작이 수정되었습니다.securitylow조직 identity-first 로그인 사용자 열거 수정
조직 기능을 사용하는 경우에 적용됩니다.
조직 기능을 사용하는 경우에 적용됩니다. CVE-2026-4633에 해당하는 문제로, 조직 기능을 활성화한 identity-first 로그인에서 사용자 이름을 열거할 수 있던 문제가 수정되었습니다.
securityLDAP 연결 주소 변경 시 자격 증명 전송 수정
LDAP를 사용하는 경우에 적용됩니다.
LDAP를 사용하는 경우에 적용됩니다. 연결 주소를 바꿀 때 LDAP 바인드 자격 증명이 새 서버로 전송되던 문제가 수정되었습니다.
security클라이언트 비밀값 노출 수정
Client GET endpoints를 사용하는 경우에 적용됩니다.
Client GET endpoints를 사용하는 경우에 적용됩니다.
view-clients역할 보유자에게 원문 클라이언트 비밀값이 반환되던 문제가 수정되었습니다.security클라이언트 개인 키 저장 및 generate endpoints 변경
generate endpoints를 사용하는 경우에 적용됩니다.
generate endpoints를 사용하는 경우에 적용됩니다. 데이터베이스에 클라이언트 개인 키를 저장하지 않도록 바뀌었고 generate endpoints는 사용 중단 예정입니다.
security
Client baseUrlURI 스킴 검증Client baseUrl을 사용하는 경우에 적용됩니다.Client baseUrl을 사용하는 경우에 적용됩니다. 영역 가져오기와 부분 가져오기에서 URI 스킴을 검증하지 않던 문제가 수정되었습니다.security
allowed-protocol-mappers정책 적용allowed-protocol-mappers를 사용하는 경우에 적용됩니다.allowed-protocol-mappers를 사용하는 경우에 적용됩니다. 관리자 REST API의 프로토콜 매퍼 작업에서 해당 정책을 적용하지 않던 문제가 수정되었습니다.securityOIDC PAR 요청 URI 영역 연결 수정
OIDC를 사용하는 경우에 적용됩니다.
OIDC를 사용하는 경우에 적용됩니다. PAR 요청 URI가 영역에 연결되지 않은 일회용 캐시에 저장되던 문제가 수정되었습니다.
security검증 가능한 자격 증명 삭제 소유권 검증
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 발급된 검증 가능한 자격 증명을 삭제하는 Account API endpoint에 소유권 검증이 추가되었습니다.
securityParameterized Scopes 사용자 이름 열거 수정
Parameterized Scopes를 구성한 경우에 적용됩니다.
Parameterized Scopes를 구성한 경우에 적용됩니다. 사전 인증 단계에서 사용자 이름을 열거할 수 있던 문제가 수정되었습니다.
securityParameterized Scopes 접두사 범위 선택 수정
Parameterized Scopes를 구성한 경우에 적용됩니다.
Parameterized Scopes를 구성한 경우에 적용됩니다. 먼저 일치하는 접두사가 더 허용적인 범위로 엄격한 범위를 가리던 문제가 수정되었습니다.
security
CustomRegexScopeType입력 길이 제한Parameterized Scopes를 구성한 경우에 적용됩니다.
Parameterized Scopes를 구성한 경우에 적용됩니다.
CustomRegexScopeType에 입력 길이 제한이 없던 문제가 수정되었습니다.securitySCIM 그룹 관리자 확인 수정
SCIM Groups endpoint를 사용하는 경우에 적용됩니다.
SCIM Groups endpoint를 사용하는 경우에 적용됩니다. 구성원 작업에서
isAdminUser확인을 적용하지 않던 문제가 수정되었습니다.securitySCIM PATCH 작업 수 제한
SCIM을 사용하고
maxOperations를 구성한 경우에 적용됩니다.SCIM을 사용하고
maxOperations를 구성한 경우에 적용됩니다. PATCH 작업 목록에maxOperations크기 제한을 적용합니다.securityClient API v2 클라이언트 생성 권한 수정
Client API v2를 사용하는 경우에 적용됩니다.
Client API v2를 사용하는 경우에 적용됩니다.
addClient()임시 클라이언트 생성이 영역 수준 권한을 우회하던 문제가 수정되었습니다.security
key_attestations_required적용 수정OID4VCI를 사용하고
key_attestations_required를 구성한 경우에 적용됩니다.OID4VCI를 사용하고
key_attestations_required를 구성한 경우에 적용됩니다. 증명 JWT에 키 증명 헤더가 없을 때도key_attestations_required를 적용하지 않던 문제가 수정되었습니다.securityOID4VCI 키 증명 체인 검증 수정
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 키 증명의 x5c 체인을 시스템 인증 기관 목록에만 의존해 검증하던 동작이 수정되었습니다.
security
/create-credential-offer만료 시간 제한/create-credential-offer를 사용하는 경우에 적용됩니다./create-credential-offer를 사용하는 경우에 적용됩니다.expire매개 변수에 제한이 없어 사전 인증 코드가 무기한 유지될 수 있던 문제가 수정되었습니다.securityLD-VC 원격
@context접근 제한OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. LD-VC 서명자가 허용 목록이나 캐시 없이 원격
@contextURL을 HTTP로 가져오던 동작이 수정되었습니다.securityOID4VCI did 속성 고유성 검증
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 사용자가 수정할 수 있는 did 속성을 자격 증명 주체로 사용하던 방식에 영역 내부 고유성만 적용되던 문제가 수정되었습니다.
securityOID4VCI 자격 증명 요청 암호화 방식 제한
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 자격 증명 요청 복호화에서 RSA-OAEP-256 암호화 키에 RSA1_5를 허용하던 문제가 수정되었습니다.
securitySCIM 사용자 필터 그룹 소속 노출 수정
SCIM Users filters를 사용하는 경우에 적용됩니다.
SCIM Users filters를 사용하는 경우에 적용됩니다. FGAP에서 숨긴 그룹 소속이 필터를 통해 노출되던 문제가 수정되었습니다.
securitySCIM 그룹 필터 사용자 소속 노출 수정
SCIM Groups filters를 사용하는 경우에 적용됩니다.
SCIM Groups filters를 사용하는 경우에 적용됩니다. FGAP에서 숨긴 사용자 소속이 필터를 통해 노출되던 문제가 수정되었습니다.
securitySCIM 사용자 프로필 보기 권한 적용
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. 매핑된 속성의 읽기와 필터가 사용자 프로필 보기 권한을 우회하던 문제가 수정되었습니다.
securitySD-JWT 서명 알고리즘 검증
SD-JWT를 사용하는 경우에 적용됩니다.
SD-JWT를 사용하는 경우에 적용됩니다. JWS 헤더와 알고리즘이 다른 서명도 검증을 통과하던 문제가 수정되었습니다.
securityServer info 데이터베이스 정보 노출 수정
Server info를 사용하는 경우에 적용됩니다.
Server info를 사용하는 경우에 적용됩니다. 영역 보기 관리자에게 데이터베이스 운영 정보가 노출되던 문제가 수정되었습니다.
securitySAML
LogoutResponse서명 검증 추가LogoutResponse를 사용하는 경우에 적용됩니다.LogoutResponse를 사용하는 경우에 적용됩니다. 인바운드LogoutResponse메시지의 서명 검증이 추가되었습니다.securityOIDC 동적 클라이언트 등록 PUT 오류 수정
OIDC Dynamic Client Registration PUT을 사용하는 경우에 적용됩니다.
OIDC Dynamic Client Registration PUT을 사용하는 경우에 적용됩니다.
scope필드로 인증 없이 HTTP 500 오류를 일으킬 수 있던 문제가 수정되었습니다.security루트 경로 리다이렉트 보안 헤더 추가
http-relative-path를 구성한 경우에 적용됩니다.http-relative-path를 구성한 경우에 적용됩니다. 루트 경로 리다이렉트에 보안 헤더가 빠지던 문제가 수정되었습니다.securityOID4VCI RSA1_5 패딩 오라클 수정
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 자격 증명 요청에서 인증 없이 RSA1_5 패딩 오라클을 사용할 수 있던 문제가 수정되었습니다.
securityOID4VC 자격 증명 삭제 범위 제한
OID4VC를 사용하는 경우에 적용됩니다.
OID4VC를 사용하는 경우에 적용됩니다. 발급된 자격 증명 삭제 범위가 경로의 사용자나 영역으로 제한되지 않던 문제가 수정되었습니다.
securityWebAuthn 중복 자격 증명 저장 수정
WebAuthn을 사용하는 경우에 적용됩니다.
WebAuthn을 사용하는 경우에 적용됩니다. 하나의 등록 절차를 동시에 완료할 때 비밀번호 없는 자격 증명이 여러 개 저장되던 문제가 수정되었습니다.
securityLDAP 비밀번호 정책 응답 처리 수정
LDAP를 사용하는 경우에 적용됩니다.
LDAP를 사용하는 경우에 적용됩니다. 비밀번호 정책 응답 제어 구문 분석에서 경고와 오류 태그가 충돌하고, 잘못된 숫자 형식으로 로그인 실패가 처리되지 않던 문제가 수정되었습니다.
securitySCIM 구성원 변경 감사 기록 수정
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. 구성원 PATCH 이벤트에 변경된 관계가 감사 추적에 빠지던 문제가 수정되었습니다.
securitySCIM 기존 조회 역할 소속 추론 수정
SCIM을 사용하고 FGAP를 활성화하지 않은 경우에 적용됩니다.
SCIM을 사용하고 FGAP를 활성화하지 않은 경우에 적용됩니다. 기존 조회 역할이 리소스 간 소속을 잘못 추론하던 문제가 수정되었습니다.
securitySCIM 그룹 삭제 보호 적용
SCIM Group DELETE를 사용하는 경우에 적용됩니다.
SCIM Group DELETE를 사용하는 경우에 적용됩니다. 연쇄 삭제로 관리 리소스 보호를 우회할 수 있던 문제가 수정되었습니다.
securitySCIM 사용자 삭제 보안 상태 정리
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. 사용자 삭제 때 보안 상태 정리가 누락되던 문제가 수정되었습니다.
securityBrute-force 초기화 경계 기록 수정
brute-force detection을 사용하는 경우에 적용됩니다.
brute-force detection을 사용하는 경우에 적용됩니다. 초기화 경계에서 동시에 실패하면 새로 기록된 시도가 지워질 수 있던 문제가 수정되었습니다.
security
LoginFailureEntity실패 카운터 보존LoginFailureEntity를 사용하는 경우에 적용됩니다.LoginFailureEntity를 사용하는 경우에 적용됩니다. 장애 전환 뒤 비동기 커밋 분류가 실패 횟수 카운터를 버릴 수 있던 문제가 수정되었습니다.securityMulti-Cluster v2 데이터 손실 방지 설정 수정
Multi-Cluster v2를 활성화한 경우에 적용됩니다.
Multi-Cluster v2를 활성화한 경우에 적용됩니다. 임시 데이터의 기본 비동기 커밋이 RPO의 No data loss 설정과 충돌하던 문제가 수정되었습니다.
security자격 증명 제공 역할 이름 공간 검증
credential offers를 사용하는 경우에 적용됩니다.
credential offers를 사용하는 경우에 적용됩니다. 같은 이름의 클라이언트 역할이 역할 이름 공간 혼동으로 다른 사용자 대상의 자격 증명 제공을 승인하던 문제가 수정되었습니다.
securityOID4VCI 리프레시 토큰 재사용 수정
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 교체된 OID4VCI 리프레시 토큰을 반복 사용해 자격 증명 권한을 다시 발급받을 수 있던 문제가 수정되었습니다.
securitySD-JWT 자격 증명 수명 제한
SD-JWT를 사용하는 경우에 적용됩니다.
SD-JWT를 사용하는 경우에 적용됩니다. 사용자가 수정할 수 있는 매핑 속성으로 발급자가 설정한 수명을 늘릴 수 있던 문제가 수정되었습니다.
securityOID4VCI 승인 속성 시점 적용
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 자격 증명 발급이 관리자가 승인한 속성 시점을 무시하던 문제가 수정되었습니다.
securityOID4VCI 요청 인증 순서 수정
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. bearer 인증 전에 인증되지 않은 자격 증명 요청이 개인 키 JWE 복호화를 실행하던 문제가 수정되었습니다.
securityOID4VCI 특정 제공 권한 검증
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 탈취한 특정 제공을 갱신해 다른 사용자가 제공 필수 발급을 우회할 수 있던 문제가 수정되었습니다.
securityOID4VCI SD-JWT 배열 클레임 공개 수정
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. SD-JWT 발급에서 배열 클레임을 전부 공개하거나 전부 숨기도록 처리하던 문제가 수정되었습니다.
security
kcadm설정 파일 권한 수정kcadm을 사용하는 경우에 적용됩니다.kcadm을 사용하는 경우에 적용됩니다. 기존 설정 파일의 모든 사용자 읽기 권한을 그대로 유지하던 문제가 수정되었습니다.securitySCIM 검색 필터 로그 노출 수정
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. 검색 필터 원문이 디버그 로그에 기록되던 문제가 수정되었습니다.
security복구 사이트 보안 설정 갱신 수정
사이트를 사용하는 경우에 적용됩니다.
사이트를 사용하는 경우에 적용됩니다. 복구된 사이트가 최대 한 시간 동안 오래된 보안 설정을 적용할 수 있던 문제가 수정되었습니다.
securityOID4VCI 접근 토큰 사용 범위 제한
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. OID4VCI 접근 토큰을 자격 증명 endpoint에서만 사용할 수 있도록 수정되었습니다.
securityOID4VCI 메모리 사용 및 압축 해제 제한
OID4VCI를 사용하는 경우에 적용됩니다.
OID4VCI를 사용하는 경우에 적용됩니다. 메모리 누수를 막고 압축 해제 크기 제한을 추가했습니다.
security조직 IdP 연결 정책 가져오기 수정
조직 기능을 사용하는 경우에 적용됩니다.
조직 기능을 사용하는 경우에 적용됩니다. 영역 가져오기가 조직과 IdP 연결 정책을 허용적인 기본값으로 되돌리던 문제가 수정되었습니다.
security조직 IdP 연결 범위 검증
조직 기능을 사용하는 경우에 적용됩니다.
조직 기능을 사용하는 경우에 적용됩니다. IdP 조회에서 호출자 범위를 벗어난 조직 연결이 노출되던 문제가 수정되었습니다.
security클라이언트 범위 endpoint 권한 수정
client-scoped endpoints를 사용하는 경우에 적용됩니다.
client-scoped endpoints를 사용하는 경우에 적용됩니다.
view-clients가view-users제한을 우회하던 문제가 수정되었습니다.securityAdmin v2 API 비밀값 교체 정책 적용
Admin v2 API를 사용하는 경우에 적용됩니다.
Admin v2 API를 사용하는 경우에 적용됩니다. PATCH가 클라이언트 비밀값 교체 정책을 우회하던 문제가 수정되었습니다.
securityOIDC 로그아웃 로그 삽입 수정
OIDC 로그아웃 endpoint를 사용하는 경우에 적용됩니다.
OIDC 로그아웃 endpoint를 사용하는 경우에 적용됩니다. 정제되지 않은
client_id로 로그를 삽입할 수 있던 문제가 수정되었습니다.securitySCIM 리소스 ID 피싱 수정
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. SCIM 리소스 ID 피싱 문제가 수정되었습니다.
securityAdmin API v2 클라이언트 비밀값 노출 수정
admin/api를 사용하는 경우에 적용됩니다.admin/api를 사용하는 경우에 적용됩니다.view-clients역할 보유자에게 평문 클라이언트 비밀값을 반환하던 문제가 수정되었습니다.breakingSCIM 사용자 이름 편집 설정 적용
SCIM을 사용하는 경우에 적용됩니다.
SCIM을 사용하는 경우에 적용됩니다. 사용자 이름 편집 설정을 끈 상태에서도 SCIM API로 사용자 이름을 바꿀 수 있던 문제가 수정되었습니다.
security조직 매퍼 소속 검증
identity brokering을 사용하는 경우에 적용됩니다.
identity brokering을 사용하는 경우에 적용됩니다. 단일 값 조직 매퍼가 공격자가 선택한 비회원 조직을 내보낼 수 있던 문제가 수정되었습니다.
security조직 그룹 역할 메타데이터 노출 수정
조직 기능을 사용하는 경우에 적용됩니다.
조직 기능을 사용하는 경우에 적용됩니다. 조직 그룹 표현이 권한 없는 관리자에게 클라이언트 및 영역 역할 메타데이터를 노출하던 문제가 수정되었습니다.
breakingKeycloak Realm Operator 제거
Keycloak Realm Operator를 사용하는 경우에 적용됩니다.
Keycloak Realm Operator를 사용하는 경우에 적용됩니다. Keycloak Realm Operator가 수명 종료되어 제거되었습니다.
breakingOIDC Device flow 범위 검증
OIDC를 사용하는 경우에 적용됩니다.
OIDC를 사용하는 경우에 적용됩니다. Device flow의
scope매개 변수에 클라이언트가 허용하지 않은 범위가 있어도 오류를 내지 않던 문제가 수정되었습니다.
미리 준비 (10)
deprecatedMulti-cluster v1 사용 중단 예정제거 시점 미정
multi-site를 활성화한 경우에 적용됩니다.multi-site를 활성화한 경우에 적용됩니다.deprecated
login-failures:v1인메모리 방식 사용 중단login-failures:v1을 사용하는 경우에 적용됩니다.login-failures:v1을 사용하는 경우에 적용됩니다. 이전 인메모리 방식은login-failures:v1로 남아 있지만 사용 중단 예정입니다.deprecatedKerberos Credential delegation 사용 중단
Kerberos를 사용하는 경우에 적용됩니다.
Kerberos를 사용하는 경우에 적용됩니다. Kerberos Credential delegation이 사용 중단 예정으로 지정되었습니다.
deprecated기존 OIDC 클라이언트 스위치 사용 중단
OpenID Connect Compatibility Modes를 구성한 경우에 적용됩니다.OpenID Connect Compatibility Modes를 구성한 경우에 적용됩니다. 해당 설정의 기존 OIDC 클라이언트 스위치가 사용 중단 예정으로 지정되었습니다.deprecated휘발성 세션 사용 중단
휘발성 세션을 구성한 경우에 적용됩니다.
휘발성 세션을 구성한 경우에 적용됩니다. 휘발성 세션이 사용 중단 예정으로 지정되었고 세션 캐시를 사용하지 않도록 선택할 수 있게 되었습니다.
deprecated
Full scope allowed사용 중단Full scope allowed를 구성한 경우에 적용됩니다.Full scope allowed를 구성한 경우에 적용됩니다. 해당 클라이언트 스위치가 사용 중단 예정으로 지정되었습니다.deprecated비 OIDC 클라이언트 등록 제공자 사용 중단
클라이언트 등록 제공자를 사용하는 경우에 적용됩니다.
클라이언트 등록 제공자를 사용하는 경우에 적용됩니다. OIDC 이외의 클라이언트 등록 제공자가 사용 중단 예정으로 지정되었습니다.
deprecated
AUTH_SESSION_ID쿠키 경로 사용 중단AUTH_SESSION_ID쿠키를 구성한 경우에 적용됩니다.AUTH_SESSION_ID쿠키를 구성한 경우에 적용됩니다. 고정 세션을 위한 쿠키 경로 기능이 사용 중단 예정으로 지정되었습니다.deprecatedclusterless 기능 사용 중단
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)
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.