728x90

Keycloak 4

[Keycloak] 어드민 API 호출 권한, 사용자에게 직접 부여하기

이번 글에서는 Keycloak의 Admin API 호출 권한을 클라이언트가 아닌 개별 사용자에게 직접 부여하는 방법을 정리합니다. 일반적으로 권한은 클라이언트에 설정되지만, 특정 사용자만 API 호출 권한을 갖게 하려면 직접 사용자에게 역할을 부여해야 합니다.목표 시나리오특정 사용자가 Keycloak Admin API 호출에 필요한 권한을 직접 갖도록 설정예를 들어, 특정 관리자가 직접 사용자 정보 조회 및 그룹 조회 등의 API를 호출할 수 있게 설정왜 사용자에게 직접 역할을 부여하는가?장점 설명세부 권한 관리특정 사용자에게만 정교하게 권한 부여임시 권한 부여 가능긴급 상황 등 일시적으로 API 호출 권한 부여 가능최소 권한 원칙 준수클라이언트 전체가 아닌 특정 사용자에게만 제한적으로 권한 부여Keyc..

Keycloak 2025.04.01

[Keycloak] Spring Boot Resource Server 연동하기

이 글에서는 Keycloak 26과 Spring Boot 기반의 리소스 서버 간의 JWT 연동 방법을 설명합니다. 특히, 리소스 서버가 Keycloak에 클라이언트로 별도 등록되지 않고도 JWT를 검증하는 방법, JWT 파싱 컨버터 설정 및 기본 보안 설정을 다룹니다.리소스 서버는 Keycloak에 클라이언트로 등록될 필요가 없습니다.JWT의 iss 클레임과 리소스 서버의 issuer-uri 설정이 정확히 일치해야 합니다.리소스 서버는 {issuer-uri}/protocol/openid-connect/certs를 통해 JWT 파싱을 위한 컨버터 설정이 필요합니다.간단한 Security 설정을 진행합니다.Spring Boot 프로젝트 의존성 설정Gradle 설정 예시 (build.gradle.kts)dep..

Keycloak 2025.03.26

[Keycloak] JWT에 Custom 스코프 추가하기

이 글에서는 최신 버전인 Keycloak 26을 기준으로 JWT에 사용자가 소속된 그룹 정보를 {id, name} 형태로 추가하기 위한 Client Scope 설정 및 Custom Mapper를 구현하는 방법을 자세히 다룹니다.1. 요구사항 정의Keycloak에서 발급한 JWT의 Payload에 사용자가 속한 그룹의 id와 name 정보를 배열 형태로 추가합니다.예상되는 Payload 구조:{ "sub": "12345678-1234-1234-1234-123456789abc", "preferred_username": "johndoe", "group_info": [ {"id": "group-1-id", "name": "Admins"}, {"id": "group-2-id", "name": "U..

Keycloak 2025.03.26

[Keycloak] Custom API

Keycloak를 도입하여 인증·인가를 간편하게 구성할 수 있지만, “Admin REST API”로는 사용자와 그룹 정보를 한꺼번에 조회하기가 쉽지 않습니다.이를 위해 RealmResourceProvider라는 확장(SPI)을 구현해 N+1 문제를 개선하고, 하나의 엔드포인트에서 사용자와 그들의 그룹 목록을 동시에 가져오는 방법을 소개합니다.문제: 기본 Admin API의 N+1 호출Keycloak에는GET /admin/realms/{realm}/users : 사용자 목록 (그룹 정보 X)GET /admin/realms/{realm}/users/{userId}/groups : 해당 사용자의 그룹 목록 엔드포인트만 제공됩니다.수많은 사용자에 대해 그룹 정보를 확인하려면,사용자 목록 API 호출 → 사용자 ..

Keycloak 2025.03.04
728x90