06 Auth Plan

🔐 Plano de Execução: Autenticação Centralizada para Todos os Apps C-Suite

📋 Objetivo

Integrar todos os apps do C-Suite com o csuite-auth-external usando o mesmo padrão do csuite-checklist.

🎯 Apps a Atualizar

Apps FastAPI (precisam de adaptação):

  1. csuite-checklist (Flask) - Já implementado
  2. csuite-gateway (FastAPI)
  3. csuite-cashflow (FastAPI)
  4. csuite-operations (FastAPI)
  5. csuite-feature-store (FastAPI)
  6. csuite-model-registry (FastAPI)
  7. csuite-customer-decisions (FastAPI)

📦 Componentes Necessários

1. Módulo auth_client.py Reutilizável

2. Rotas de Autenticação

3. Decorator/Middleware de Autenticação

🔧 Implementação por App

Padrão para Apps FastAPI:

# auth_client.py (FastAPI)
from fastapi import Depends, HTTPException, Request
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from starlette.responses import RedirectResponse
import requests
import os

AUTH_SERVICE_URL = "https://auth.internut.com.br/auth"
AUTH_WEB_URL = "https://auth.internut.com.br"

class AuthClient:
    # Mesma implementação do Flask, mas adaptada para FastAPI

def get_current_user(request: Request):
    """Dependency para obter usuário atual"""
    # Verifica token em cookie ou header
    # Valida token
    # Retorna dados do usuário

def login_required(request: Request):
    """Dependency que requer autenticação"""
    user = get_current_user(request)
    if not user:
        # Redireciona para login
    return user

Padrão para Rotas:

@app.get("/login")
async def login(request: Request):
    """Redireciona para login centralizado"""
    # Constrói callback URL
    # Redireciona para AUTH_WEB_URL/login?redirect_uri=...

@app.get("/auth/callback")
async def auth_callback(request: Request, access_token: str, refresh_token: str):
    """Recebe tokens após login"""
    # Valida tokens
    # Salva em cookies
    # Redireciona para página inicial

@app.get("/logout")
async def logout():
    """Faz logout"""
    # Limpa cookies
    # Redireciona para login

✅ Checklist de Implementação por App

Para cada app FastAPI:

🧪 Plano de Testes

Testes por App:

  1. Teste de Login
  2. Acessar rota protegida → deve redirecionar para login
  3. Fazer login → deve redirecionar de volta com tokens
  4. Verificar que cookies foram definidos

  5. Teste de Autenticação

  6. Acessar rota protegida com token válido → deve permitir acesso
  7. Acessar rota protegida sem token → deve redirecionar para login
  8. Acessar rota protegida com token expirado → deve renovar ou redirecionar

  9. Teste de Logout

  10. Fazer logout → deve limpar cookies e redirecionar

Script de Teste Automatizado:

📝 Ordem de Execução

  1. ✅ Criar módulo auth_client.py reutilizável para FastAPI
  2. ⏳ Atualizar csuite-gateway (prioridade alta - portal principal)
  3. ⏳ Atualizar csuite-cashflow
  4. ⏳ Atualizar csuite-operations
  5. ⏳ Atualizar csuite-feature-store
  6. ⏳ Atualizar csuite-model-registry
  7. ⏳ Atualizar csuite-customer-decisions
  8. ⏳ Criar script de teste automatizado
  9. ⏳ Executar testes em todos os apps

🚀 Próximos Passos

  1. Criar template auth_client_fastapi.py baseado no Flask
  2. Começar pela integração do csuite-gateway
  3. Testar e validar
  4. Replicar para os demais apps

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir