LabHub

Keycloak 과 기업 인증 · Keycloak 렐름·클라이언트·롤·그룹 · 실습

롤·그룹 매핑과 토큰 반영 확인

LabHub 에서 이어서 보기

목표

렐름 롤과 클라이언트 롤, 그룹, 컴포지트 롤을 만들어 토큰에 어떻게 실리는지 직접 확인하고, 스코프로 토큰을 좁히는 법까지 익힌다.

왜 중요한가

"롤을 줬는데 토큰에 안 보여요"는 Keycloak 을 쓰는 팀이 반드시 한 번은 겪는 문제입니다. 원인은 대개 셋 중 하나입니다. 렐름 롤과 클라이언트 롤이 토큰의 서로 다른 경로에 들어간다는 것을 모르거나(realm_access.rolesresource_access.<클라이언트>.roles), 클라이언트의 전체 스코프 허용이 꺼져 있거나, 그룹 상속을 기대했는데 매핑이 안 돼 있는 경우입니다. 이 실습은 세 가지를 각각 만들어 눈으로 확인하게 합니다. 특히 7번 스텝의 스코프 제한은 토큰 크기를 줄이고 최소 권한을 지키는 실무 기법이면서, 동시에 이 문제의 단골 원인이기도 합니다.

단계

1. 렐름 labhub2 에 렐름 롤 order-readerorder-admin 을 만든다. kcadm.sh get roles -r labhub2 에 둘 다 보여야 한다.
2. 클라이언트 api-svc 에 클라이언트 롤 refund 를 만든다.
3. 사용자 dev1 에게 렐름 롤 order-reader 와 클라이언트 롤 refund 를 부여한다.
4. dev1 로 비밀번호 그랜트 토큰을 받아 /root/kr/claims.json 에 페이로드를 저장한다. realm_access.rolesorder-reader 가, resource_access.api-svc.rolesrefund 가 있어야 한다.
5. 그룹 team-payments 를 만들어 렐름 롤 order-admin 을 매핑하고 dev1 을 그 그룹에 넣는다. 새 토큰의 realm_access.rolesorder-admin 이 나타나야 한다. /root/kr/group.txtgroup=team-payments inherited=order-admin 을 적는다.
6. order-admin 을 컴포지트 롤로 만들어 order-reader 를 포함시킨다. /root/kr/composite.txtcomposite=true includes=order-reader 를 적는다.
7. 클라이언트 web-appfullScopeAllowed 를 false 로 바꾸고 그 클라이언트로 받은 토큰에서 order-admin 이 빠지는지 확인한다. /root/kr/scope.txtfull_scope=false order_admin_in_token=false 를 적는다.

참고

단계 7개

  1. 렐름 롤 만들기
  2. 클라이언트 롤 만들기
  3. 사용자에게 롤 부여하기
  4. 토큰에 롤이 실렸는지 확인하기
  5. 그룹 만들고 롤 매핑 후 사용자 넣기
  6. 컴포지트 롤 구성하기
  7. 스코프로 토큰에서 롤 제외해 보기