작성
·
805
4
시큐리티 접근관련 질문드립니다.
1. 여기 내용이
/** 모든 접근을 막는다.
hasIpAddress -> 해당 아이피는 접근을 허락한다.
이렇게 이해 했는데 맞나요??
2.
그러면
http://192.168.0.7:10942/welcome -> 접근가능
http://127.0.0.1:10942/welcome -> 403에러 (막힘)
(내 아이피만 접근하도록 하였으니)
이렇게 되더라구요..
그럼 여기서 게이트웨이로의 접근은 어떻게 되는지 봤는데
http://127.0.0.1:8000/user-service/welcome -> 접근가능
게이트 웨이에서 접근하면 접근이 가능하더라고요...(?)
게이트웨이로 접근하면 왜 스프링 시큐리티는 동작을 하지 않는것인가요??
답변 2
2
2
안녕하세요, 이도원입니다.
먼저 답변이 늦어 죄송합니다. -.-
문의하신 질문 중,
1) /** 은 무조건 모든 접근을 막는다기 보다는 뒤에 어떤 설정이 오는가에 따라서, 클라이언트의 요청을 허용하기도 하고 거부하기도 합니다. 우선 "모든 접근이 대상"이라는 의미는 맞습니다. hasIpAddress는 해당 IP의 접근만 Filter 처리를 위해 넘기겠다는 의미입니다.
2) 보내주신 내용처럼 "192.168.0.7"로 hasIpAddress()를 설정하였으면, 해당 IP에서만 /welcome을 허용해 주는 것이고, 127.0.0.1으로 접근하게 되면 오류가 맞습니다. 다만, apigateway-service에서는 요청된 /user-service/의 URI를 파악하여 user-service 애플리케이션으로 요청을 넘겨주고 있는데, 이때는 eureka에 등록된 USER-SERVICE는 애플리케이션을 찾아서 이동시켜주게 됩니다. (apigateway-service의 application.yml 파일 lb://USER-SERVICE 참조)
eureka에서 USER-SERVICE라는 애플리케이션를 검색하여 호출할때는 127.0.0.1이 아닌, apigateway-service가 등록된 IP(예를 들어, 192.168.0.7)로 받은 것처럼 됩니다. 이해를 돕기 위해, use-service에서 welcome 메소드의 요청이 어떤 IP로 전달되었는지 디버깅 모드로 보여드립니다.
위 디버깅 모드에서 "10.204.136.204" IP는 제가 기동하고 있는 환경의 IP입니다.
감사합니다.
답변 감사합니다.!