반응형

스프링 시큐리티는 POST, PUT, DELETE 등의 method 요청할 이전 페이지에 발급된 CSRF토큰 정보를 체크하기 때문에 해당 정보를 header 넘겨주어야 처리가 된다.

 

GET은 상관없음!

 

어쨋든 테스트 API 를 만들고 postman으로 요청을 해보았는데

자꾸 403 forbidden 에러가 떨어진다.

 

그래서 CSRF token 이 발급되는 설정을 하고,

API를 요청할 때 'X-XSRF-TOKEN' 이라는 이름의 헤더이름으로 token을 넣어주면 된다.

 

CSRF Token 발급 설정

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter{
    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
    }
}

 

API 호출 테스트 (Postman)

쿠키로 넘어온 XSRF-TOKEN의 value 값을 복사하고

header에 X-XSRF-TOKEN 라는 key 와 복사한 token을 value 에 넣어주면

정살적으로 처리가 된다.

 

다시 헤더를 빼면?

403 Forbidden !

 

귀찮으니 개발할땐 csrf 설정을 꺼두고 하면된다!

.csrf.disable()

 

끝!

반응형
복사했습니다!