Vi um post aqui no fórum sobre como ficaria a implementação da classe SecurityConfiguration seguindo as novas recomendações do SpringSecurity utilizando a Lambda DSL, visto que o método WebSecurityConfigurationAdapter está em desuso (deprecated)
O Kotlin também possui uma Domain Specific Language (DSL) e é possível utilizá-la para configurar a autenticação. Veja como podemos fazer isso:
package br.com.alura.forum.config
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
import org.springframework.security.config.http.SessionCreationPolicy
import org.springframework.security.config.web.servlet.invoke
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.security.web.SecurityFilterChain
@EnableWebSecurity
@Configuration
class SecurityConfig {
@Bean
fun filterChain(http: HttpSecurity) : SecurityFilterChain {
http.invoke {
csrf { disable() }
authorizeRequests {
authorize("/h2-console/**", permitAll)
authorize(anyRequest, authenticated)
}
sessionManagement {
sessionCreationPolicy = SessionCreationPolicy.STATELESS
}
headers { frameOptions { disable() } }
httpBasic { }
}
return http.build()
}
@Bean
fun encoder() : PasswordEncoder {
return BCryptPasswordEncoder()
}
}
Nesse código em específico, liberei o acesso ao recurso do console do H2 para qualquer usuário e também desabilitei o csrf. O formLogin também está desabilitado.