gateway와 userService 간의 인증 정보 공유 문제에 관해 질문 드립니다!
522
작성한 질문수 28
안녕하세요 선생님 강의 잘 듣고 있습니다.
강의 수강 중 질문이 생겨서요!
user-service는 mvc 기반의 app으로 spring security를 통해 인증을 처리하므로, tomcat의 JSESSIONID 를 기반으로 하여 Security Context에 Authentication 객체의 유무를 통해 인증이 된 사용자인지 안 된 사용자인지 Security Filter Chain에서 체크를 하는 것으로 알고 있습니다.
그런데
gateway에서 설정하신 application.yml 에 따르면 모든 요청 헤더에 존재하는 Cookie를 삭제하고 --> 서버에서 매번 새 요청으로 인식
gateway 는 netty 서버를 사용하고 user-service는 tomcat 서버를 사용하잖아요.
그래서 두 서버 사이 Context가 공유가 안 될것 같아서요... 그래서 gateway에서는 인증을 했다고 요청을 넘기지만 user-service에서는 그 요청을 받았을 때 해당하는 SESSIONID 의 Context에 Authentication 객체가 존재하지 않아 인증이 필요한 url에 접근할 수 없을 거라고 생각했습니다.어떻게 인증 완료 정보를 두 서비스가 공유할 수 있는 건가요??
또한 gateway도 이중화 구성이 가능한가요?.. userService를 2,3중화 한 것처럼 gateway도 여러 대의 인스턴스로 기동하면 eureka에서 다중 구성한 서버로 인식해주는 건가요??...
혹시 gateway에도 Spring Security를 적용시키는 경우도 있을까요?.. 권한 별 접근 제어를 구현하기 위해서는 해당 라이브러리를 사용해야 할 것 같아서요!
또한 gateway에서 커스텀 필터를 만들 때, apply 메소드의 return 타입이 GatewayFilter 로 되어있는데, Mono<Void> 타입으로 return을 해도 되는 건가요?... Mono<Void>는 mvc에서 return 타입이 void 인 것과 같은 의미 아닌가요?...
열심히 강의해주셨는데 질문의 너무 많아 죄송합니다..ㅠ 답변 기다리겠습니다! 항상 감사드립니다!!
답변 1
0
안녕하세요 qpal1zm23님, 질문 주셔서 감사합니다! 여러 가지 질문에 대한 답변을 드리겠습니다.
gateway와 user-service 사이에서 인증 정보를 공유하기 위해서는 세션 공유, 토큰 기반 인증 등의 방법을 사용할 수 있습니다. 간단한 방법으로는 JWT(Json Web Token)을 사용하여 gateway로부터 발급된 토큰을 user-service로 전달하여 인증 정보를 공유할 수 있습니다.
gateway도 이중화 구성이 가능합니다. 여러 대의 gateway 인스턴스를 기동하고 해당 인스턴스들을 Eureka 서버에 등록하여 다중 구성된 서버로 인식할 수 있습니다.
gateway에도 Spring Security를 적용시킬 수 있습니다. Spring Cloud Gateway는 일종의 필터 체인을 가지고 있어서 인증, 권한 등의 접근 제어를 구현할 수 있습니다.
GatewayFilter의 apply 메소드의 반환 타입은 Mono
이 맞습니다. Mono 는 비동기 처리를 위해 사용되며, 반환 값이 없음을 의미합니다. 따라서 Mono 를 반환하여도 문제가 없습니다.
답변이 도움이 되셨는지 확인 부탁드리며, 추가적인 질문이 있으시면 언제든지 주저하지 마시고 물어보세요. 즐거운 학습되시길 바랍니다! 감사합니다.
kafka 업데이트 강의 듣고 시포요
0
85
1
강의 교안
0
73
1
마이크로서비스간 통신 시, 인증 처리
0
79
1
api gateway 에서 인증 처리
0
65
1
섹션 19 질문드립니다
0
53
1
강의 자료 업데이트
0
82
1
부하분산 강의 섹션
0
57
1
강의자료는 어디에서?
0
71
1
강의 자료는 어디서 다운 받을 수 있나요?
0
110
1
전체 사용자 조회시 오류
0
58
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
110
2
학습 방향
0
95
2
카프카 커넥터 사용 목적 문의
0
85
2
kafka 강의
0
108
2
서비스 디스커버리 종류
0
87
2
강의 자료에 대해서 궁금해요
0
116
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
90
2
Kafka Source Connect 버전 에러
0
85
2
소스커넥터는 사용안한 거 맞죠?
0
81
2
강의자료 업데이트 문의
0
95
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
56
1
강의 업데이트 계획이 궁금합니다.
0
112
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
161
2
어떤 것이 업데이트 된 건가요?
0
164
2





