Spring Security 3.1.4.RELEASEでは、古いorg.springframework.security.authentication.encoding.PasswordEncoder
廃止されましたを支持しますorg.springframework.security.crypto.password.PasswordEncoder
。私のアプリケーションはまだ一般に公開されていないため、非推奨ではない新しい API に移行することにしました。
これまで、ReflectionSaltSource
ユーザーの登録日をユーザーごとのパスワードのソルトとして自動的に使用する がありました。
String encodedPassword = passwordEncoder.encodePassword(rawPassword, saltSource.getSalt(user));
ログイン プロセス中に、Spring は Bean を使用して、ユーザーがサインインできるかどうかを適切に検証しました。SHA-1 のデフォルト実装では、エンコーダーの作成StandardPasswordEncoder
中にグローバル シークレット ソルトを追加する機能しか持たないため、新しいパスワード エンコーダーではこれを実現できません。
非推奨ではない API を使用して設定する合理的な方法はありますか?
ベストアンサー1
既存のフォーマットでユーザーを登録していない場合は、BCrypt パスワード エンコーダーその代わり。
ソルトについてまったく心配する必要がないので、面倒な作業が大幅に軽減されます。詳細はエンコーダー内に完全にカプセル化されています。BCrypt を使用すると、単純なハッシュ アルゴリズムを使用するよりも強力になり、他の言語を使用するアプリケーションと互換性のある標準でもあります。
新しいアプリケーションに他のオプションを選択する理由は実際にはありません。