Microsserviço de autenticação do projeto DevOpsPlayground.
Responsável pelo registro, login e validação de usuários através de tokens JWT.
Construído em Python + Flask, com suporte a CORS para integração direta com o frontend-service.
- 🔐 Registro de novos usuários (nome, username, e-mail e senha)
- 🔑 Login com username ou e-mail
- 🪪 Geração de token JWT (autenticação temporária)
- 🧠 Estrutura modular (API, Models, Services, Utils)
- ⚙️ Suporte a variáveis de ambiente com
.env - 🌍 Permite acesso via CORS ao Front-End (
http://localhost:3000)
Crie e ative um ambiente virtual:
python3 -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activateInstale as dependências:
pip install -r requirements.txtCrie o arquivo .env na raiz do projeto:
SECRET_KEY=supersecretkey
JWT_EXPIRE_MINUTES=60
ALLOWED_ORIGINS=http://localhost:3000
DEBUG=true
PORT=5000python3 src/main.pyA API estará disponível em: http://localhost:5000
➕ Registro (POST /auth/register):
curl -X POST http://localhost:5000/auth/register \
-H "Content-Type: application/json" \
-d '{"name":"João DevOps","username":"joaodev","email":"joao@dev.com","password":"1234"}'🔑 Login (POST /auth/login):
curl -X POST http://localhost:5000/auth/login \
-H "Content-Type: application/json" \
-d '{"identifier":"joaodev","password":"1234"}'authenticator-service/
├── src/
│ ├── api/ # Rotas da API (Blueprints Flask)
│ │ └── auth_routes.py
│ ├── models/ # Modelos e “banco” em memória
│ │ └── user_model.py
│ ├── services/ # Regras de negócio (registro, login)
│ │ └── user_service.py
│ ├── utils/ # Utilitários (JWT e helpers)
│ │ └── jwt_utils.py
│ └── main.py # Ponto de entrada do Flask
│
├── .env # Configurações de ambiente
├── requirements.txt # Dependências do projeto
├── setup.py # Configuração de pacote
├── Dockerfile # Build e execução do container
└── README.md# Imagem base
# Etapa base
FROM python:3.11-slim
# Diretório de trabalho
WORKDIR /app
# Copiar dependências e instalar
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copiar restante do código
COPY . .
# Expor porta Flask
EXPOSE 5000
# Comando de inicialização — igual ao ambiente local
CMD ["python", "src/main.py"]- 🐍 Python 3.11
- ⚙️ Flask 3.x
- 🔐 PyJWT (tokens JWT)
- 🧂 bcrypt (hash de senha)
- 🌐 Flask-CORS (acesso entre domínios)
- 🧱 Docker (empacotamento e execução)