inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

API Gateway - Route 처리

선생님 jwt 검증시 질문입니다!

356

마비미

작성한 질문수 19

1

기존의 모놀리스 서비스 방식에서 저는 클라이언트에서 보낸 jwt를 검증한 후 jwt 안의 아이디, 권한 값들을 security가 제공하는 Authentication 에 담아서 SecurityContextHolder에 넣은 후  Controller에서 Authentication 에 담긴 jwt 아이디 값을 불러와서 사용하거나 @PreAuthorize로 권한 처리를 했었습니다!

.

1. gateway-service에서 jwt 검증 후 jwt 안의 값들을 product-service, order-service, user-service 에서 사용할 수 있는 방법이 있을까요?? 

.

2. 기존에는 jwt 검증 오류시 json 응답을 해줬었는데

webflux에선 어떤방법으로 json 응답처리를 하는지 궁금합니다! 

인터넷에선 ServerResponse.status(..).contentType(..).body(..) 라는 방법이 나와있었는데 오류가나길래 인터넷에 있는 샘플 코드랑은 좀 다른 방식인것 같습니다..!

 

JPA spring-cloud spring-boot architecture msa Kafka

답변 1

1

Dowon Lee

안녕하세요, 이도원입니다. 

문의하신 질문에 답변 드립니다.

1. 강의에서도 user-service에서 발급 된 토큰의 검증을 apigateway-service에서 하고 있습니다. token 생성 시 필요한 데이터를 가지고 subject를 생성하시고, 같은 secret_key를 가지고 다른 서비스에서 토큰의 내용을 검증해서 사용하실 수 있습니다. 

2. Webflux에서 대한 부분은 지금 작성된 구조를 조금 변경해야 할 수도 있습니다. 단순하게 RestController에서 Login에 대한 Request를 처리한 다음, Token를 Response하기 위한 코드는 아래와 같이 처리할 수 있습니다.

@RequestMapping(value = "/login", method = RequestMethod.POST)
public Mono<ResponseEntity<?>> login(@RequestBody AuthRequest authRequest) {
return userService.findByUsername(authRequest.getUsername()).map((userDetails) -> {
if (passwordEncoder.encode(authRequest.getPassword()).equals(userDetails.getPassword())) {
return ResponseEntity.ok(new AuthResponse(jwtUtil.generateToken(userDetails)));
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
}).defaultIfEmpty(ResponseEntity.status(HttpStatus.UNAUTHORIZED).build());
}

참고로 Spring Framework 5 + Webflux를 이용한 Spring Boot에 대한 부분은 상반기 중으로 업데이트 예정입니다.

감사합니다.

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

0

79

1

강의 교안

0

64

1

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

0

73

1

api gateway 에서 인증 처리

0

61

1

섹션 19 질문드립니다

0

48

1

강의 자료 업데이트

0

79

1

부하분산 강의 섹션

0

53

1

강의자료는 어디에서?

0

66

1

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

0

107

1

전체 사용자 조회시 오류

0

54

1

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

0

106

2

학습 방향

0

92

2

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

0

83

2

kafka 강의

0

102

2

서비스 디스커버리 종류

0

84

2

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

0

109

2

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

0

85

2

Kafka Source Connect 버전 에러

0

80

2

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

0

78

2

강의자료 업데이트 문의

0

92

2

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

0

53

1

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

0

106

2

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

0

157

2

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

0

157

2