Bem-vindo ao laboratório prático de OAuth2 para engenheiros de rede! Neste lab hands-on, você aprenderá a implementar autenticação e autorização seguras em APIs de gerenciamento de redes utilizando o Authorization Code Flow, integrando com GitHub OAuth e protegendo endpoints que controlam dispositivos de rede reais.
APIs modernas de rede exigem autenticação segura e controle granular de acesso. OAuth2 é o padrão da indústria (RFC 6749) para autorização, permitindo que aplicações acessem recursos em nome de usuários sem expor credenciais sensíveis.
Sem OAuth2:
- Credenciais hardcoded em scripts e aplicações
- Senhas compartilhadas entre múltiplos usuários
- Impossibilidade de revogar acesso sem trocar senhas
- Falta de auditoria granular de ações
- Exposição de credenciais em logs e requisições
Com OAuth2:
- Tokens temporários com tempo de vida limitado
- Delegação de acesso sem compartilhar senhas
- Revogação instantânea de acesso via token invalidation
- Scopes granulares para controlar permissões específicas
- Auditoria completa de quem acessou o quê e quando
Este lab ensina OAuth2 na prática usando FastAPI, preparando você para proteger APIs que se comunicam com dispositivos de rede, sistemas IPAM (NetBox), ferramentas de observabilidade (Grafana) e plataformas de automação.
Neste laboratório prático de segurança de APIs e OAuth2, você dominará:
- Quatro papéis do OAuth2: Resource Owner, Client, Authorization Server, Resource Server
- Grant Types: Authorization Code, Client Credentials, Refresh Token
- Authorization Code Flow: Fluxo mais seguro para aplicações web
- Tokens: Access Token vs Refresh Token, ciclo de vida e renovação
- Scopes: Controle granular de permissões
- State Parameter: Proteção contra CSRF (Cross-Site Request Forgery)
- PKCE (Proof Key for Code Exchange): Segurança adicional para aplicações públicas
- Diferença entre autenticação e autorização
- Registro de OAuth Applications no GitHub Developer Settings
- Configuração de Callback URLs e redirect URIs
- Client ID e Client Secret: Gerenciamento seguro de credenciais
- GitHub Scopes: read:user, user:email, repo, admin:org
- OAuth2 Authorization URL: Construção de URLs de autorização
- Token Exchange: Troca de código de autorização por access token
- User API: Obtenção de dados do usuário autenticado
- Token Validation: Validação de tokens com GitHub API
- FastAPI Security: HTTPBearer, OAuth2PasswordBearer
- Dependency Injection: Sistema de dependências para autenticação
- Protected Endpoints: Decoradores e middleware de segurança
- Session Management: Armazenamento seguro de tokens e sessões
- Environment Variables: Gerenciamento de configurações com python-dotenv
- Error Handling: Tratamento de erros de autenticação e autorização
- CORS Configuration: Configuração para aplicações frontend
- OpenAPI/Swagger: Documentação automática de endpoints seguros
- Autenticação de requisições para APIs de dispositivos
- Controle de acesso baseado em usuário para operações de rede
- Auditoria de ações: Logging de quem executou cada comando
- Rate Limiting: Proteção contra abuso de APIs
- Token Scopes para operações: Read-only vs Write access
- Mock de dispositivos de rede: Simulação de roteadores e switches
- Armazenamento seguro de secrets: Never commit credentials
- HTTPS Only: Transporte seguro de tokens
- Token Expiration: Tokens de curta duração
- Refresh Token Rotation: Renovação segura de sessões
- Input Validation: Sanitização de dados de entrada
- Security Headers: HSTS, X-Frame-Options, CSP
- Logging sem expor dados sensíveis: Mascaramento de tokens em logs
Este laboratório foi estruturado em 5 tarefas progressivas, cada uma construindo sobre a anterior para criar uma API completa e segura.
| Task | Título | O Que Você Vai Fazer | Conceitos Chave |
|---|
| Task 1 | Fundamentos OAuth2 | Estudar os 4 papéis do OAuth2, entender o Authorization Code Flow e diferenciar autenticação de autorização | RFC 6749, Grant Types, Tokens, Scopes, CSRF Protection |
| Task 2 | Setup do Ambiente | Criar projeto FastAPI, instalar dependências, registrar GitHub OAuth App e configurar variáveis de ambiente | FastAPI, Uvicorn, HTTPX, python-dotenv, GitHub Developer Settings |
| Task 3 | Authorization Code Flow | Implementar endpoint /login que redireciona para GitHub com parâmetros OAuth2 corretos | Authorization URL, State Parameter, Redirect URI, Client ID |
| Task 4 | Callback e Token Exchange | Criar endpoint /callback que recebe código de autorização e troca por access token | Token Exchange, User Info API, Session Storage, CSRF Validation |
| Task 5 | Protected Endpoints | Implementar autenticação com HTTPBearer, criar dependency get_current_user e proteger endpoints de dispositivos | Dependency Injection, Token Validation, Protected Routes, User Context |
Task 1 (Teoria) → Task 2 (Setup) → Task 3 (OAuth Redirect) → Task 4 (Token Exchange) → Task 5 (Protected API)
Cada task inclui:
- Objetivos claros de aprendizado
- Checklist de validação para confirmar sucesso
- Referências oficiais (RFCs, documentação)
- Dicas práticas e boas práticas
- Validação hands-on com testes reais
- FastAPI: Framework moderno Python para APIs com suporte nativo a async/await e documentação automática
- Uvicorn: Servidor ASGI de alta performance para aplicações Python assíncronas
- Pydantic: Validação de dados e serialização baseada em type hints
- HTTPX: Cliente HTTP assíncrono para comunicação com GitHub API e validação de tokens
- GitHub OAuth Apps: Provedor OAuth2 (Authorization Server)
- HTTPBearer: Esquema de autenticação FastAPI com tokens Bearer
- python-dotenv: Gerenciamento seguro de variáveis de ambiente e secrets
- In-Memory Storage: Dicionários Python para tokens e sessions (substituir por Redis/PostgreSQL em produção)
- OpenAPI/Swagger: Interface interativa automática gerada pelo FastAPI
- ReDoc: Documentação alternativa mais detalhada
Este laboratório é ideal para:
- Engenheiros de Rede que desenvolvem APIs de automação e precisam implementar autenticação segura
- Desenvolvedores Backend trabalhando com infraestrutura e DevOps/NetOps
- Arquitetos de Segurança projetando sistemas de controle de acesso para redes
- Estudantes de CCNP/DevNet que precisam entender OAuth2 para certificações
- Profissionais de NetOps/SRE implementando GitOps e automação declarativa
- Desenvolvedores Python querendo dominar FastAPI Security
- Python intermediário: Classes, async/await, decorators, type hints
- HTTP/REST APIs: Métodos, headers, status codes, JSON
- Conceitos de rede: TCP/IP, DNS, HTTPS/TLS
- Git básico: Clone, commit, push, branches
- Conta GitHub: Para criar OAuth App e testar autenticação
- Python 3.10+: Instalado no ambiente de desenvolvimento
- Editor de código: VS Code, PyCharm ou similar
- Cliente HTTP: cURL, HTTPie ou Postman para testes
- Experiência com FastAPI ou frameworks web similares
- Noções de JWT (JSON Web Tokens)
- Familiaridade com APIs de dispositivos de rede (NETCONF, RESTCONF)
Permitir que usuários autenticados via GitHub/Azure AD solicitem mudanças de rede (VLANs, firewall rules) através de uma API protegida por OAuth2.
Interface web que consulta APIs de dispositivos (Cisco, Juniper, Arista) usando credenciais OAuth2 do usuário, com auditoria completa de acessos.
Bot que executa comandos de rede em nome de usuários autenticados, garantindo rastreabilidade e permissões granulares via scopes OAuth2.
Workflows automatizados que acessam NetBox, Git e dispositivos usando service accounts OAuth2 com permissões limitadas e tokens rotativos.
Proxy que roteia requisições para diferentes tenants de rede baseado em claims do token OAuth2, com isolamento e rate limiting por usuário.