-
Keycloak client scope 정리메모 및 기타 2022. 11. 25. 12:22
OIDC 액세스 토큰이 생성되면 기본적으로 User의 모든 User role mapping이 토큰 내의 클레임으로 추가된다.
애플리케이션(클라이언트)은 이 토큰 정보를 사용하여 해당 애플리케이션이 제어하는 리소스에 대한 액세스 결정을 내린다.
만약 Application이 손상되거나 Realm에 등록된 악성 애플레케이션 클라이언트가 있는 경우,
공격자가 광범위한 권한을 가진 액세스 토큰을 얻을 수 있기 때문에 클라이언트의 권한 허용 범위를 제한할 필요가 있다.
keycloak에서는 이를 client scope로 처리한다.
Client scope란?
Client Scope는 액세스 토큰 내 선언된 Role을 제한하는 방법이다.
클라이언트가 사용자 인증을 요청할 때, 사용자가 받은 액세스 토큰에는 client scope에 대해 명시적으로 지정한 role mapping만 포함된다.
이렇게 하면 클라이언트에 사용자의 모든 권한을 부여하는 것 아니라 각 개별 액세스 토큰의 권한을 제한할 수 있다.
Client scope를 생성한 후, client scope level에서 protocol mapper를 추가하여 access token에 claim을 추가할 수도 있다.
client scope 생성 완료 후, 만들어놓은 client scope를 새로운 client 생성시 어떤 방식으로 추가할 것인지 결정할 수 있다.
1. Default client scope
client 생성시 자동으로 추가되는 client scope
2. Optional client scope
생성된 client에 optional 하게 추가할 수 있는 client scope
Reference
https://github.com/mschwartau/keycloak-custom-protocol-mapper-example/blob/master/README.md
반응형'메모 및 기타' 카테고리의 다른 글
ubuntu root 계정 ssh 접속 Script (0) 2023.01.04 Terraform AWS ec2 userdata로 httpd 생성하기 (0) 2022.12.02 golang reflect로 struct 필드 순회하기 (1) 2022.11.22 Network Trouble Shooting Pod Manifest (0) 2022.11.01 로컬 환경에서 kubelet metric 조회 (0) 2022.11.01