Spring Security 3.2から4.0に移行したんですが、いくつかの修正が必要でした。
http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html
はい終了・・・っていうのもアレなんで、このブログエンジンであるblog-java1の移行について書きます。
access="ROLE_USER"
をaccess="hasRole('USER')"
などに書き直すか、use-expressions="false"
を明記します。
ガラケーサイト以外はあまり困らなそうです。
j_username
からusername
になったj_password
からpassword
になった/j_spring_security_check
から/login
になった?login_error
から?error
になった/j_spring_security_logout
から/logout
になったアプリケーションの改修が面倒な場合は、旧値を明記することでも対応できます。
セキュリティ強化のため以下設定がデフォルトで有効になりました。
有効になっても問題になりにくいと思いますが、個別で無効化できます。
CSRF対策がデフォルトで有効になりました。未実装だとPOST時にトークンエラーになりますが、エラーメッセージに出るのですぐに気付けるはずです。別のCSRF対策が作り込んであれば、無効化してよいでしょう。
ROLE_
が強制されるこれはちょっとハマりました。
blog-java1では、管理者ロールをusersテーブルのrole列に格納しており、ADMIN
という文字列を使用していました。prefixがROLE_
ではないため、ログインできなくなります。SQL文でROLE_ADMIN
へupdateする必要がありました。
blog-java1のソース差分です。
https://github.com/af-not-found/blog-java1/commit/ba445dabf272468673b86579597fa41099899049
Spring4とJava8のアップグレードもいっぺんにやりました。興味があれば直前のコミットを見てください。
メジャーバージョンアップだけあって、けっこうな変更量です。やってて良かったSelenium。