작성
·
207
0
apigateway의 application.yml을 보면 get요청에는 authorizationHeaderFilter를 적용시키고 있습니다.
authenticFilter는 그저 로그인 요청시 attempthAuthentication메소드와 successfulAthentication메소드를 통해 인증을 처리하고 response헤더에 토큰을 추가하는 역할입니다. 따라서 로그인 요청에만 적용하면 될 것 같은데, 깃허브의 최신코드 버전을 보면 거의 모든 요청에 authenticationFilter를 적용하고 있습니다. 왜 로그인요청이 아닌 다른 요청에다가 AthenticFilter를 적용할까요? apiGateway-service에서 GET요청만 AuthoriztionFilter를 적용하면 되지않나요??
http.authorizeHttpRequests((authz) -> authz
.requestMatchers(new AntPathRequestMatcher("/actuator/**")).permitAll()
.requestMatchers(new AntPathRequestMatcher("/h2-console/**")).permitAll()
.requestMatchers(new AntPathRequestMatcher("/users", "POST")).permitAll()
.requestMatchers(new AntPathRequestMatcher("/h2-console/**")).permitAll()
// .requestMatchers(new AntPathRequestMatcher("/welcome/**")).permitAll()
// .requestMatchers("/**").access(this::hasIpAddress)
.requestMatchers("/**").access(
new WebExpressionAuthorizationManager("hasIpAddress('127.0.0.1') or hasIpAddress('172.30.1.48')"))
.anyRequest().authenticated()
)
답변 1
0
안녕하세요, 이도원입니다.
apigateway-service의 application.yml 파일에서 user-service/** 영역에 AuthenticationHeaderFilter를 적용한 이유에 대해 문의하신 것 같습니다. 해당 AuthorizationHeaderFilter클래스에서는 요청하는 클라이인트의 Request Body에 서비스 사용에 필요한 토큰이 존재하는지 확인하는 로직이 포함되어 있습니다. 예제 프로젝트에서는 로그인과 같은 메소드 외에 다른 서비스 메소드들은 모두 인증이 필요하다는 가정아래 서비스하고 있습니다. 따라서 로그인을 제외한 다른 서비스들에서는 AuthorizationHeaderFilter에서 토큰이 존재하는 지와 유효한 지에 대한 여부를 판단하고, 진행하기 위해 적용시키고 있습니다.
올려주신 이미지가 질문 내용과 조금 다른 것 같은데, 혹시 제가 답변 드린 것 외에 다른 질문이셨다면 다시 글 남겨주시기 바랍니다.
감사합니다.