Skip to content

loubacker/spring-auth-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner-oficial

shield-spring Spring Auth Server

Servidor de Autenticação OAuth2/OIDC completo com Spring Authorization Server

Status Arquitetura OAuth2 OIDC Java Spring Boot

📋 Sobre o Projeto

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.

✨ Características Principais

  • 🔐 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

🌟 APIs Disponíveis

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

🚀 Quick Start

Pré-requisitos

  • Java 25 JDK instalado
  • PostgreSQL 17+ configurado
  • Maven 3.9+ para build
  • Docker (opcional, para containerização)

Configuração Rápida

  1. Clone o repositório:

    git clone <repository-url>
    cd humanizar-auth-hexagonal
  2. Execute a aplicação:

    ./mvnw spring-boot:run

🐳 Docker (Opcional)

# Build da imagem
docker build -t humanizar-auth-server .

# Execute com Docker Compose
docker-compose up -d

📁 Estrutura do Projeto

  • 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.
  • 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.

🔧 Configuração Detalhada

Variáveis de Ambiente

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/

Arquivos de Configuração

  • application.yml - Configurações principais da aplicação
  • docker-compose.yml - Setup completo com PostgreSQL
  • .env - Variáveis de ambiente (não versionado)

🛡️ Segurança Implementada

  • 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

🔍 Endpoints Importantes

  • 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

Testes Manuais

# 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

🔒 Conformidade e Certificações

  • OAuth2 RFC 6749 compliant
  • OIDC Core 1.0 compliant
  • LGPD compliant (dados seguros)
  • Spring Authorization Server oficial

🤝 Como Contribuir

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📝 Padrões de Código

  • Arquitetura Hexagonal
  • Logs seguros
  • Documentação atualizada

📋 Roadmap

✅ Implementado

  • OAuth2/OIDC Provider completo
  • Rotação automática de chaves RSA
  • Revogação persistente de tokens
  • Arquitetura hexagonal
  • Docker com volumes
  • Monitoramento Actuator

🔄 Próximas Versões

  • Integração com Protocolo OTLP
  • Cache Redis para tokens revogados
  • Dashboard Grafana

📞 Suporte

Para dúvidas ou suporte:

📄 Licença

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