Comment coder correctement le mot de passe à l'aide de ShaPasswordEncoder?

Je veux coder un mot de passe à l'aide de ShaPasswordEncoder dans mon Printemps app.

ShaPasswordEncoder sha = new ShaPasswordEncoder(256);
sha.setIterations(1000);
String hash = sha.encodePassword(password, salt);

Mais je ne sais pas ce que je devrais mettre à salt param. Peut-il être statique de la phrase (par exemple, sT4t1cPhr453), ou de la dynamique de la chaîne de différent pour chaque utilisateur (par exemple, nom d'utilisateur ou ID)?

Edit:

J'ai d'utilisateur personnalisé AuthenticationProvider, de sorte que mon contexte de sécurité ressemble à:

<authentication-manager>
   <authentication-provider ref="customAuthenticationProvider" />
</authentication-manager>

<beans:bean id="customAuthenticationProvider" class="com.app.cloud.auth.CustomAuthenticationProvider">

@Component("customAuthenticationProvider")
public class CustomAuthenticationProvider implements org.springframework.security.authentication.AuthenticationProvider {

    @Autowired
    private AuthService authService;

    @Override
    public Authentication authenticate(Authentication authentication)
            throws AuthenticationException,BadCredentialsException {
    //...
    }

    @Override
    public boolean supports(Class<?> authentication) {
        return authentication.equals(UsernamePasswordAuthenticationToken.class);
    }
}
  • Le hachage de mot de passe à l'aide de sha256 peut-être pas assez sécurisé. Vous pouvez avoir un coup d'oeil à ceci. Il fournit un mot de passe sécurisé de hachage (Java PBKDF2 Hachage de Mot de passe) avec le code source.
  • Que voulez-vous dire? Entendez-vous d'utiliser le Printemps contexte de sécurité? Parce que je suis à l'aide personnalisée AuthenticationProvider, donc je ne sais pas ajouter un mot de codeur pour mon contexte de sécurité.
  • Si vous utilisez le hachage de mot de passe de la classe dans le site web ci-dessus. Vous pouvez utiliser des AuthenticationProvider au Printemps de Sécurité comme ceci: <authentification-manager> <authentification de fournisseur de l'utilisateur-service-ref="userAuthenticationService"> <mot de passe de l'encodeur ref="pbkdf2PasswordEncoder" /> </authentification de fournisseur> </authentification manager->
  • Et vous devez définir vos haricots dans vous de contexte de l'application: <bean id="pbkdf2PasswordEncoder" class="com.exemple.PBKDF2PasswordEncoder"/>
  • Un salée de hachage avec SHA256 et 1000 itérations est absolument parfait. Ce qui vous fait penser qu'il pourrait ne pas être suffisamment sécurisé?
InformationsquelleAutor misco | 2013-09-06