Segurança OAuth: Um Guia para Desenvolvedores (PT-BR)
Aprenda a proteger fluxos de autorização OAuth, proteger tokens de acesso e mitigar vulnerabilidades comuns. Implemente práticas robustas de segurança de API com este guia completo.

Segurança OAuth: Um Guia para Desenvolvedores
OAuth 2.0 é o padrão do setor para autorização delegada. Ele permite que aplicativos de terceiros acessem recursos limitados em nome de um usuário sem expor suas credenciais. No entanto, implementar o OAuth com segurança é complexo. Este guia oferece uma análise aprofundada das melhores práticas de segurança OAuth para desenvolvedores, cobrindo vulnerabilidades comuns e estratégias de mitigação.
Ponto Chave 1 A segurança OAuth não se resume ao provedor OAuth; é uma responsabilidade compartilhada entre o provedor, o aplicativo cliente e o servidor de recursos.
Ponto Chave 2 A validação adequada de URIs de redirecionamento é crucial para evitar ataques de interceptação de código de autorização.
Ponto Chave 3 Usar tokens de acesso de curta duração e rotação de tokens de atualização reduz significativamente o impacto do comprometimento de tokens.
Ponto Chave 4 Auditar regularmente sua implementação OAuth e manter-se atualizado com as melhores práticas de segurança é essencial.
Entendendo os Fluxos OAuth e as Vulnerabilidades
OAuth 2.0 define vários tipos de concessão, cada um adequado para diferentes cenários de aplicação. Os mais comuns são:
- Concessão de Código de Autorização: Usado para aplicativos web e móveis onde o cliente pode armazenar com segurança um segredo do cliente.
- Concessão Implícita: (Descontinuado) Usado para aplicativos de página única (SPAs), mas é menos seguro devido à exposição de tokens de acesso na URL.
- Concessão de Credenciais de Senha do Proprietário do Recurso: (Desencorajado) Exige que o cliente colete o nome de usuário e a senha do usuário, o que é um risco de segurança.
- Concessão de Credenciais do Cliente: Usado para autenticação máquina a máquina onde um contexto de usuário não está disponível.
Várias vulnerabilidades podem surgir durante o fluxo OAuth:
- Interceptação de Código de Autorização: Atacantes redirecionam os usuários para um site malicioso que se parece com o servidor de autorização, roubando o código de autorização.
- Manipulação de URI de Redirecionamento: Explorar URIs de redirecionamento mal configurados para enviar códigos de autorização para servidores controlados por atacantes.
- Falsificação de Solicitação Entre Sites (CSRF): Atacantes enganam os usuários para autorizar um aplicativo malicioso.
- Roubo de Token: Comprometer tokens de acesso ou tokens de atualização por meio de vulnerabilidades de armazenamento ou interceptação de rede.
- Impersonificação de Cliente: Atacantes usando um ID e segredo de cliente comprometidos para acessar recursos.
Protegendo Sua Implementação OAuth
Mitigar essas vulnerabilidades requer uma abordagem em camadas:
1. Validação de URI de Redirecionamento
Valide rigorosamente os URIs de redirecionamento. Permita apenas URIs de redirecionamento pré-registrados e explicitamente definidos. Implemente uma abordagem de lista de permissões e evite padrões curinga. Certifique-se de que o esquema do URI de redirecionamento (http vs. https) também seja validado. OAuth 2.0 RFC 6749 seção 3.1.2 enfatiza a importância da validação de URI de redirecionamento.
2. Parâmetro State e Nonce
Use o parâmetro state para evitar ataques CSRF. Gere um valor state criptograficamente aleatório antes de redirecionar para o servidor de autorização e verifique-o ao receber o retorno de chamada. Considere também usar um parâmetro nonce para segurança adicional.
3. PKCE (Proof Key for Code Exchange)
Implemente PKCE, especialmente para clientes públicos (por exemplo, aplicativos móveis, SPAs) que não podem armazenar um segredo do cliente com segurança. PKCE adiciona uma camada extra de proteção, garantindo que apenas o aplicativo que iniciou a solicitação de autorização possa trocar o código de autorização por um token de acesso.
// Exemplo de código PKCE (simplificado)// Gere um verificador de códigolet codeVerifier = generateRandomString();// Gere um desafio de código a partir do verificador de códigolet codeChallenge = generateCodeChallenge(codeVerifier);// Inclua codeChallenge e codeChallengeMethod na solicitação de autorização// ...// Troque o código de autorização por um token de acesso, fornecendo o verificador de código// ...
4. Gerenciamento de Token
Use tokens de acesso de curta duração para minimizar o impacto do comprometimento de tokens. Implemente a rotação de tokens de atualização, onde um novo token de atualização é emitido com cada atualização de token de acesso, invalidando o token de atualização anterior. Armazene os tokens com segurança usando criptografia e controles de acesso. Nunca armazene tokens no código do lado do cliente.
Considerações de Segurança de API
Proteger seus endpoints de API é tão crucial quanto proteger o fluxo OAuth. Implemente as seguintes melhores práticas:
- Validação de Token: Valide minuciosamente os tokens de acesso antes de conceder acesso aos recursos. Verifique a assinatura, o tempo de expiração e o público (
audclaim) do token. - Validação de Escopo: Aplique restrições de escopo. Certifique-se de que o token de acesso tenha os escopos necessários para acessar o recurso solicitado.
- Limitação de Taxa: Implemente a limitação de taxa para evitar abusos e ataques de negação de serviço.
- Validação de Entrada: Valide todas as entradas da API para evitar ataques de injeção.
- Apenas HTTPS: Force HTTPS para toda a comunicação da API.
Como a Didit Ajuda
A Didit fornece recursos robustos de verificação de identidade e avaliação de risco que complementam a segurança OAuth. Ao integrar a Didit ao seu fluxo OAuth, você pode:
- Verificar a identidade do usuário antes de emitir tokens de acesso.
- Detectar atividades fraudulentas e impedir acesso não autorizado.
- Aprimorar a segurança da API com controle de acesso baseado em risco.
- Cumprir os requisitos regulamentares relacionados à verificação de identidade e AML.
O módulo de Rastreamento AML da Didit pode ser integrado para verificar os usuários em relação às listas de vigilância globais durante o processo OAuth, adicionando uma camada extra de segurança.
Pronto para Começar?
Implementar uma segurança OAuth robusta é fundamental para proteger seu aplicativo e os dados do usuário. Seguindo as melhores práticas delineadas neste guia, você pode reduzir significativamente o risco de vulnerabilidades relacionadas ao OAuth.
Recursos: