一部のパスだけ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 アノテーション集

tosi avatar
tosi
Web Application Engineer, Java / Spring / Azure / GCP
comments powered by Disqus