• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

인증 관련하여 질문드립니다.

21.08.18 17:18 작성 조회수 131

0

좋은 강의 올려주셔서 감사합니다.
정말 도움이 많이 되고 있습니다. ㅜㅜ
인증 부분에서 궁금한 점이 있는데요,
이전에 User Service의 WebSecurity.java에서 아래 코드를 통해 전체 경로에 대해
AuthenticationFilter를 거치도록 한 것 같은데, 바로 호출이 되어서요.
		//인증이 된 상태에서만 통과시키도록. 
		http.authorizeRequests()
				.antMatchers("/**")
				.hasIpAddress("{source.ip}")	//source ip
				.and()
				.addFilter(getAuthenticationFilter());
gateway를 통해서 호출하는 경우에는 health_check 에도 토큰이 필요한 것 같았는데,
서비스 직접 호출 시에는 토큰이 필요하지 않은 이유가 무엇인지 궁금합니다.
추가로,
actuator/** 에 대해 permitAll은 왜 따로 해주신건지도 궁금합니다.
permitAll 하지 않아도 호출 하는데는 문제 없는 것 같더라구요.
감사합니다.

답변 1

답변을 작성해보세요.

0

Dowon Lee님의 프로필

Dowon Lee

지식공유자

21.08.18 18:40

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

apigateway-service를 거치지 않고 직접 user-service를 실행할 때는 Beaer JWT 유효성 여부를 체크하지 않습니다. 제약 사항으로는 IP Address만 유효하면 접근 허가가 됩니다. 따라서 apigateway-service를 통해 JWT의 유효성을 체크할 수 있도록 Filter를 추가하였습니다. 

actuator/**의 정보는 중요한 정보임으로 원칙적으로 security 설정에서 막아 놓는것이 필요합니다. 

http.authorizeRequests().antMatchers("/**").authenticated().anyRequest().permitAll()

그러나, 강의에서 사용한 예제에서는 위와 동일한 이유로, user-service를 직접 요청하는 경우에는 IP Address 외에는 막지 않고 있습니다. 해당 설정을 액세스 허용하려면 위와 같이 permitAll 설정해서 사용하시면 됩니다.

감사합니다. 

KiddingJust님의 프로필

KiddingJust

질문자

21.08.18 19:11

아 답변해주셔서 감사합니다!

gateway service의 application.yml에만 filter 를 등록해줘서, user service에서는 아무런 필터도 타지 않는 건가요??

강의 내용을 벗어난 질문일 수 있지만, 직접 user service를 실행할 때도 필터가 적용하게 하려면, user-service의 application.yml에 따로 설정을 해주어야하는 건지 궁금합니다. 

감사합니다.