FT-OAUTH-AUTH-CODE-V1· 1.0.0Integrações
OAuth 2.0 — Authorization Code grant + PKCE
Autenticação user-on-behalf via redirect ao provider. PKCE obrigatório (RFC 7636). Único grant que devolve refresh_token — Lefia renova automaticamente.
Atualizado em 8/22/2026
OAuth 2.0 — Authorization Code grant + PKCE
Grant user-on-behalf — usuário humano vai ao provider, autoriza o Lefia, volta com
code. RFC 6749 §4.1 + PKCE RFC 7636 (S256).Quando usar
- Acessar dados em nome de um usuário real (Google Workspace, Microsoft 365 pessoal, GitHub, etc.)
- Provider exige consent screen e refresh_token de longa duração
- Conformidade que proíbe Client Credentials (provider só libera escopo via auth user)
Como configurar
No form REST, escolha
Autenticação = oauth2_auth_code e preencha:| Campo | Exemplo |
|---|---|
| Token Endpoint | https://oauth2.googleapis.com/token |
| Authorize Endpoint | https://accounts.google.com/o/oauth2/v2/auth |
| Client ID | App OAuth registrado no provider |
| Client Secret | (confidential client) |
| Scope | openid email https://www.googleapis.com/auth/drive.readonly |
| Redirect URI | Default: https://lefia.ai/api/oauth/callback — registre no provider |
Fluxo após salvar
- Salve a conexão (sem clicar em "Testar" ainda — não tem token).
- Clique no botão "Connect" no card da integração.
- Um popup abre com a tela de consent do provider.
- Após autorizar, o popup fecha sozinho e a UI atualiza com toast "Conexão autorizada".
- Daí em diante, "Testar" e o pipeline de mensagens usam o token cacheado.
Refresh automático
Authorization Code é o único grant que devolve
refresh_token. O Lefia:- Cacheia access_token + refresh_token criptografados em
oauth_tokens. - Quando access_token expira: tenta refresh transparentemente.
- Se refresh falhar (refresh revogado / expirado): pipeline retorna erro "Reconecte a conexão" — botão "Reconectar" aparece pro user passar pelo redirect de novo.
Segurança
- State CSRF + PKCE S256 obrigatórios. State persistido em
oauth_authorization_statescom TTL 15min eused_atanti-replay. - Callback valida origem, expiração e single-use antes de trocar code.
- Refresh tokens criptografados com a mesma key dos credentials (AES-256-GCM).
Limitações
- Provider deve registrar o Redirect URI exatamente como
https://lefia.ai/api/oauth/callback(ou o custom que você configurar). - Popup blocker pode bloquear o flow — peça pro user permitir popups do site.
- Tokens são per-connection, não compartilhados entre conexões.
Tickets relacionados
- #195 implementação completa (PKCE, callback, refresh, UI Connect button).
Histórico de versões
- 1.0.0
OAuth 2.0 Authorization Code grant + PKCE (RFC 6749 §4.1 + RFC 7636). PKCE primitives, authorization URL builder, code → token exchange, refresh_token grant. Endpoints /api/oauth/authorize/start + /api/oauth/callback + /oauth/done page com postMessage. UI: OAuthConnectButton no integration-card. Migration oauth_authorization_states + oauth_tokens.refresh_token_encrypted. authType=oauth2_auth_code wireado em REST + OData + metadata. 17 testes novos.
5/16/2026 · new