1
resposta

[Sugestão] Implementação da SecurityConfig atualizada

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.

1 resposta

Olá, Joaquim!

Obrigada por compartilhar esse código com a implementação atualizada da classe SecurityConfig utilizando a Lambda DSL do Spring Security. Parece que você está no caminho certo!

Nesse código, você liberou o acesso ao recurso do console do H2 para qualquer usuário, desabilitou o csrf e também desabilitou o formLogin. Isso significa que qualquer usuário pode acessar o console do H2 sem precisar de autenticação e o recurso de login padrão do Spring Security está desabilitado.

Essa é uma configuração básica para permitir acesso a recursos específicos sem autenticação e definir a política de criação de sessão como STATELESS, o que significa que o Spring Security não irá criar sessões para os usuários.

Além disso, você também adicionou um bean para o PasswordEncoder, utilizando o BCryptPasswordEncoder. Isso é importante para criptografar as senhas dos usuários e garantir a segurança das mesmas.

No geral, o código parece estar correto e seguindo as recomendações mais recentes do Spring Security. No entanto, é importante lembrar que a implementação da segurança pode variar de acordo com os requisitos específicos do seu projeto. Certifique-se de ajustar as configurações de acordo com suas necessidades.

Espero ter ajudado e bons estudos!