Spring boot パスワードをハッシュ化する

Spring bootではセキュリティ関連の機能も充実しています。

ユーザ新規登録した際のパスワードをハッシュ化してデータベースに保存しておきます。

1、build.gradleに追記
dependenciesに
compile('org.springframework.boot:spring-boot-starter-security')
を追記します。

2、ハッシュ化処理
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(str);

3、DBに保存
ハッシュ化すると長くなるのでパスワードを保存するフィールドも長くしておきます
最低60桁
ハッシュ化したパスワードをDBに保存します。

4、アプリケーション起動
$ gradle bootRun
起動するとユーザ名とパスワードを聞かれます。
画像


boot:spring-boot-starter-securityを追加すると自動的にBASIC認証するようになるそうです。
ユーザ名はuserで固定
パスワードはコンソールに以下のように表示されているはずです。
Using default security password: 6cff2923-7ddd-4883-bfd8-9e0a7447e4eb

ハッシュ化については以下が詳しいです。
http://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/Authentication.html#springsecurityauthenticationpasswordhashing
http://www.slideshare.net/navekazu/spring-bootweb-55470364



閑話休題
前任者(もういない)が作成したプロジェクトを変更するためにソースコードを社内のレポジトリからダウンロードしてビルド、ログインしようとしたらパスワードが分からない、書いてない。
テーブルの初期値を入れるSQL文には既にハッシュ化した値を入れてる。
そしてハッシュ化した値を元に戻す機能はない(EncodeはあってもDecodeはない)
しょうがないので、適当にパスワードを決めてハッシュ化したものでテーブルのpasswordフィールドを書き換えてログインしました。ちゃんちゃん

この記事へのコメント

この記事へのトラックバック