Frühlingssicherheits-Salz
Ich versuche, hinzufügen von Salz beim hinzufügen eines neuen user/pwd, aber die docs scheinen zu fehlen, wie dies zu tun.
Hier ist ein einfaches Beispiel:
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder>
</authentication-provider>
</authentication-manager>
Können Sie sehen am Beispiel, dass weder eine benutzerdefinierte Salz oder benutzerdefinierte Passwort-encoder verwendet wird.
So, wie würde ich Draht das Salz in der Sie beim hinzufügen eines neuen user/pwd? Ich würde davon ausgehen, es wäre etwas entlang der Linien von:
@Autowired SaltSource saltSource;
protected void foo(final CustomUser user) {
final PasswordEncoder encoder = new Md5PasswordEncoder();
user.setPassword(encoder.encodePassword(user.getPassword(), saltSource));
}
Jedoch, da bin ich mit dem Standard-Salz - /Passwort-Encoder und-ich habe nicht eine benutzerdefinierte Salz bean die autowire scheitern würden.
Keine Ahnung, wie diese Arbeit zu machen?
InformationsquelleAutor der Frage user973479 | 2011-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht autowire die
SaltSource
beim hinzufügen Benutzer. DieSaltSource
ist eine Abstraktion verwendet, die von Frühjahr um die Quelle des Salzes für Passwortprüfung nur.Erstellen Sie eine korrekt kodierte Passwort-hash, die Sie gerade hinter das Salz der
PasswordEncoder
- der Wert derusername
Eigenschaft, nicht dieSaltSource
:Außerdem die autowire von
SaltSource
wird nicht funktionieren, bis es ist definiert als eine innere bean. Könnten Sie definierenReflectionSaltSource
als top-level-bean, und übergeben Sie Ihr die ID despassword-encoder
d.h.:Dann:
InformationsquelleAutor der Antwort Roadrunner