Pular para o conteúdo principal

O Framework de Autorização OAuth 2.1

· 5 min para ler
Alfredo Fernandez
Arquiteto de solução

O Framework de Autorização OAuth 2.1

🧩 Resumo

O OAuth 2.1 Authorization Framework fornece um mecanismo seguro e padronizado para que aplicações obtenham acesso limitado a recursos protegidos.
Esse acesso pode ocorrer em nome do proprietário do recurso, mediante interação de autorização com o servidor, ou diretamente em nome da própria aplicação (cliente).

O OAuth 2.1 moderniza e consolida o antigo framework OAuth 2.0, aprimorando a segurança, simplificando a implementação e descontinuando fluxos obsoletos.


1. Introdução

O OAuth 2.1 é a evolução do OAuth 2.0 (RFC 6749) — um conjunto de protocolos padronizados que permite a delegação de acesso a recursos protegidos.
A nova versão remove fluxos inseguros, reforça as diretrizes de registro de clientes e manipulação de tokens, além de incorporar as melhores práticas atuais de segurança.

As principais funções (roles) do framework são:

  • Proprietário do Recurso (Resource Owner): Entidade capaz de conceder acesso a um recurso protegido.
  • Cliente (Client): Aplicação que solicita o acesso.
  • Servidor de Autorização (Authorization Server): Emite tokens de acesso após autenticar o proprietário do recurso.
  • Servidor de Recursos (Resource Server): Hospeda o recurso protegido e valida o token recebido.

O OAuth 2.1 suporta vários tipos de concessão (grants) — como authorization code, client credentials e refresh tokens — adequados a aplicações web, móveis e nativas.


2. Fluxo do Protocolo

O fluxo de autorização segue uma sequência bem definida:

O framework baseia-se em redirecionamentos HTTPS, criptografia TLS e formatos padronizados de token, garantindo confidencialidade e integridade.


3. Tipos de Concessão (Grants)

O OAuth 2.1 define diferentes tipos de concessão de autorização:

🔑 Código de Autorização (Authorization Code)

Fluxo seguro voltado a aplicações web e SPAs modernas.
Utiliza PKCE (Proof Key for Code Exchange) para evitar ataques de interceptação.

🔄 Token de Atualização (Refresh Token)

Permite acesso contínuo sem necessidade de nova autenticação do usuário.
O cliente troca o refresh token por um novo access token.

🤝 Credenciais do Cliente (Client Credentials)

Usado em comunicações servidor-servidor, onde a aplicação atua em nome próprio.

Outros tipos de grants personalizados podem ser definidos conforme o caso de uso.


4. Tokens de Acesso

Os tokens de acesso são credenciais utilizadas pelos clientes para acessar recursos protegidos:

  • Bearer Tokens: Os mais comuns, enviados no cabeçalho HTTP Authorization: Bearer <token>.
  • Sender-Constrained Tokens: Associados a um cliente específico, reduzindo o risco de uso indevido.
  • Escopo (Scope): Define as permissões do token, seguindo o princípio do menor privilégio.

O OAuth 2.1 reforça a importância da segurança no transporte, expiração de tokens e mitigação contra roubo e reutilização.


5. Registro de Clientes

Antes de utilizar o framework, os clientes devem ser registrados junto ao servidor de autorização, fornecendo:

  • Identificador do cliente (Client ID)
  • URIs de redirecionamento
  • Credenciais de autenticação (Client Secret ou métodos alternativos)

Recomendações de segurança incluem:

  • Prevenir ataques CSRF
  • Evitar open redirectors
  • Proteger contra falsificação de identidade de clientes

6. Considerações de Segurança

O OAuth 2.1 aborda diversas ameaças e define recomendações claras:

  • Exigir TLS para todas as comunicações
  • Restringir tempo de vida e escopo dos tokens
  • Prevenir:
    • Injeção de código de autorização
    • Phishing
    • Clickjacking
    • Cross-Site Request Forgery (CSRF)
  • Aplicar verificações de redirecionamento seguras para apps nativos e baseadas em navegador.

7. Aplicações Nativas e Baseadas em Navegador

📱 Aplicações Nativas

Devem utilizar interfaces de loopback ou esquemas de URI privados para retorno seguro do token.

🌐 Aplicações Web (SPA)

Devem evitar o fluxo implícito, substituindo-o pelo fluxo de Authorization Code com PKCE para maior segurança.


8. Diferenças em Relação ao OAuth 2.0

O OAuth 2.1 simplifica e corrige falhas da versão anterior:

  • 🔒 Remove o fluxo Implícito (Implicit Grant)
  • 🎯 Exige validação rigorosa de URIs de redirecionamento
  • 📘 Consolida práticas de segurança no núcleo da especificação
  • 💡 Recomenda o uso obrigatório de PKCE para todos os clientes públicos

9. Conclusão

O OAuth 2.1 oferece um framework robusto e atualizado para autorização moderna, equilibrando usabilidade e segurança.
Ao eliminar fluxos inseguros e consolidar as melhores práticas, ele garante delegação de acesso confiável para aplicações web, móveis e nativas.


🔗 Referências