O que é OAuth?
- Glossário do IAM
- O que é OAuth?
OAuth, ou Open Authorization, é um padrão aberto que permite que usuários concedam a aplicativos de terceiros acesso aos seus recursos sem precisar compartilhar suas credenciais de login. Em vez de expor senhas, o OAuth autoriza aplicativos de terceiros por meio de tokens de acesso temporários, que concedem acesso em nome do usuário.
Por exemplo, suponha que você esteja usando um aplicativo de terceiros como o Mailchimp, uma popular ferramenta de marketing por e-mail, e queira importar seus contatos do Google para montar uma lista de e-mails. Em vez de baixar manualmente e carregar cada contato no Mailchimp, o OAuth permite conectar sua Conta do Google ao Mailchimp de forma segura, concedendo acesso limitado aos seus contatos sem expor sua senha.
OAuth vs OAuth 2.0: qual é a diferença?
O OAuth 1.0 exige que cada requisição de autorização seja assinada com uma assinatura criptográfica. Isso significa que o app de terceiros precisa assinar a requisição com uma chave secreta compartilhada, que o servidor de autorização deve replicar para verificar a requisição. Embora as assinaturas criptográficas garantam que a requisição não foi adulterada, elas não criptografam os dados, que permanecem vulneráveis à interceptação durante o tráfego.
O OAuth 2.0 simplifica o processo de autorização ao substituir assinaturas criptográficas pela criptografia HTTPS, garantindo transmissão de dados segura de ponta a ponta. Além disso, o OAuth 2.0 utiliza tokens de acesso de curta duração e tokens de atualização para aumentar a segurança, reduzindo o risco de exposição dos tokens. Também oferece maior flexibilidade ao suportar diferentes fluxos de autorização, dependendo do tipo de aplicação, como apps web, apps móveis e comunicação servidor a servidor.
| Recurso | OAuth 1.0 | OAuth 2.0 |
|---|---|---|
| Segurança | Usa assinaturas criptográficas com uma chave secreta compartilhada em cada solicitação. Evita adulteração, mas não interceptação. | Usa criptografia HTTPS/TLS para transmissão segura de dados de ponta a ponta. |
| Sistema de tokens | Tipo único de token sem expiração padrão | Usa tokens de acesso de curta duração e tokens de atualização para maior segurança |
| Verificação de solicitação | Tanto o aplicativo quanto o servidor devem gerar assinaturas correspondentes para verificar as solicitações | O TLS é responsável pela criptografia e verificação das requisições |
| Fluxos de autorização | Fluxo único para todos os casos de uso | Múltiplos fluxos que suportam diferentes tipos de aplicações (web, móvel, servidor a servidor) |
| Complexidade da implementação | Complexo devido aos requisitos de assinatura criptográfica | Implementação mais simples devido à dependência de HTTPS |
| Uso moderno | Menos comum em aplicativos modernos | Padrão do setor para aplicações modernas |
| Compromisso de segurança | Camada adicional de segurança de assinatura, porém mais complexa | Depende da segurança do TLS, sendo mais simples de implementar corretamente |
| Recomendado para | Sistemas legados que exigem verificação de assinatura | Maioria dos aplicativos e APIs modernos |
Embora tanto o OAuth quanto o OAuth 2.0 sejam opções práticas, o OAuth 2.0 é recomendado porque é mais fácil de implementar e mais amplamente usado em aplicações modernas.
Como o OAuth funciona
Aqui está um guia passo a passo sobre como funciona o OAuth 2.0 usando o fluxo de concessão de código de autorização:
- O usuário inicia a autorização: Um usuário deseja conceder a um aplicativo de terceiros (chamado de cliente) acesso a seus recursos hospedados em um servidor. Isso normalmente começa quando o usuário clica em um botão como “Entrar com Google” ou “Conectar ao GitHub” no aplicativo cliente.
-
O cliente solicita autorização:
O cliente redireciona o usuário para o endpoint de autorização do servidor de autorização. A solicitação inclui parâmetros como:
client_id,redirect_uri,response_type=code,scopeestate(para proteção contra CSRF). O usuário pode então ser solicitado a se autenticar (se ainda não estiver logado) e aprovar ou negar o acesso solicitado. -
A autorização é concedida: Se o usuário aprovar a solicitação, o servidor de autorização redireciona o navegador do usuário de volta para o
redirect_urido cliente. Um código de autorização é incluído na URL, junto com o parâmetrostate, que o cliente deve verificar para garantir que a solicitação não foi adulterada ou interceptada. -
O cliente solicita um token de acesso:
O cliente envia uma solicitação ao endpoint de token para trocar o código de autorização por tokens. Essa solicitação deve incluir:
authorization_code,client_id,client_secret(se aplicável),redirect_uri(que deve corresponder à solicitação original) egrant_type=authorization_code. - O cliente recebe tokens de acesso e atualização: Se a solicitação for validada, o servidor de autorização emite um access token para autenticar requisições à API e um refresh token para obter novos tokens de acesso quando o atual expirar. O cliente armazena esses tokens com segurança e usa o access token em suas requisições de API.
-
O cliente usa o token de atualização:
Quando o access token expira, o cliente pode solicitar um novo enviando uma requisição com o refresh token ao endpoint de token. Para obter um novo access token, o cliente deve enviar uma nova solicitação com os seguintes critérios:
client_id,client_secret,refresh_tokenegrant_type=refresh_token.
Vantagens do OAuth
O uso do OAuth oferece várias vantagens, como reduzir o risco de roubo de credenciais, melhorar a experiência do usuário e viabilizar o Single Sign-On (SSO).
Reduz o risco de roubo ou uso indevido de credenciais
O OAuth elimina a necessidade de os usuários compartilharem suas credenciais diretamente com aplicativos de terceiros. Em vez disso, ele se baseia em um servidor de autorização para gerenciar o acesso, reduzindo significativamente o risco de exposição de credenciais, especialmente em caso de violação de dados. O OAuth 2.0 utiliza tokens de acesso de curta duração que concedem acesso limitado a recursos por um tempo específico. Esses tokens podem ser revogados pelo usuário a qualquer momento, garantindo que o acesso permaneça temporário e sob controle do usuário.
Melhora a experiência do usuário
O OAuth simplifica a experiência do usuário ao permitir o acesso a várias contas e recursos usando credenciais já existentes, eliminando a necessidade de criar nomes de usuário e senhas separados para cada serviço. Isso acelera o acesso e reduz o incômodo de gerenciar múltiplos logins.
Permite usar Single Sign-On
O OAuth possibilita o SSO, permitindo que os usuários façam login uma única vez em um provedor confiável e depois utilizem vários apps sem precisar reinserir suas credenciais. Enquanto o usuário permanecer logado no provedor, poderá usar de forma contínua outros apps conectados à mesma conta. Por exemplo, um usuário logado no Google pode também acessar aplicativos que dependem do Google para autenticação.
Desvantagens do OAuth
Apesar das vantagens, o OAuth apresenta alguns riscos de segurança, incluindo a possibilidade de que tokens sejam comprometidos se não forem armazenados ou transmitidos de forma segura, e o fato de os usuários ainda poderem ser alvo de ataques de phishing.
Os tokens podem ser comprometidos se não forem armazenados de forma segura
Tokens de acesso e refresh tokens são alvos valiosos para criminosos cibernéticos, pois fornecem acesso direto a dados e recursos do usuário. Se forem armazenados incorretamente, podem ser comprometidos por agentes mal-intencionados, resultando em acessos não autorizados.
Os tokens podem ser comprometidos se não forem transmitidos de forma segura
Se os tokens forem enviados por uma conexão não segura, como HTTP em vez de HTTPS, podem ser interceptados em um ataque Man-in-the-Middle (MITM). Uma vez comprometido, o token pode ser usado para obter acesso não autorizado aos recursos de um usuário.
Susceptível a ataques de phishing
O OAuth depende do redirecionamento dos usuários para um servidor de autorização para conceder permissões, mas esse processo pode ser explorado em ataques de phishing. Em um ataque desse tipo, o invasor induz o usuário a inserir credenciais em uma página de login falsa que imita o servidor legítimo de autorização. Se o usuário não perceber a diferença, poderá inserir suas credenciais sem saber, entregando ao invasor acesso a contas e dados sensíveis.