Spring Security 에러

Sol's·2022년 12월 6일
0

오류

목록 보기
2/18

Spring Security를 연습하기 위해
스프링 프로젝트를 만들때 dependency에 Spring Security를 넣었다.

implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'

401에러발생

그리고 Api를 호출해 봤는데 No Content와 함께 401에러가 떴다.

원인

401에러를 검색해보니 Unauthorized 오류라고 해서 문뜩 프로젝트를 빌드할때 Security를 넣은것이 생각이 났다...

Spring Security를 넣으면
Client에서 API를 통해 요청을 보내면 인증계층(Filter Chain)을 거친 후 EventHandler를 거쳐 Controller로 가게 된다.

여기서 인증계층(FilterChain)의 기본값은 모든 요청 막는다.

그래서 인증계층(FilterChain)에서 원하는 Endpoint를 허용해 주어야 한다.

.antMatchers("/api/**").permitAll()
.antMatchers("/api/v1/users/join",api/v1/users/login").permitAll()

해결방법

Security 세팅을 해주었더니 정상작동 되었다.

@EnableWebSecurity
@Configuration
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        return httpSecurity
                .httpBasic().disable()
                .csrf().disable()
                .cors().and()
                .authorizeRequests()
                .antMatchers("/api/**").permitAll()
                .antMatchers("/api/v1/users/join", "/api/v1/users/login").permitAll() // join, login은 언제나 가능
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS) // STATELESS = jwt사용하는 경우 씀 : 매번 토큰을 사용하는 개념?
                .and()
//                .addFilterBefore(new JwtTokenFilter(userService, secretKey), UsernamePasswordAuthenticationFilter.class) //UserNamePasswordAuthenticationFilter적용하기 전에 JWTTokenFilter를 적용 하라는 뜻 입니다.
                .build();
    }
}

Security에 대해서는 좀 더 공부를 해봐야 겠다.

profile
배우고, 생각하고, 행동해라

0개의 댓글