Saltar al contenido

Spring Boot: ¿Cómo especificar PasswordEncoder?

Solución:

En spring-security-core:5.0.0.RC1, el valor por defecto PasswordEncoder está construido como un DelegatingPasswordEncoder. Cuando almacena los usuarios en la memoria, está proporcionando las contraseñas en texto sin formato y cuando intenta recuperar el codificador del DelegatingPasswordEncoder para validar la contraseña, no puede encontrar una que coincida con la forma en que se almacenaron estas contraseñas.

Utilice esta forma para crear usuarios en su lugar.

User.withDefaultPasswordEncoder().username("user").password("user").roles("USER").build(); 

También puede simplemente prefijar {noop} a sus contraseñas para que DelegatingPasswordEncoder utilizar el NoOpPasswordEncoder para validar estas contraseñas. Darse cuenta de NoOpPasswordEncoder Sin embargo, está en desuso, ya que no es una buena práctica almacenar las contraseñas en texto sin formato.

User.withUsername("user").password("{noop}user").roles("USER").build();

Para obtener más información, consulte esta publicación.

https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released#password-encoding

Usar NoOpPasswordEncoder por inMemoryAuthentication

auth.inMemoryAuthentication()
    .withUser("user")
    .password("{noop}password")
    .roles("USER")

Necesita tener algún tipo de codificador de contraseña, pero

withDefaultPasswordEncoder()

está en desuso y ya no es adecuado para la producción. Use esto en su lugar:

PasswordEncoder encoder =
     PasswordEncoderFactories.createDelegatingPasswordEncoder();

...

UserDetails user = User.withUsername("someusername")
                       .password(encoder.encode("somepassword"))
                       .roles("USER").build();

Ref: https://docs.spring.io/spring-security/site/docs/5.0.2.BUILD-SNAPSHOT/api/index.html?org/springframework/security/core/userdetails/User.html

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *