O que é OAuth?
OAuth, ou Open Authorization (autorização aberta), é um protocolo de autorização padrão aberto para delegação de acesso. É um método seguro para permitir que os usuários concedam aos provedores de serviços (ou seja, sites e aplicativos) acesso às suas informações sem fornecer suas senhas.
O OAuth fornece aos clientes acesso delegado seguro aos recursos do servidor em nome do proprietário do servidor. Fluxos de autorização específicos permitem que o cliente acesse recursos protegidos sem precisar fornecer sua senha. Em vez disso, o cliente usa tokens de acesso que podem ser aprovados pelo proprietário do recurso para conceder acesso a esse recurso.
O que são tokens OAuth?
Os tokens OAuth autorizam o acesso de um usuário aos recursos. Em outras palavras, eles não autenticam usuários, mas são usados pelo provedor de serviços para autorizar o acesso em nome do usuário a outros recursos.
Uma transação do OAuth ocorre quando um usuário solicita permissão de outro recurso usando sua identidade de provedor de serviços. O recurso solicitará permissão do provedor de serviços, que é fornecida na forma de um token de solicitação e uma senha. Em seguida, o recurso redireciona o usuário ao provedor de serviços para autenticar a solicitação. Nesse ponto, o recurso troca o token de solicitação por um token de acesso e uma senha. Se os dois tokens compartilharem o mesmo segredo, o processo do OAuth será concluído e o usuário delegou com êxito o acesso ao recurso ao provedor de serviços.
O processo do OAuth
Passo 1
Solicitar acesso
Anne faz uma solicitação no YouTube (recurso) para publicar vídeos diretamente em seu feed do Twitter (provedor de serviços). O YouTube então pede permissão de acesso ao Twitter.
Passo 2
Solicitar troca de token e senha
O Twitter fornece ao YouTube um token de solicitação e uma senha.
Passo 3
Autenticação
O YouTube redireciona Anne para o Twitter para fazer login. Anne fornece ao Twitter suas credenciais de login e autentica que a solicitação do YouTube foi iniciada pelo usuário.
Passo 4
Troca de token de acesso
Depois que a solicitação é autenticada pelo usuário, o YouTube solicita ao Twitter que troque o token de solicitação e a senha por um token de acesso. Se as senhas associadas aos tokens corresponderem, o Twitter fornecerá o token de acesso ao YouTube e concederá acesso ao YouTube.
Passo 5
Acesso concedido
Anne agora pode usar o YouTube com segurança para publicar vídeos diretamente em seu feed do Twitter.
O exemplo acima resume um processo geral de OAuth. OAuth também permite controle e permissões mais granulares, como o direito de revogar tokens sempre que o usuário desejar e definir diferentes níveis de acesso a provedores de serviços para diferentes recursos.
Comparação entre OAuth 1.0 e OAuth 2.0
Em 2012, o OAuth 2.0 foi introduzido como uma grande reformulação do OAuth 1.0. As alterações feitas nessa versão do OAuth foram significativas o suficiente para que as versões 2.0 e 1.0 não sejam compatíveis. OAuth 2.0 foi projetado para solucionar uma falha de segurança de fixação de sessão no fluxo de autorização do OAuth.
Embora esse problema tenha sido resolvido com o OAuth 2.0, a nova versão intencionalmente não define ou oferece suporte a criptografia, assinatura, verificação de cliente ou vinculação de canal, mas exige que os implementadores usem um protocolo de segurança diferente, como HTTPS/TLS para essa finalidade.
As diferenças entre OAuth 1.0 e 2.0 podem ser resumidas abaixo:
Comparação entre OAuth e SAML – qual é a diferença?
SAML é uma variante de XML que descreve uma estrutura que permite que um dispositivo execute autenticação e autorização em nome de um ou mais dispositivos.
Com o surgimento de opções leves para codificação de dados, como o JSON, o OAuth ganhou adoção para dar suporte a usuários de dispositivos móveis. Embora o OAuth seja um protocolo mais recente que evoluiu a partir da necessidade de substituir o SAML, ambos os protocolos são essenciais para o logon único seguro (SSO).
Em outras palavras, o OAuth não é uma alternativa ao SAML, pois os dois protocolos podem se complementar. Por exemplo, em um ambiente SSO, o SAML pode ser responsável pela autenticação (confirmar que o usuário é autêntico e deve ter acesso) e o OAuth será responsável pela autorização (conceder acesso a recursos protegidos específicos).