Implementei inicialmente a SecurityConfiguration como mostrado na aula, mas vi o alerta do Intellij de que a classe WebSecurityConfigurerAdapter está deprecated. Pesquisando na internet, descobri que a configuração do Spring Security foi simplificada. Aparentemente agora não é necessário configurar explicitamente o userDetailsService nem o PasswordEncrypter - basta ter na aplicação beans que implementem as respectivas interfaces.
Para o PasswordEncrypter implementei um bean na SecurityConfiguration, mas para o userDetailsService não foi necessário, pois como o UsuarioService é um Bean (pois está anotado com @Service) e implementa a interface UserDetailsService, o Spring Security já o usa automaticamente como userDetailsService.
Minha classe SecurityConfiguration ficou assim:
@Configuration
@EnableWebSecurity
class SecurityConfiguration() {
@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain {
http.authorizeHttpRequests().anyRequest().authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().formLogin().disable().httpBasic()
return http.build()
}
@Bean
fun encoder(): PasswordEncoder? {
return BCryptPasswordEncoder()
}
}
Referência: https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter