一部のパスだけSpring SecurityのCSRF対策を無効化する
Spring SecurityではデフォルトでCSRF対策のトークンが有効になっている。
しかしこれが原因で、認証が不要なAPIでもAjaxでPOSTリクエストするとエラーで弾かれてしまう。
実装例
Spring 4系の実装例。 以下のような設定を書くことで、/no-token へのアクセス時にはCSRF対策のトークンチェックが行われなくなる。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 省略
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.ignoringAntMatchers("/no-token");
}
// 省略
}
当然ながら、認証が必要な情報をやりとりするAPIには、これを適用してはいけない。