spring-securityを3から4にあげた時にはまったこと


概要

Spring3から4へのアップデート中にspring-securityをアップデートする必要がありました。
Spring4にアップデートして諸々対応後リリースして動作確認してみると、ログイン時に「403 Forbidden」となってしまいました。

解決策

以下の3点の修正でアップデートできました。

  • CSRFの設定をdisableにすること
  • アクセス制限のフォーマットの変更
  • ログインフォームのname属性名の変更

詳細

基本的には以下のブログにある通りです。
(お世話になりました...)

このブログで紹介してくれている内容のうち、
僕のプロジェクトの場合以下の二点のみの修正で良さそうでした。

  • <form-login>のデフォルト値変更
  • applicationContext-security.xmlの変更

この後、idとpasswordを入れてログインしようとすると403のエラーが出てしまいました。

tomcatのエラーログをみるとなんかそれっぽいログがでていました。

10:12:47 [http-bio-8080-exec-5] DEBUG o.s.security.web.csrf.CsrfFilter - Invalid CSRF token found for http://xxxxxxxx:8080/admin/security_check

しぶしぶマイグレーションガイドを見ると、CSRFの設定が必要とわかりました。
http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html

社内のCSRFの危険性もあまりないと判断して、以下の設定をして一件落着でした。

<http>
    ...
    <csrf disabled="true"/>
</http>