一部のパスだけ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には、これを適用してはいけない。

関連記事


  1. Spring Security + ThymeleafでAjaxリクエストにCSRF対策トークンを適用
  2. Spring BootアプリにFlywayを導入してみた
  3. Spring Web MVCのAuto Configuration周辺のクラス図を描いてみた
  4. ModelMapperで1対1に対応しないフィールドのマッピング
  5. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  6. Spring BootをGoogle App Engineスタンダード環境にデプロイする
  7. Spring Boot アノテーション集

comments powered by Disqus