Índice
- [📦 Bibliotecas Java Utilizadas]
- [✨ Funcionalidades Implementadas]
- [🛠️ Como Começar]
- [⚙️ Pré-requisitos]
- [⚙️ Instalação]
- [
▶️ Execução]
- [📖 Uso / Como Usar]
- [👤 Registro de Novo Usuário]
- [🔑 Login de Usuário Existente]
- [🛡️ Acesso a Endpoints Protegidos]
- [🧑💻 Autor]
- [📜 Licença]
- Java JWT - 4.5.0
- Flyway Core - 11.6.0
- Flyway Database Postgresql - 11.6.0
- Apache Commons - 3.14.0
- Lombok - 1.18.36
- Postgresql
- Spring Boot JPA
- Spring Boot Security
-
- A tabela de usuários deste projeto é criada e gerenciada automaticamente através do Flyway, garantindo a evolução controlada do schema do banco de dados. 💾
-
- A autorização de usuários neste projeto é implementada através de um sistema baseado em regras (RULES), oferecendo flexibilidade e controle granular sobre o acesso. 🔑
-
- A autenticação e autorização seguras são garantidas através da geração e validação de tokens JWT (JSON Web Tokens). 🛡️
-
- Implementação das funcionalidades essenciais para o registro de novas contas e o login de usuários existentes no sistema. ✅
Esta seção guiará você na configuração do ambiente para executar e explorar este projeto Spring Boot Security.
Antes de começar, certifique-se de ter as seguintes ferramentas instaladas em sua máquina:
- Java Development Kit (JDK): Versão 17 ou superior (recomendado). Você pode verificar sua versão executando
java -versionno terminal.java -version
- Maven: Versão 3.8.0 ou superior. Utilize
mvn -vpara verificar a instalação.mvn -v
- Git: Para clonar o repositório do projeto. Você pode verificar com
git --version.git --version
- PostgreSQL: Uma instância do PostgreSQL em execução. Você pode instalá-lo localmente ou usar um container Docker (instruções abaixo).
- Docker (Opcional, para executar o PostgreSQL em container): Se você preferir executar o PostgreSQL em um container Docker, certifique-se de tê-lo instalado. Verifique com
docker --version.docker --version
Siga estes passos para obter uma cópia do projeto e configurar seu ambiente:
-
Clone o Repositório: Abra seu terminal e navegue até o diretório onde você deseja clonar o projeto. Execute o seguinte comando:
git clone https://github.com/UryelJo/Projeto-Spring-Security.git cd Projeto-Spring-Security -
Configuração das Variáveis de Ambiente:
A configuração do banco de dados PostgreSQL e outras configurações sensíveis são feitas através de variáveis de ambiente. Crie um arquivo
.envna raiz do seu projeto (ou no diretório onde você pretende executar a aplicação) e defina as seguintes variáveis:DB_URL=<sua_url_de_ligação> DB_USERNAME=<seu_usuario> DB_PASSWORD=<sua_senha> JWT_SECRET="Spring Security" URL_FRONTS="https://localhost:8080"
- Substitua
<sua_url_de_ligação>,<seu_usuario>e<sua_senha>pelas credenciais do seu banco de dados PostgreSQL.- Exemplo Url:
jdbc:postgresql://localhost:5432/banco - Exemplo Usuario:
postgres - Exemplo Senha:
1234
- Exemplo Url:
JWT_SECRETé a chave secreta usada para assinar os tokens JWT. Mantenha este valor seguro e não o compartilhe publicamente.URL_FRONTSdefine a URL do seu frontend, que pode ser usada para configurações de CORS (Compartilhamento de Recursos de Origem Cruzada), por exemplo.- Se o seu PostgreSQL estiver rodando em um container Docker ou em um host diferente, ajuste o valor de
<sua_url_de_ligação>de acordo.
Opção Adicional: Usando PostgreSQL com Docker
- Se você optar por usar Docker, certifique-se de ter um arquivo
docker-compose.ymlconfigurando o PostgreSQL. As variáveis de ambiente definidas no.envpodem ser utilizadas nodocker-compose.ymlpara configurar o container do PostgreSQL também.
- Substitua
-
Build do Projeto: Na raiz do diretório do projeto, execute o seguinte comando Maven para construir a aplicação:
mvn clean install
Este comando irá baixar as dependências, compilar o código e executar os testes (se houver).
Após a instalação e o build bem-sucedidos, você pode executar a aplicação Spring Boot de duas maneiras:
Executando via Maven
Na raiz do diretório do projeto, execute o seguinte comando:
mvn spring-boot:runEsta seção detalha como interagir com as funcionalidades cruciais de autenticação 🛡️ e registro 👤 de usuários fornecidas por esta API segura.
Para criar uma nova conta de usuário em nosso sistema, envie uma requisição POST para o endpoint /users/register.
📍 Endpoint: /users/register
Método HTTP: POST
Corpo da Requisição (JSON):
{
"username": "nome_do_usuario",
"login": "novo_usuario",
"password": "senha_forte",
"roleUser": "role_do_usuario"
// Outros campos de registro podem ser necessários dependendo dos requisitos da sua implementação.
}login: O nome do usuário ✏ selecionado para a nova conta.login: O login do usuário 🔑 desejado para a nova conta. Seja criativo e único!password: A senha 🔒 para a nova conta. Recomendamos o uso de senhas fortes e complexas para maior segurança.roleUser: A Rule do usuário ⚙ (ex: "ADMIN", "USER")
Exemplo de Requisição (usando curl no seu terminal):
curl -X POST \
http://localhost:8080/users/register \
-H 'Content-Type: application/json' \
-d '{
"username": "uryel Jó",
"login": "uryel@gmail.com",
"password": "senhaSecreta1234",
"roleUser": "ADMIN"
}'✅ Resposta:
- Em caso de sucesso, o servidor responderá com um status HTTP
201 Created, sinalizando que a conta do usuário foi criada com sucesso. O corpo da resposta estará vazio ∅.
Para acessar os recursos protegidos da API, você precisará obter um token JWT realizando o login através do endpoint /users/login.
📍 Endpoint: /users/login
Método HTTP: POST
Corpo da Requisição (JSON):
{
"login": "nome_do_usuario",
"password": "senha_do_usuario"
}login: O nome de usuário 👤 da conta que você deseja acessar.password: A senha 🔒 associada a essa conta.
Exemplo de Requisição (usando curl):
curl -X POST \
http://localhost:8080/users/login \
-H 'Content-Type: application/json' \
-d '{
"login": "uryel@gmail.com",
"password": "senhaSecreta1234"
}'✅ Resposta:
- Se as credenciais estiverem corretas, o servidor retornará uma resposta com o status HTTP
200 OKe um corpo JSON contendo o seu precioso token JWT:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb2Rlcl9uZWV3YmllIiwibmFtZSIiOiJOZXdlciBDb2RlciIsImlhdCI6MTY3ODg4NjQwMH0.your_awesome_jwt_token_here"
}Guarde este token com carinho! Você o usará para provar sua identidade em todas as requisições a recursos protegidos.
Para acessar as áreas restritas da API, você deverá incluir o token JWT que recebeu durante o login no cabeçalho Authorization da sua requisição HTTP.
Exemplo de Requisição a um Recurso Protegido (usando curl):
Suponha que você queira obter informações de um endpoint /protected-data. A requisição seria assim:
curl -X GET \
http://localhost:8080/protected-data \
-H 'Authorization: seu_token_jwt_gerado_no_login'(Lembre-se de substituir
seu_token_jwt_gerado_no_loginpelo token real que você obteve na resposta de login).
Se o seu token for válido e não tiver expirado, o servidor processará sua requisição e retornará os dados solicitados. Caso contrário, você receberá uma resposta com o status HTTP 401 Unauthorized e a seguinte mensagem em JSON:
{
"error": "Nao autorizado!"
}Isso indica que seu token é inválido, expirou ou não foi fornecido, e você não tem permissão para acessar o recurso. Certifique-se de fazer login novamente para obter um novo token! 😉
Uryel Jó de Lucca Araujo de Oliveira (@UryelJo) - Criador e Mantenedor Principal
email: uryeljodelucca18@gmail.com linkedin: UryelJo
Este projeto é distribuído sob a MIT License. Consulte o arquivo LICENSE para obter mais detalhes.