Spring Bootは、セキュリティフィルタBeanを作っている分だけ、無料で認証できちまうんだ
要約
78.10 Add a Servlet, Filter, or Listener to an Application曰く。
any
Servlet
orFilter
beans are registered with the servlet container automatically.
Spring Security 使った自前の認証フィルタを @Component
付けて作ったりなんかした際に意図しない URL path にも認証がかかってしまう。
んゴ。
困ってる実例集
- Add an annotation to exclude Filter @Beans from registration #16500 - spring-projects/spring-boot
- Spring Boot with Spring Security の Filter 設定とハマりポイント - Qiita
- サンプルコード: https://github.com/yukihane/hello-java/tree/master/spring/filter-auto-registration-example
- 手順 4.のコミット時点のコードで既にフィルタが有効化されてしまっている
対策
どちらかで対策できる。
- フィルタを Bean として作成しない
- Disable Registration of a Servlet or Filterの説明に従う:
FilterRegistrationBean#setEnabled(false)
- 前述のコードで例示