[security] .permit() 과 Authorization header

Coastby·2022년 12월 21일
1

문제 해결

목록 보기
13/17
post-custom-banner

🚫 문제 상황

spring security를 이용해 jwt로 로그인 및 인증을 구현하고 있었다. 그런데 header의 Authorization에 jwt를 넣고 로그인을 다시 호출하니 jwt를 validation하는 로직이 실행되었다.

아래 SecurityConfiguration처럼 login하는 요청은 .permit()이 적용되어 있었다.

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfiguration {
    private final JwtUtil jwtUtil;
    private final JwtExceptionFilter jwtExceptionFilter;


    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        return httpSecurity
                .httpBasic().disable()
                .csrf().disable()
                .cors().and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)

                .and()
                .authorizeRequests()
                .antMatchers("/api/v1/users/join", "/api/v1/users/login","/api/v1/users/exception").permitAll()
//                .antMatchers( HttpMethod.GET, "/api/v1/posts").permitAll()
                .antMatchers("/api/v1/posts").authenticated()
                .anyRequest().hasRole("ADMIN")

                .and()
                .exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())
                .and()
                .exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint())
                .and()
                .addFilterBefore(new JwtFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class)
                .addFilterBefore(jwtExceptionFilter, JwtFilter.class)
                .build();
    }
}

⭕️ 해결

https://github.com/spring-attic/spring-security-oauth/issues/947
web security configuraion을 이용해서 spring security를 ignore하는 방법이 소개되었는데, 아무래도 이를 제외하는 것은 보안 상 바르지 않을 듯 하였다.
그리고 아래의 답변을 보았는데 결국은 요청이 오면 filter와는 상관없이 header를 validation하는 것과 관련이 있는 듯 하다. security에 대해 더 공부해야 한다!!!
결국은 이를 무시하려는 것보다 front 단에서 수정하여 굳이 Authorization 헤더가 필요없는 곳은 넣지 않도록 하는 것이 맞다.
그러나 다른 댓글에서 헤더가 쿠키에서 포함되어 오는 경우도 있다고 하니 상황에 따라 대처해야겠다.

profile
훈이야 화이팅
post-custom-banner

0개의 댓글