概要
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>