Tutorials & Tips/KeyCloak Server

[Keycloak] Schema Extention 및 Claim 추가 설정

PHAROS IAM 2022. 12. 27. 18:19

 

Keycloak admin Console에서

Clinet scopes에서 create client scope로 생성합니다.

Create client scope 처음 화면
phone_number라는 이름으로 Client scopes 생성


Type을 Defalut/Optional로 생성이 가능합니다.

Save를 누르고 Client scope를 만들고 나면

 

Mappers 탭에서 mapper를 추가할 수 있습니다.

사전 정의된 매퍼를 사용할 수도 있고 매퍼를 새로 생성할 수도 있습니다.

Configure a new mapper를 클릭하게 되면 여러가지 속성을 사용하여 mapper를 생성할 수 있습니다.

여기서 User Attribute 속성을 사용하여 mapper를 생성해줍니다.

 

 

1-1. User Attribute의 값이 user Attributes의 key값과 매칭됩니다.

Claim JSON Type은 String, long, int, boolean, JSON 값을 설정할 수 있습니다.

 

 

해당 Client 을 클릭한 후 Client scopes탭에서 Add client scope를 클릭한 후 방금 만든 phone_number

값을 추가해줍니다. 추가할 때 Assigned type은 무조건 Default값으로 추가해줍니다.

 

https://jwt.io/

jwt.io에서 idToken 값을 확인해보면 

 


 

1-2.  Token Claim name 값을 phone123.phone 점(.)을 사용해서 이름을 정의하면

중첩된 JSON 객체로 생성됩니다.

 


1-3. Claim JSON Type : JSON 형식으로 보내려면

 

user Attributes value 값도 JSON 형식으로 맞춰줘야 합니다.

그렇지않으면 에러가 발생합니다.

 


2. Mapper type : Hardcoded claim으로도 claim을 생성할 수 있습니다.

Hardcoded claim으로 매퍼를 생성하면 user Attributes에 속성을 추가하지 않아도 바로 claim에 추가됩니다.

 

Token Claim Name : today

Claim value : 값을 여기에서 지정해주면 됩니다.

Claim JSON Type : JSON

 

만약 JSON Type이 JSON이면 Claim value값을  JSON 형식으로 만들어 주어야합니다.

그렇지않으면 에러가 발생합니다.




3. Claim에 address값 추가하기

Client scope에서  address를 클릭하고 난 후

Mappers 탭을 보게되면 기존에 만들어진 address mapper가 있습니다.

 

user Attributes Name 값을 user Attributes Key값에 맞게 넣어주면 됩니다.