OAuth 2.0: Componentes e Fluxo 2
Estudo sobre os componentes, tokens e fluxos do protocolo de autorização OAuth 2.0, voltado para desenvolvedores e estudantes de segurança.
Cartões · 52
- OAuth 2.0
- Framework de autorização que permite a uma aplicação acessar recursos em nome de um usuário sem compartilhar credenciais.
- Resource Owner (Dono do Recurso)
- A entidade capaz de conceder acesso a um recurso protegido, geralmente o próprio usuário final.
- Client (Cliente)
- Aplicação que solicita acesso a recursos protegidos em nome do Resource Owner e com sua autorização.
- Resource Server (Servidor de Recursos)
- Servidor que hospeda os recursos protegidos e responde a requisições com tokens de acesso válidos.
- Authorization Server (Servidor de Autorização)
- Servidor responsável por autenticar o Resource Owner e emitir tokens de acesso após obter autorização.
- Access Token (Token de Acesso)
- Credencial emitida pelo Authorization Server usada pelo cliente para acessar recursos protegidos.
- Refresh Token (Token de Atualização)
- Credencial usada para obter um novo Access Token quando o atual expira, sem exigir nova autenticação.
- Authorization Grant (Concessão de Autorização)
- Credencial que representa o consentimento do dono do recurso, trocada pelo cliente por um Access Token.
- Scope (Escopo)
- Parâmetro que define e restringe o nível e o alcance do acesso concedido ao cliente.
- Client ID
- Identificador público exclusivo atribuído à aplicação cliente pelo Authorization Server.
- Client Secret
- Chave secreta compartilhada entre a aplicação cliente e o Authorization Server, usada para autenticar o cliente.
- Confidential Client (Cliente Confidencial)
- Aplicação capaz de manter suas credenciais em sigilo com segurança, como aplicações executadas no backend.
- Public Client (Cliente Público)
- Aplicação incapaz de proteger segredos de cliente, como SPAs em navegadores e apps móveis nativos.
- Redirection URI (Redirect URI)
- Endereço pré-registrado para onde o Authorization Server redireciona o usuário com o código ou token.
- Authorization Code Grant
- Fluxo seguro no qual o cliente obtém um código temporário via redirecionamento e o troca por tokens no backend.
- Implicit Grant
- Fluxo legado projetado para navegadores onde o Access Token é retornado diretamente na URL, hoje desaconselhado.
- Resource Owner Password Credentials Grant
- Fluxo onde o usuário entrega usuário e senha diretamente ao cliente, recomendado apenas para apps legadas e confiáveis.
- Client Credentials Grant
- Fluxo usado para comunicação direta máquina para máquina (M2M), onde o próprio cliente é o dono do recurso.
- PKCE (Proof Key for Code Exchange)
- Extensão do Authorization Code que protege clientes públicos contra interceptação de código sem exigir segredo fixo.
- Code Verifier (PKCE)
- Sequência criptográfica aleatória de alta entropia gerada localmente pelo cliente antes de iniciar o fluxo.
- Code Challenge (PKCE)
- Versão transformada (geralmente via SHA-256) do Code Verifier, enviada na requisição inicial de autorização.
- State Parameter
- Valor opaco enviado na requisição de autorização para prevenir ataques de Cross-Site Request Forgery (CSRF).
- Bearer Token
- Tipo de token cujo portador tem acesso total ao recurso, exigindo proteção estrita de transporte via HTTPS.
- Authorization Endpoint
- Endpoint do Servidor de Autorização onde o usuário interage para autenticar e conceder permissões.
- Token Endpoint
- Endpoint do Servidor de Autorização onde o cliente troca concessões (como códigos) por tokens de acesso.
- Token Revocation Endpoint
- Endpoint que permite ao cliente invalidar deliberadamente um token de acesso ou refresh token já emitido.
- Token Introspection
- Mecanismo (RFC 7662) que permite ao Resource Server consultar o status e metadados de um token opaco.
- JWT (JSON Web Token)
- Formato autocontido e assinado frequentemente usado como Access Token, dispensando consultas ao banco a cada requisição.
- Opaque Token (Token Opaco)
- Token sem significado interno legível pelo cliente, exigindo validação direta com o Authorization Server.
- Device Authorization Grant (Device Flow)
- Fluxo projetado para dispositivos com entrada limitada ou sem navegador, como Smart TVs e consoles.
- User Code (Device Flow)
- Código curto exibido pelo dispositivo para que o usuário o digite em um navegador secundário.
- Response Type: code
- Parâmetro que indica a intenção de iniciar o fluxo de Authorization Code solicitando um código temporário.
- Response Type: token
- Parâmetro do fluxo Implicit que indica a solicitação direta de um Access Token no redirecionamento.
- Grant Type: authorization_code
- Valor enviado ao Token Endpoint informando que um código de autorização será fornecido para troca.
- Grant Type: refresh_token
- Valor enviado ao Token Endpoint para renovar credenciais expiradas usando um Refresh Token existente.
- Grant Type: client_credentials
- Valor enviado ao Token Endpoint quando o backend autentica com suas próprias credenciais para obter acesso.
- HTTP Authorization Header: Bearer
- Forma padrão recomendada de enviar o token de acesso na requisição HTTP usando o cabeçalho Authorization.
- Tempo de Vida do Access Token
- Intervalo curto de validade (minutos ou horas) adotado para minimizar riscos em caso de vazamento.
- Tempo de Vida do Refresh Token
- Intervalo mais longo de validade (dias ou meses) usado para obter novos tokens sem deslogar o usuário.
- Refresh Token Rotation
- Prática de segurança onde um novo Refresh Token é emitido a cada renovação, invalidando o anterior.
- Consent Screen (Tela de Consentimento)
- Interface onde o Resource Owner aprova explicitamente os escopos que o cliente solicita acessar.
- Papel do HTTPS no OAuth 2.0
- Garante a confidencialidade e integridade dos tokens em trânsito, sendo obrigatório na especificação.
- OpenID Connect (OIDC)
- Camada de identidade e autenticação construída sobre o OAuth 2.0 que introduz o ID Token.
- Diferença entre OAuth 2.0 e OIDC
- OAuth 2.0 trata de autorização (o que fazer); OIDC trata de autenticação e identidade (quem você é).
- ID Token (OIDC)
- Token em formato JWT contendo informações da identidade e do perfil autenticado do usuário.
- Mutual-TLS (mTLS) no OAuth 2.0
- Técnica que vincula tokens a um certificado de cliente específico, impedindo o uso por terceiros.
- DPoP (Demonstrating Proof-of-Possession)
- Mecanismo na camada de aplicação para vincular tokens a uma chave privada pertencente ao cliente.
- Front-Channel
- Canal de comunicação que trafega dados através do navegador do usuário, considerado menos seguro.
- Back-Channel
- Canal de comunicação direta entre servidores via chamadas HTTP seguras, inacessível ao usuário final.
- Error: invalid_grant
- Erro retornado quando o código de autorização ou refresh token fornecido é inválido, expirado ou revogado.
- Error: invalid_client
- Erro emitido quando a autenticação do cliente falha, seja por Client ID incorreto ou segredo inválido.
- Error: unauthorized_client
- Erro disparado quando o cliente autenticado não tem permissão para usar o grant type requisitado.