인프런 커뮤니티 질문&답변

ygh님의 프로필 이미지
ygh

작성한 질문수

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

Spring Cloud Bus 테스트

안녕하세요! 질문있습니다.

작성

·

622

0

안녕하세요! 좋은강의 감사드립니다 :)

강의보면서 한가지 의문사항이 생겨 질문 남깁니다.

지금 현재 제 local pc에서 postman을 통해

(POST) http://localhost:8888/user-service/users 와 같이 api gateway를 통해 user-service의 users 엔트포인트를 호출하게 되면 정상적으로 유저가 생성되는데

(POST) http://localhost:[user-service-port]/users 와 같이 직접 user-service로 endpoint를 호출할 때는 403 forbidden 에러가 발생합니다.

user-service의 WebSecurity 설정에서 /users 엔드포인트에 대한 접근 권한을 따로 허용하지 않았으니, 이는 당연하다고 생각됩니다. 하지만 이해가 가지않는 것은 api gateway를 통해 /user-service/users 와 같은 엔트포인트 호출을 하면 정상적인 결과를 받아 볼 수 있다는 것입니다.

일반적으로 생각해봤을때, api-gateway를 통한 (POST) /user-service/users 호출도 user-service의 security 설정에 의해 막혀야 되는 것 아닌가요?? 어쨰서 api-gateway를 경유하게되면 정상적인 응답을 받을 수 있는 것인지 궁금합니다.

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

IP Address를 확인하는 부분에서 등록된 IP 이외에 localhost, 127.0.0.1으로도 액세스 되지 않습니다. Spring Config Server에 등록된 IP로 사용하시면 되지 않을까 싶네요. 

감사합니다. 

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

제가 사용한 WebSecurity의 내용은 다음과 같습니다. 

위 코드에서 보시는 것처럼, 모든 요청에 대해 IP address만 확인하고, 추가적인 제한은 두고 있지 않습니다. 대신 api-gateway에서는 발행된 JWT 토큰 정보의 유효성을 가지고 user-service로 넘길지를 판단하고 있습니다. api-gateway에서 정상적으로 user-service로 요청이 전달되는 것은 JWT의 유효성에 문제가 없다는 것으로 생각되며, user-service에서 직접 사용자 추가가 되지 않는 경우에는 말씀하셨던 것처럼 WebSecurity 설정을 확인해 봐야 정확한 답변을 드릴 수 있을 것 같습니다. 아래 질문에 답변 드린 내용과 같이 확인 부탁드리며, 가지고 계신 코드를 공유해 주시면 에러 찾는데 도움이 될 것 같습니다. 

edowon0623@gmail.com

감사합니다. 

ygh님의 프로필 이미지
ygh
질문자

문제를 찾은것 같은데요.

제가 postman을 통해 유저생성 api를 날리는 과정에서 http://localhost:[user-service-port]/users와 같이 localhost라고 host를 명시해서

http.authorizeRequests().antMatchers("/**")
                .hasIpAddress(env.getProperty("gateway.ip"))         // 현재 내 local private ip 192.168.0.188
                .and()
                .addFilter(getAuthenticationFilter());

위 설정의 hasIpAddress에서 걸러진 것으로 판단됩니다.

 http://192.168.0.188:[user-service-port]/users 와 같이 직접 ip주소를 지정하여 요청을 보내면 제대로 응답이 오는 것을 확인했습니다.

번거롭게 해드려 죄송합니다.

ygh님의 프로필 이미지
ygh

작성한 질문수

질문하기