inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Users Microservice - 인증처리구현

안녕하세요 인증/ 인가에 대해서 질문 있습니다.

188

qheogus55

작성한 질문수 42

0

안녕하세요 강의 잘 듣고 있습니다.

MSA 환경에서 SPRING CLOUD GATEWAY를 사용할때 예를들어 유저 서비스에서 JWT 서비스(생성, 검증)를 구성하고 SPRING CLOUD GATEWAY feign client로 통신하고 토큰을 검증하고 각 모듈로 헤더를 통해서 userId, role을 전달할때 api별 권한을 관리를 어떻게 하는지는 궁금합니다.

스프링 클라우드 게이트웨이에 SecurityConfig에서 모든 모듈에 대한 url에 권한을 설정하기에는 너무 많은 api별 권한을 적어야놔야 할것같아서 이게 맞나 싶습니다

혹시 각 모듈마다 ApiGatewayAuthenticationFilter를 만들어서 헤더 값을 통해서 아래 코드와 같이 SecurityContextHolder를 주입시켜서 각 모듈에 대한 SecurityConfig에서 권한을 관리 하거나 @PreAuthorize를 통하여 관리하거나 실무에서는 어떤 방법을 쓰는지 궁금합니다!!!
List<SimpleGrantedAuthority> authorities = Collections.singletonList(
new SimpleGrantedAuthority(formattedRole));

UsernamePasswordAuthenticationToken authentication =
new UsernamePasswordAuthenticationToken(userId, null, authorities);

SecurityContextHolder.getContext().setAuthentication(authentication);


더 좋은 방법이 있다면 알고 싶습니다!!

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
qheogus55님, MSA 환경에서 API별 권한 관리를 어떻게 할지 고민하시는군요!

스프링 클라우드 게이트웨이에서 각 모듈에 대해 권한 관리를 효율적으로 하려면 다음과 같은 방법들이 있습니다:

  1. Centralized Authorization Service: 중앙 집중식으로 권한을 관리하는 서비스(예: OAuth2 서버)를 구성합니다. 각 모듈이 이 서비스를 통해 권한을 확인합니다. 이를 통해 권한 관리를 단일화하고 더 쉽게 유지보수할 수 있습니다.

  2. Spring Security with JWT: 모든 요청에 대해 JWT를 사용하여 사용자 정보를 포함시키고, 각 서비스가 JWT를 검증하여 사용자 및 권한 정보를 검토할 수 있도록 합니다. 각 모듈에서 SecurityContext 를 통해 권한을 설정하고, 엔드포인트별로 @PreAuthorize 등을 사용하여 세부적인 권한 관리를 할 수 있습니다.

  3. Role-based Access Control (RBAC): 역할 기반 권한 관리를 통해 API별로 접근 권한을 설정합니다. SecurityConfig에서 URL과 권한을 매핑하거나, @PreAuthorize 어노테이션을 활용해 컨트롤러의 메소드 수준에서 권한을 제어합니다.

각 방법마다 장단점이 있으므로, 프로젝트의 요구사항과 팀의 역량에 맞춰 적절한 방법을 선택하시면 됩니다. 특히 대규모 MSA 구조에서는 중앙 집중식 권한 관리가 더 나은 경우가 많습니다.

위의 방법들을 참고하시면서, 실무 상황에 맞게 적절하게 변형 및 적용해 보는 것이 좋습니다.

추가적으로 더 깊이 있는 내용은 Spring Security Reference Guide를 참고하세요.

감사합니다!

kafka 업데이트 강의 듣고 시포요

0

82

1

강의 교안

0

68

1

마이크로서비스간 통신 시, 인증 처리

0

76

1

api gateway 에서 인증 처리

0

62

1

섹션 19 질문드립니다

0

50

1

강의 자료 업데이트

0

80

1

부하분산 강의 섹션

0

55

1

강의자료는 어디에서?

0

68

1

강의 자료는 어디서 다운 받을 수 있나요?

0

108

1

전체 사용자 조회시 오류

0

56

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

107

2

학습 방향

0

93

2

카프카 커넥터 사용 목적 문의

0

84

2

kafka 강의

0

104

2

서비스 디스커버리 종류

0

85

2

강의 자료에 대해서 궁금해요

0

113

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

87

2

Kafka Source Connect 버전 에러

0

82

2

소스커넥터는 사용안한 거 맞죠?

0

79

2

강의자료 업데이트 문의

0

93

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

55

1

강의 업데이트 계획이 궁금합니다.

0

110

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

160

2

어떤 것이 업데이트 된 건가요?

0

160

2