작성
·
38
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
keycloak 을 authorization server 로 사용하는데요.
키클록에 등록되는 유저와 유저별 권한과 별개로,
서비스의 메뉴별 권한을 상세 설정하기 위해서 client 에서 서비스 권한 관리를 하고 메뉴 접근 권한 관련된 token 을 발행한다고 하면, resource-server 에 jwt-set-uri 를 client 서버 endpoint 로 하고, client 에서 jwkset 을 반환하는 방식이 가능한지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Keycloak을 Authorization Server로 사용하고, 서비스의 메뉴별 권한 관리를 위해 클라이언트에서 별도로 서비스 권한 관련 토큰을 발행하는 경우를 고려하고 계십니다. 클라이언트에서 발행한 토큰의 유효성 검증을 위해 Resource Server의 spring.security.oauth2.resourceserver.jwt.jwk-set-uri
를 클라이언트 서버 엔드포인트로 설정하고, 클라이언트에서 JWK set을 반환하는 방식에 대해 문의하셨습니다.
Spring Boot에서 제공하는 Spring Security OAuth2 Resource Server 구성은 spring.security.oauth2.resourceserver.jwt.jwk-set-uri
프로퍼티를 통해 JWK Set URI를 지정하는 것을 지원합니다. 이는 Resource Server가 JWT 토큰을 검증할 때 사용하는 공개 키들의 집합을 제공하는 URI입니다. 따라서, 클라이언트에서 해당 엔드포인트를 제공하고 JWK Set을 올바르게 반환한다면, Resource Server는 이를 활용하여 클라이언트에서 발행한 토큰의 서명을 검증할 수 있습니다.
클라이언트가 JWT를 포함한 JWK Set을 관리하고 제공할 수 있으며, Resource Server의 설정이 이를 가리키게 한다면, 귀하가 설명한 방식으로 서비스 메뉴 접근 권한에 대한 토큰 발행 및 검증이 가능합니다. 단, 이 과정에서 클라이언트 측에서 보안적인 측면을 잘 관리하고, JWK Set을 안전하게 제공하는 것이 중요합니다. 또한, Resource Server와 클라이언트 간의 신뢰 관계가 구축되어야 합니다.
자세한 구현 방법과 보안 관련 사항은 Spring Security OAuth2의 공식 문서와 Keycloak의 관련 문서를 참고하시기 바랍니다.