Servidor de Autenticação OAuth2/OIDC completo com Spring Authorization Server
O Spring Auth Server by Gabriel Loubacker é um servidor de autenticação completo implementado com Spring Authorization Server nativo, seguindo arquitetura hexagonal (Ports & Adapters). Oferece autenticação OAuth2/OIDC robusta com rotação automática de chaves RSA e conformidade LGPD.
- 🔐 OAuth2 Authorization Server completo (RFC 6749 compliant)
- 🆔 OpenID Connect 1.0 com Discovery automático
- 🔑 Rotação automática de chaves RSA em cada startup
- 🚫 Revogação persistente de tokens com blacklist local
- 🏗️ Arquitetura Hexagonal para testabilidade e manutenção
- 🐳 Docker-ready com volumes persistentes para keystore
- 📊 Monitoramento completo com Spring Actuator
- ✅ 100% funcional e pronto para produção
| Endpoint | Método | Descrição | Status |
|---|---|---|---|
POST /api/auth/v1/login |
POST | Login com CPF + password | ✅ Ativo |
POST /api/auth/v2/login |
POST | Login com e-mail + password | ✅ Ativo |
GET /.well-known/openid-configuration |
GET | OIDC Discovery - Metadados automáticos | ✅ Ativo |
GET /oauth2/jwks |
GET | JWKS - Chaves públicas RSA | ✅ Ativo |
POST /oauth2/revoke |
POST | Revogação de tokens (com blacklist local) | ✅ Ativo |
GET /userinfo |
GET | Dados do usuário autenticado | ✅ Ativo |
GET /actuator/health |
GET | Health check geral | ✅ Ativo |
- Java 25 JDK instalado
- PostgreSQL 17+ configurado
- Maven 3.9+ para build
- Docker (opcional, para containerização)
-
Clone o repositório:
git clone <repository-url> cd humanizar-auth-hexagonal
-
Execute a aplicação:
./mvnw spring-boot:run
# Build da imagem
docker build -t humanizar-auth-server .
# Execute com Docker Compose
docker-compose up -d- Código-fonte (
src/main/java/com/humanizar/authserver):- application: DTOs, mappers, casos de uso e
AuthServerApplication. - domain: entidades de domínio e ports (interfaces de negócio).
- infrastructure: configs, persistência (JPA), segurança e web (controllers/adapters).
- common: utilitários e exceções compartilhadas.
- application: DTOs, mappers, casos de uso e
- Recursos (
src/main/resources):application.yml, templates e estáticos. - Testes (
src/test/java): testes de unidade e integração. - Artefatos de build/devops:
.gitignore,.dockerignore,Dockerfile,.env.
| Variável | Descrição | Exemplo |
|---|---|---|
DB_URL |
URL de conexão PostgreSQL | jdbc:postgresql://localhost:5432/auth |
DB_USERNAME |
Usuário do banco | postgres |
DB_PASSWORD |
Senha do banco | ********** |
CLIENT_ID |
ID do client OAuth2 | ********* |
CLIENT_SECRET |
Secret do client | ********* |
KEYSTORE_PATH |
Caminho do keystore JKS | jwt-keystore.jks |
KEYSTORE_PASSWORD |
Senha do keystore | dominio-jwt-2025 |
JWT_ISSUER |
Emissor dos tokens JWT | https://dominio.com.br/ |
application.yml- Configurações principais da aplicaçãodocker-compose.yml- Setup completo com PostgreSQL.env- Variáveis de ambiente (não versionado)
- ✅ RSA 2048-bit com rotação em memoria
- ✅ Headers JWT completos (typ, kid, alg)
- ✅ Token revocation com conformidade LGPD
- ✅ JKS keystore formato industrial
- ✅ Logs seguros sem exposição de segredos
- Discovery OIDC:
GET /.well-known/openid-configuration - Chaves Públicas (JWKS):
GET /oauth2/jwks - Health Check:
GET /actuator/health - Authorization Endpoint:
GET /oauth2/authorize - Token Endpoint:
POST /oauth2/token - Revogação de Token:
POST /oauth2/revoke - Introspecção de Token:
POST /oauth2/introspect - OIDC Client Registration:
POST /connect/register - OIDC UserInfo:
GET /userinfo - OIDC Logout:
POST /connect/logout - Documentação API: Em desenvolvimento
# 1. Health check
curl http://localhost:8080/actuator/health
# 2. Login via CPF (v1)
curl -X POST http://localhost:8080/api/auth/v1/login \
-H "Content-Type: application/json" \
-d '{"cpf":"00000000000","password":"123456!"}'
# 3. Login via E-mail (v2)
curl -X POST http://localhost:8080/api/auth/v2/login \
-H "Content-Type: application/json" \
-d '{"email":"usuario@dominio.com","password":"123456!"}'
# 4. Refresh Token (OAuth2 padrão)
# 4A) Usando autenticação do client com curl -u (Basic)
curl -X POST http://localhost:8080/oauth2/token \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token&refresh_token=<SEU_REFRESH_TOKEN>"
# 4B) Usando Authorization: Basic (base64(client_id:client_secret))
curl -X POST http://localhost:8080/oauth2/token \
-H "Authorization: Basic <BASE64_CLIENTID_CLIENTSECRET>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token&refresh_token=<SEU_REFRESH_TOKEN>"
# 5. Revogação de Token
curl -X POST http://localhost:8080/oauth2/revoke \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=<ACCESS_OR_REFRESH_TOKEN>&token_type_hint=refresh_token"
# 6. JWKS
curl http://localhost:8080/oauth2/jwks- ✅ OAuth2 RFC 6749 compliant
- ✅ OIDC Core 1.0 compliant
- ✅ LGPD compliant (dados seguros)
- ✅ Spring Authorization Server oficial
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Arquitetura Hexagonal
- Logs seguros
- Documentação atualizada
- OAuth2/OIDC Provider completo
- Rotação automática de chaves RSA
- Revogação persistente de tokens
- Arquitetura hexagonal
- Docker com volumes
- Monitoramento Actuator
- Integração com Protocolo OTLP
- Cache Redis para tokens revogados
- Dashboard Grafana
Para dúvidas ou suporte:
- 📧 Email: gabs@loubacker.dev
- 🌐 Portfolio https://gabs.loubacker.dev/
- 📖 Documentação: Consulte os READMEs específicos das pastas
Este projeto está sob a licença [MIT] LICENSE. Consulte o arquivo LICENSE para mais detalhes.
Humanizar Auth Server v1.0.0 - Desenvolvido com ❤️ por Gabriel Loubacker