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!