【Java】パスワードのハッシュ化とログイン認証
スポンサーリンク
こんにちは。たろすです。
今回は安全なアプリを開発するために重要なパスワードのハッシュ化について説明します。
ハッシュ化のアルゴリズムとしては「bcrypt」を使用します。
解説
認証関連はAutuUtilクラスに実装されています。
まずはSpring Securityを使うために以下をインポートします。
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
パスワードのハッシュ化
/** * ユーザーを登録する * @param user * @return */ public boolean registerUser(UserSample user) { BCryptPasswordEncoder bcpe = new BCryptPasswordEncoder(); // ハッシュ化 String encodeedPassword = bcpe.encode(user.getPassword()); user.setPassword(encodeedPassword); int result = userLogic.insertUser(user); if (result > 0) { return true; } return false; }
ハッシュ化するときにはBCryptPasswordEncoder.encode()メソッドを呼びます。
引数は生のパスワード(ハッシュ化する前のパスワード)です。
ログイン認証
/** * ログイン処理を行う * @param user * @return */ public boolean login(UserSample user) { // IDをキーにユーザー情報を取得 UserSample compUser = userLogic.getUserById(user.getId()); BCryptPasswordEncoder bcpe = new BCryptPasswordEncoder(); // 入力されたパスワードとDBのパスワード(ハッシュ化済み)を比較 if (bcpe.matches(user.getPassword(), compUser.getPassword())) { loginUser.setUser(compUser); return true; } return false; }
ユーザーから入力されたパスワードとDBに登録されているハッシュ化されたパスワードが一致しているかを確認するにはBCryptPasswordEncoder.matches()を使います。
第一引数は生のパスワード(ユーザーから入力されたパスワード)、第二引数はハッシュ化されたパスワード(DBに登録されたパスワード)です。
スポンサーリンク
実行
実行するとトップページが開くので「新規登録」を押します。
ID、名前、パスワードをすべて入力して「登録」を押します。
DBに登録されました。
パスワードはちゃんとハッシュ化されています。
先程登録したIDとパスワードを入力して「ログイン」を押します。
登録した名前が表示されます。