[Development(DSV)] Configuração do Spring Security para utilizar H2 DataBase: #9
Closed
andrefelipebarros
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Configuração do Spring Security para utilizar H2 DataBase
Para utilizar o banco de dados H2 em uma aplicação Spring Boot com segurança configurada, é necessário permitir o acesso ao console H2 e liberar o acesso às rotas
/h2/**
de forma que você possa acessar o banco sem restrições de segurança.A configuração de segurança do Spring Boot pode ser feita da seguinte forma:
1. Permitir Acesso ao Console H2
Primeiramente, o H2 é um banco de dados em memória, e para visualizá-lo ou manipulá-lo, é necessário acessar o console da web. Porém, por padrão, o Spring Security bloqueia as requisições para qualquer URL, o que inclui as do H2.
Para permitir que o console H2 seja acessado sem restrições de segurança, você precisa liberar a URL
/h2/**
e permitir a exibição do console, que são gerados emiframe
.2. Configuração do Spring Security
A configuração do Spring Security para liberar o acesso ao console do H2 e permitir o uso de
iframe
é feita da seguinte maneira:3. Explicando a Configuração
antMatchers("/h2/**").permitAll()
: Permite que qualquer requisição para o console do H2 (URL começando com/h2
) seja acessada sem qualquer autenticação ou autorização. Isso é necessário para acessar o banco de dados diretamente pelo console web.csrf().disable()
: O H2, por padrão, faz uso deiframe
, e o Spring Security tem uma proteção CSRF (Cross-Site Request Forgery) que pode bloquear isso. Desabilitar o CSRF é uma forma de permitir que o H2 funcione corretamente, pois ele precisa fazer requisições dentro de umiframe
na página.headers().frameOptions().sameOrigin()
: Essa configuração permite que o H2 seja renderizado dentro de umiframe
, desde que a origem seja a mesma. Isso é fundamental, pois o Spring Security bloqueia o carregamento deiframes
de origens externas por questões de segurança.4. Por que a URL é
/h2/**
?A URL do console H2 está configurada como
/h2/**
porque, no arquivoapplication.properties
do Spring Boot, a configuração padrão do H2 é definida dessa forma. Isso ocorre porque o H2, quando configurado no Spring Boot, gera automaticamente um endpoint/h2-console/
para acesso ao seu console web.No
application.properties
, o usuário e a URL do banco de dados H2 também são definidos, e o acesso ao console é frequentemente configurado para rodar localmente, nolocalhost
, para facilitar o uso durante o desenvolvimento.Exemplo de configurações típicas do H2 em
application.properties
:A URL
/h2
é definida explicitamente para ser a porta de entrada ao console do banco de dados em memória. Assim, ao liberar o acesso a esta URL no Spring Security com a configuraçãoantMatchers("/h2/**").permitAll()
, você garante que o console H2 será acessível via navegador, sem qualquer restrição de segurança durante o desenvolvimento.5. Por que Permitir Acesso para Localhost?
Em ambientes de desenvolvimento, o banco de dados H2 é comumente acessado diretamente do navegador no console H2, que fica disponível através da URL
/h2/
. Permitir que todas as requisições para essa URL sejam liberadas facilita o uso do console durante o desenvolvimento. No entanto, essa configuração não é recomendada em ambientes de produção, onde medidas de segurança adicionais devem ser tomadas.6. Exemplo de URL de Acesso ao Console H2
Depois de configurar o Spring Security conforme o exemplo acima, você poderá acessar o console H2 através da seguinte URL no navegador:
Essa URL é criada automaticamente, com base na configuração do H2 no
application.properties
, e o acesso ao console é feito a partir dela.Beta Was this translation helpful? Give feedback.
All reactions