https://github.com/apolinario0x21/identity-manager
Este é um projeto de exemplo que demonstra a implementação de um sistema de autenticação e autorização usando JSON Web Tokens (JWT) com Spring Boot, Spring Security e Spring Data JPA.
https://github.com/apolinario0x21/identity-manager
java jwt jwt-auth jwt-authentication jwt-token spring spring-boot spring-security
Last synced: about 2 months ago
JSON representation
Este é um projeto de exemplo que demonstra a implementação de um sistema de autenticação e autorização usando JSON Web Tokens (JWT) com Spring Boot, Spring Security e Spring Data JPA.
- Host: GitHub
- URL: https://github.com/apolinario0x21/identity-manager
- Owner: apolinario0x21
- License: mit
- Created: 2025-04-08T04:35:49.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-14T21:38:45.000Z (12 months ago)
- Last Synced: 2025-07-15T02:22:08.097Z (12 months ago)
- Topics: java, jwt, jwt-auth, jwt-authentication, jwt-token, spring, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 33.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Identity Manager



[](https://jwt.io/)
[](https://www.postgresql.org/)


[](https://spring.io/projects/spring-security)
O projeto consiste em uma API RESTful que permite aos usuários se registrarem, fazerem login para obter um token de acesso e acessarem rotas protegidas. Ele também inclui funcionalidades como atualização de token (refresh token) e listagem de usuários com paginação.
## Funcionalidades
- Registro de Usuário: Endpoint para criar novos usuários.
- Autenticação de Usuário: Endpoint de login que retorna um JWT após a autenticação bem-sucedida.
- Autorização baseada em Token: Rotas protegidas que só podem ser acessadas com um JWT válido.
- Atualização de Token (Refresh Token): Endpoint para obter um novo token de acesso usando um refresh token.
- Segurança: Senhas são armazenadas de forma segura usando BCrypt.
- Paginação e Ordenação: Endpoint para listar usuários com suporte para paginação e ordenação.
- Tratamento de Exceções: Handler global para tratar erros de forma consistente.
- Testes Unitários: Testes para serviços e utilitários garantindo a qualidade do código.
## 🛠️ Tecnologias Utilizadas
- Java 17
- Spring Boot 3.4.4
- Spring Security: Para autenticação e controle de acesso.
- Spring Data JPA: Para persistência de dados.
- PostgreSQL: Banco de dados relacional.
- Maven: Gerenciador de dependências.
- JJWT (Java JWT): Para criação e validação dos tokens.
- JUnit 5 & Mockito: Para testes unitários.
## 🚀 Como Executar o Projeto
Siga os passos abaixo para configurar e executar o projeto em seu ambiente local.
### Pré-requisitos
- Java Development Kit (JDK) 17 ou superior.
- Maven 3.8 ou superior.
- Uma instância do PostgreSQL em execução.
#### 1. Clonar o Repositório
```bash
git clone
cd jwt-auth
```
#### 2. Configurar o Banco de Dados
- Acesse seu servidor PostgreSQL e crie um novo banco de dados. Por exemplo: identity_manager_db.
- Abra o arquivo src/main/resources/application.properties.
- Atualize as seguintes propriedades com as suas credenciais do PostgreSQL:
```Properties
spring.datasource.url=jdbc:postgresql://localhost:5432/identity_manager_db
spring.datasource.username=seu_usuario_postgres
spring.datasource.password=sua_senha_postgres
```
#### 3. Configurar Variáveis de Ambiente
É uma boa prática não commitar segredos. No arquivo application.properties, altere o segredo do JWT para um valor único e seguro.
```Properties
# Gere uma chave secreta forte para produção
jwt.secret=sua_chave_secreta_super_segura_aqui
jwt.expiration=900000 # 15 minutos
```
#### 4. Instalar Dependências e Executar
O Maven cuidará do download de todas as dependências necessárias.
```Bash
# Para instalar as dependências e executar o projeto
mvn spring-boot:run
```
A aplicação estará disponível em http://localhost:8080.
## 🧪 Executando os Testes
Para rodar a suíte de testes unitários e garantir que tudo está funcionando como esperado, execute o comando:
```Bash
mvn test
```
## 📡 Endpoints da API
A coleção de endpoints da API está disponível no prefixo /.
| Método | Endpoint | Protegido | asd |
| :- | :- | :- | :-
| `POST` | `/auth/register` | Não | Registra um novo usuário. |
| `POST` | `/auth/login` | Não | Autentica um usuário e retorna um JWT. |
| `POST` | `/auth/refresh-token` | Não | Gera um novo token de acesso a partir de um refresh token. |
| `GET` | `/api/protected` | Sim | Rota de exemplo que requer autenticação. |
| `GET` | `/users` | Sim | Lista todos os usuários com paginação e ordenação. |
## Exemplo de Requisições
### Registrar Usuário - `POST /auth/register`
```json
{
"username": "novo_usuario",
"password": "senha_forte_123",
"email": "usuario@exemplo.com"
}
```
### Fazer Login - `POST /auth/login`
```json
{
"username": "novo_usuario",
"password": "senha_forte_123"
}
```
### Acessar Rota Protegida - `GET /api/protected`
Header:
`Authorization: Bearer `
### Listar Usuários com Paginação - `GET /users?page=0&size=5&sortBy=username&sortDirection=asc`
Header:
`Authorization: Bearer `
## 📄 Licença
Este projeto está sob a licença MIT. Veja o arquivo [LICENSE](https://github.com/apolinario0x21/identity-manager/blob/main/LICENSE) para mais detalhes.