해결된 질문
작성
·
679
1
몇번씩 강의를 돌려봐도 틀린곳이 보이질 않아서 여러 테스트를 해보았습니다.
PC할당IP >>> MSA 직접 접근 시에는, 잘 작동하였는데 반해,
Gateway 경유(localhost) 시, `/welcome` `health_check` `users` GET/POST 모두 차단 되더라구요.
학습진행이 어렵게 되어 버렸어요..ㅠㅠㅠ.
강사님.
고민끝에 유추되는 원인인데요,
Gateway 서버의 IP 주소가 문제가 되어 이런현상이 생긴걸까요?
혹시 이런 논리일까요?
또는 이런 방식도 유추됩니다.
혹시 몰라 프로젝트 압축파일 링크를 달았습니다
읽어주셔서 감사합니다.
답변 5
1
안녕하세요, 이도원입니다.
Gateway IP를 확인해 보기 위해서, 현재 사용하고 계시는 config-service와 apigateway-service 에서 어떤 profile을 사용하는지 확인해 보시기 바랍니다. config-service 기동 시 로그에 에러 메시지가 없었는지 확인해 보시고, 어떤 profile로 기동되었는지 확인하신 다음, apigateway-service에서 해당 profile가 정상적으로 반영되었는지도 확인해 보셔야 할 것 같습니다. 그리고, apigateway-service에서 사용하는 bootstrap.xml 파일에 정의되어 있는 profile의 내용도 확인해 보시기 바랍니다. 예를 들어 다음과 같이 bootstrap.xml 파일이 설정되었다고 했을 경우,
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: user-service
http://127.0.0.1:8888/user-service로 액세스했을 때, 현재 어떤 gateway.ip 가 어떤 값으로 설정되었는지 확인해 볼 수 있습니다. 위에서 다른 분들이 답변 하셨던 것처럼, 현재 사용하고 있는 PC의 IP또는 PC에서 사용하고 있는 Gateway의 IP를 설정하셔야 합니다. 아니면, 127.0.0.1 (localhost)로 지정해서 처리하시고 전체 진행 과정이 어떻게 처리되는지 확인해 보시는 것도 좋을 것 같습니다.
404 에러는 해당 페이지가 존재하지 않는 것이기 때문에, IP 또는 endpoint가 잘못 된 경우이고, 403은 접근 제한이기 때문에 IP가 차단된 경우(또는 지정된 IP가 아닌경우)에 대한 오류, 401은 인증 오류로 인해 해당 리소스에 접근할 수 없는 오류입니다.
감사합니다.
1
안녕하세요. 저도 수강생인데. 그 부분으로 해매다가 답변드립니다.
WebSecurity.java 파일에서 hasIpAddress("192.168.XXX.XXX") 부분이 있는데... 해당 IP를 통해서
접근을 해야만 동작이 가능하더라구요.
그래서 저는 hasIpAddress -> permitAll로 변경 후 진행하고 있습니다.
hasIpAddress(String) : 주어진 ip 주소로 오는 요청은 참
참고바랍니다.
저의 경우 Window 기반 환경에 콘솔에서 ipconfig 로 알아낸다음 3가지 방식으로 다음 처럼 호출해봤어요
192.168.1.XXX:8000/user-service/health_check
: 결과 404 - 없는 페이지
localhost:8000/user-service/health_check
: 결과 403 - Access Denied
127.0.0.1:8000/user-service/health_check
: 결과 403 - Access Denied
이 방식으로도 안되셨던거죠?
작동은 여전히 안되지만, 저만 문제가 있나 해서, 낙심 중에 위안이 되었습니다^^;
0
0
음 같은 곳에서 막혔는데, 뒤쪽에있는 Configuration Service부분을 듣고 오면 해결되는 문제인 거 같네요. 답변들이.. 듣고도 해결이 안 되면 다시 질문 남기겠습니다.
0
결론:
의문점:
아래는 성공한 테스트 결과입니다.
MSA user-service > WebSecurity.java
public class WebSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
...
http.authorizeRequests().antMatchers("/**")
.hasIpAddress("127.0.0.1") ✔✔✔
...
...
...
}
}
이렇게 설정 후,
localhost 와 127.0.0.1 두가지의 경우로
아래와 같이 테스트를 진행했습니다.
강사님 제가 너무 이른 고민을 했었나 봅니다😢
아직 배우지 않은 config-service 에서 IP 설정이 가능했던 거군요!!?
apigateway 에 추가 방법도 숙지했습니다
저는 것도 모르고 계속 WebSecurity 설정만으로 어떻게 해보려고 별에 별 방법으로 테스트 해봤던것 같아요..^^;
명쾌한 답변 고맙습니다!