Oauth2.0

Security
Nível de Acesso: fundamentals

Faça Login para Iniciar o Laboratório

Entre com sua conta para ter acesso completo aos nossos laboratórios práticos. Este laboratório requer o plano Fundamentals.

Oauth2.0 cover

Autenticação OAuth2 para APIs de Rede: Implementação Prática com FastAPI e GitHub

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.

Por Que OAuth2 em Network Automation?

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.

Problemas que OAuth2 Resolve em Redes

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.

O Que Você Vai Aprender

Neste laboratório prático de segurança de APIs e OAuth2, você dominará:

1. Fundamentos do Protocolo OAuth2

  • 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

2. Integração com GitHub OAuth Apps

  • 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

3. Desenvolvimento de APIs Seguras com FastAPI

  • 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

4. Proteção de Endpoints de Dispositivos de Rede

  • 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

5. Boas Práticas de Segurança em APIs

  • 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

6. Implementação Prática Passo a Passo

flowchart LR
    A[Conceitos OAuth2] --> B[Setup Ambiente]
    B --> C[GitHub OAuth App]
    C --> D[Authorization Flow]
    D --> E[Token Exchange]
    E --> F[Protected Endpoints]
    F --> G[Network Devices API]

Estrutura do Lab: Jornada de Aprendizado Progressiva

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

Progressão de Complexidade

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

Tecnologias e Ferramentas Utilizadas

Backend Framework

  • 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

HTTP Client

  • HTTPX: Cliente HTTP assíncrono para comunicação com GitHub API e validação de tokens

Autenticação e Segurança

  • 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

Armazenamento (Lab)

  • In-Memory Storage: Dicionários Python para tokens e sessions (substituir por Redis/PostgreSQL em produção)

Documentação

  • OpenAPI/Swagger: Interface interativa automática gerada pelo FastAPI
  • ReDoc: Documentação alternativa mais detalhada

Para Quem é Este Lab?

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

Pré-requisitos

Conhecimentos Necessários

  • 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 e Ferramentas

  • 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

Conhecimento Desejável (Não Obrigatório)

  • Experiência com FastAPI ou frameworks web similares
  • Noções de JWT (JSON Web Tokens)
  • Familiaridade com APIs de dispositivos de rede (NETCONF, RESTCONF)

Casos de Uso em Produção

1. Portal Self-Service de Rede

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.

2. Dashboard de Observabilidade

Interface web que consulta APIs de dispositivos (Cisco, Juniper, Arista) usando credenciais OAuth2 do usuário, com auditoria completa de acessos.

3. ChatOps com Slack/Teams

Bot que executa comandos de rede em nome de usuários autenticados, garantindo rastreabilidade e permissões granulares via scopes OAuth2.

4. CI/CD Pipeline de Configuração

Workflows automatizados que acessam NetBox, Git e dispositivos usando service accounts OAuth2 com permissões limitadas e tokens rotativos.

5. API Gateway para Multi-Tenancy

Proxy que roteia requisições para diferentes tenants de rede baseado em claims do token OAuth2, com isolamento e rate limiting por usuário.

Arquitetura Final

Fluxo Completo de Autenticação e Autorização

sequenceDiagram
    participant User
    participant FastAPI
    participant GitHub
    participant NetworkDevice

    User->>FastAPI: GET /login
    FastAPI->>GitHub: Redirect to authorize
    GitHub->>User: Login + Consent
    GitHub->>FastAPI: Callback with code
    FastAPI->>GitHub: Exchange code for token
    GitHub->>FastAPI: Access Token
    FastAPI->>User: Session created
    User->>FastAPI: GET /api/devices
    FastAPI->>NetworkDevice: Authenticated request
    NetworkDevice->>FastAPI: Device data
    FastAPI->>User: JSON response

Referências

Tarefas (0)

Sem tarefas disponíveis.