[Keycloak] Schema Extention 및 Claim 추가 설정
Keycloak admin Console에서
Clinet scopes에서 create client scope로 생성합니다.
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값으로 추가해줍니다.
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값에 맞게 넣어주면 됩니다.