1
resposta

Liberar Acesso H2 - spring boot versão 3.1.2

Olá, Estou usando o Spring Boot na versão 3.1.2 e tenho um ambiente de teste configurado no arquivo application-test.properties. Nele, habilitei o console H2 com as configurações adequadas. No entanto, ao tentar acessar o console H2, recebo um erro HTTP 403, indicando que o Spring Security está bloqueando o acesso. (as configurações do h2 eu configurei para o application-test.properties) Como faço para configurar o Spring Security de forma que ele permita o acesso ao console H2 somente no ambiente de teste? Minhas configurações de segurança estão no arquivo SecurityConfiguration, e eu gostaria de garantir que o acesso ao console H2 seja restrito ao ambiente de desenvolvimento e teste, não afetando o ambiente de produção.

Agradeço qualquer orientação ou solução para esse problema.

Obrigado!

1 resposta

Olá Rodrigo,

Entendo sua preocupação em manter o ambiente de produção seguro, enquanto ainda tem acesso ao console H2 para fins de teste e desenvolvimento. Aqui está uma sugestão de como você pode configurar o Spring Security para permitir o acesso ao console H2 apenas no ambiente de teste.

Primeiro, você precisa ajustar as configurações do H2 no seu arquivo application-test.properties. Certifique-se de que as seguintes linhas estão presentes:

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:mem:testdb

Em seguida, no seu arquivo SecurityConfiguration, você pode adicionar uma condição para permitir o acesso ao console H2 apenas quando o perfil ativo é "test". Aqui está um exemplo de como você pode fazer isso:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private Environment env;

    // ... outros métodos e configurações ...

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        if (Arrays.asList(env.getActiveProfiles()).contains("test")) {
            http.csrf().disable();
            http.headers().frameOptions().disable();
            http.authorizeRequests().antMatchers("/h2-console/**").permitAll();
        }

        // ... outras configurações de segurança ...
    }
}

Neste exemplo, usamos o objeto Environment para verificar quais perfis estão ativos. Se o perfil "test" estiver ativo, então desativamos o CSRF, desativamos as opções de frame (necessárias para permitir o console H2) e permitimos todas as solicitações para "/h2-console/**".

Por favor, note que esta é apenas uma sugestão e pode não ser a solução perfeita para o seu caso específico. Você pode precisar ajustar o código para atender às suas necessidades específicas.

Espero ter ajudado e bons estudos!