Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

14 - Lo que aprendimos.

Después de revisar el código varias veces, y tener la total seguridad de que todo está bien (incluyendo la actualización de métodos deprecados), sigo sin poder solucionar el error:

"Encoded password does not look like BCrypt", lo cual me impide continuar a la siguiente clase.

3 respuestas

¡Hola Mariana, espero que estés bien!

Entiendo que estás experimentando un problema con el mensaje de error "Encoded password does not look like BCrypt" al intentar continuar con la siguiente clase en tu curso de Spring Boot.

Este error suele ocurrir cuando Spring Security espera que la contraseña esté codificada con BCrypt, pero recibe una contraseña codificada de otra forma.

Para solucionar este problema, asegúrate de que estás utilizando el algoritmo de codificación BCrypt para las contraseñas en tu aplicación. Puedes hacerlo configurando la codificación de contraseñas en tu archivo de configuración de Spring Security de la siguiente manera:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
            .withUser("usuario")
            .password(passwordEncoder().encode("contraseña"))
            .roles("USER");
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

En este ejemplo, se utiliza BCryptPasswordEncoder para codificar las contraseñas. Asegúrate de que estás utilizando este enfoque al manejar las contraseñas en tu aplicación.

Espero que esta solución te ayude a resolver el problema y te permita continuar con tu curso. ¡Mucho ánimo y sigue adelante!

Espero haber ayudado y buenos estudios!

Buenas tardes, Brenda. No me permite implementar "WebSecurityConfigurerAdapter" ya que la clase está deprecada, por lo tanto, el siguiente método:

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
            .withUser("usuario")
            .password(passwordEncoder().encode("contraseña"))
            .roles("USER");
    }

me genera errores al ejecutar. El siguiente método ya lo había implementado:

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

pero no resuelve el problema. La contraseña fue generada con diferentes páginas que generan contraseñas BCrypt (y agregada a mi DB), he probado con aquellas que comienzan con $2a, $2b y $2y pero con ninguna logro solucionar el problema. Aclaro que voy siguiendo al pie de la letra el código mostrado por el docente en los videos (con excepción, por supuesto, de los cambios sugeridos en la plataforma para métodos deprecados) y veo que al docente le funciona y yo no logro que lo haga.

@Bean public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception { return httpSecurity .csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeHttpRequests() .requestMatchers("/login").permitAll() // Permitir acceso a /login sin autenticación .anyRequest().authenticated() // Requerir autenticación para cualquier otra ruta .and() .build(); } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); }

}