[TIL]PasswordEncoder整合関数
Spring Securityを使用する場合、パスワードを符号化するため、
また、パーソナル化された認証ロジックを実現するために、
この場合はパスワードの論理を検証する必要があり、データベースに格納されているパスワードはソース文字列:1234 DBに格納されているハッシュ元文字列: このように,encode法により文字列を符号化するたびに,結果は常に変化する.したがって,単純に文字列を比較する方法である+457914和を用いると,論理は自分の意思では働かない.
この場合、利用可能な方法は、
PasswordEncdoer
クラスを使用します.また、パーソナル化された認証ロジックを実現するために、
AuthenticationManager
およびAbstractAuthenticationProcessingFilter
を継承して素子を実現する.この場合はパスワードの論理を検証する必要があり、データベースに格納されているパスワードは
PasswordEncoder
符号化された文字列であり、Httpパラメータに渡されたデータは元の文字列であり、それをPasswordEncdoerと符号化し、データベースに格納されている値と比較すると、不一致の問題が発生する.$2a$10$j799cCVx1SUMl1WeAK72PufMWGgW2RyxAkYOq/wB75tx7c50GgCMa
encode(password);
符号化文字列:$2a$10$aHNgzU.kISAnHEGpznVA..9iPi6PogpQl8k0UfymVg3f/2qfgw4c.
この場合、利用可能な方法は、
equls()
クラスで提供されているPasswordEncoder
public boolean isMatches(String inDBPwd, String inputPwd){
boolean b = inDBPwd.equals(passwordEncoder.encode(inputPwd);
System.out.println(b); // true
boolean b = passwordEncoder.matches(inDBpwd, inputPwd);
System.out.println(b); // false
}
上記のコードから、データベースに格納されているハッシュ文字列と比較される文字列は、ハッシュ処理後に比較されるのではなく、ハッシュ処理前に元の文字列をパラメータとしてデータベースに格納する事実がわかる.Reference
この問題について([TIL]PasswordEncoder整合関数), 我々は、より多くの情報をここで見つけました https://velog.io/@albaneo0724/TIL-PasswordEncoder-matches-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol