Spring Security 3.1は新しい便利なPasswordEncoderと実装StardardPasswordEncoderを提供するので、私はそれらを現在のプロジェクトに実装しようとしています。ただし、ユーザーパスワードを保存/確認するときにPasswordEncoderがどのように機能するかについては疑問があります。新しいPasswordEncoderのコードは次のとおりです。
private static final String SALT_AS_TOP_SECRET = "mysalt";
private static final PasswordEncoder encoder = new StandardPasswordEncoder(
SALT_AS_TOP_SECRET);
public static String encrypt(String rawPassword) {
return encoder.encode(rawPassword);
}
public static boolean match(String rawPassword, String password) {
return encoder.matches(rawPassword, password);
}
私のアプリケーションはSpringwithJPAであるため、パスワードの基本的なゲッター/セッターを使用してUserDetailsを実装するUserエンティティがあり、サービスレイヤーにUserDetailServiceを実装するサービスクラスもあります。
UserDetailServiceが必要とするのは、loadUserByUsername
パスワードをチェックしないメソッドだけであることに混乱しています。だからここに他の質問があります:
match
PasswordEncoderのメソッドはどこに配置しますか?- サービスクラスに別のインターフェイスを実装しますか?
- パスワードを設定するときに、ユーザーエンティティ内にロジックを指定しますか?
- 新しいPasswordEncoderインターフェースは他のセキュリティパッケージから独立しているので、xmlからBeanを開始/注入する必要はないと思いますか?私は、外部ストレージではなく、クラス内でソルトをpuするようにしています。
よろしくお願いします。