Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Spring Securityのハッシュ化したパスワードを受け取る方法が分からないです。

解決したいこと

Spring Securityを使用して、ユーザー登録や認証を行おうと思ったが、古いバージョンのものしか出てこなかったため、gitにあった参考のソースコードに手を加えようと考えました。
データベースの接続などはうまくできましたが、パスワードのハッシュ化をどこで行っているのかがわかりませんでした。
データベースにハッシュ化をしたパスワードを登録する以上、ハッシュ化されたパスワードを手に入れないとDBに新しいユーザーを登録することができません。。。

ハッシュ化の場所・ハッシュ化されたパスワードを手に入れることができない

参考元サイト

GitHub

自分で試したこと

SecurityConfig
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

があったので、Spring Securityを利用した他のwebアプリを作成し、同じくパスワードエンコーダを利用して、作成したハッシュ文字列をDBに登録してログインを試してみました。
→幾度か名前などを変えながら試してみたものですが、ログインできなかったです。
また、LoggingFilter クラスでエラー処理が行われているようなので、いろいろとパスワードが出ないか試してみましたが、ハッシュ化したパスワードを受け取ることができなかったです。

ハッシュ化したパスワードをを受け取れる場所や方法などをご教授いただければ幸いです。

0

1Answer

PasswordEncoderのインターフェースを見ると、平文のパスワードハッシュ化されたパスワードを渡して一致するか確認するメソッド(PasswordEncoder#matches)が提供されていることがわかると思います。
前者はブラウザ等で入力されたもの、後者はDB等に保存されたものが想定されています。なので、認証の際にハッシュ化していないことがわかると思います。

DB登録する場合等は自分でPasswordEncoder#encodeを呼び出して平文のパスワードをハッシュ化する必要があります。

1Like

Comments

  1. @koinunopochi

    Questioner

    ありがとうございます!!!
    公式docも見たのですが、パスワード→ハッシュ化の先入観で全く気が付いていませんでした...
    3日ほど詰まっていましたが、少し光明が見えてきました!!
    ありがとうございます!!

Your answer might help someone💌