Identidade e acesso
Os 4 Papéis Fundamentais (Roles) do OAuth
- Resource Owner (Dono do Recurso): Quase sempre é o Usuário final. É quem concede acesso a uma parte da sua conta.
- Client (Cliente): A Aplicação que deseja acessar os dados do usuário. Ela não é o usuário, ela age em nome do usuário.
- Resource Server (Servidor de Recursos): O servidor que hospeda os dados protegidos (as APIs).
- Authorization Server (Servidor de Autorização): Autentica o usuário, colhe o consentimento e emite os tokens
Tipos de Clientes (Confidential vs. Public)
- Confidential (Confidencial/Privado): Roda em servidores protegidos (Backend). Consegue guardar um segredo (
client_secret). - Public (Público): Roda no dispositivo do usuário (Single Page Applications como React, Apps Mobile). Não consegue proteger um segredo.
Fluxos de Concessão (Grant Types)
- Authorization Code Grant (Fluxo do Código de Autorização): O fluxo padrão e mais seguro para aplicações Web tradicionais (Server-side). Envolve a troca de um código temporário por um token.
- Authorization Code com PKCE: A evolução obrigatória para Clientes Públicos (Mobile e SPAs). Substitui o Implicit Flow (que foi descontinuado por ser inseguro).
- Client Credentials Grant: Usado para comunicação Server-to-Server (sem usuário humano envolvido). A própria aplicação se autentica usando seu
client_ideclient_secret. - Device Authorization Grant (Device Code): Usado para dispositivos com limitações de entrada/teclado (Smart TVs, CLI/Terminais, IoT). O usuário valida o acesso digitando um código em outro dispositivo (como o celular).
Nota de Estudo: Os fluxos Implicit Grant e Resource Owner Password Credentials (Senha direta) foram descontinuados devido a falhas de segurança de conceitos modernos.
Segurança, Extensões e Tokens
Tipos de Tokens
- Access Token: O passe livre para a API. Curta duração. Pode ser um formato opaco ou um JWT (JSON Web Token).
- Refresh Token: Usado estritamente para obter novos Access Tokens sem incomodar o usuário para fazer login de novo. Longa duração, guardado de forma segura.
- ID Token: Exclusivo do OpenID Connect (OIDC). Sempre é um JWT. Serve para provar a identidade do usuário (Autenticação), enquanto o OAuth puro cuida da autorização (Access Token).
Mitigação de Ataques Famosos
- Parâmetro
state: Um valor aleatório gerado pelo cliente para prevenir ataques de CSRF (Cross-Site Request Forgery). O servidor deve devolvê-lo idêntico. - PKCE (
code_verifierecode_challenge): Evita a interceptação do código de autorização em redes ou dispositivos públicos. O cliente envia o hash (challenge) no início e revela o texto puro (verifier) no final. - Token Revocation (RFC 7009): O endpoint/mecanismo oficial utilizado para invalidar um token (fazer logout de forma ativa).