O OAuth 2.0 é uma estrutura de autorização que tem um padrão aberto para autenticação em sistemas utilizando http. Vem descobrir como funciona este protocolo!
Com a democratização dos aplicativos web e a proliferação dos aplicativos móveis, diferentes aplicativos são trazidos para interagir uns com os outros.
Assim, um site A poderia usar dados de uma rede social conhecida para registrar um usuário.
Esta abordagem permite ao usuário dar acesso às suas informações pessoais já disponíveis na rede social para o site A. Antes da chegada do OAuth, o usuário precisava confiar no site A e fornecer a ele suas credenciais.
No entanto, para evitar solicitar credenciais novamente ao usuário, os aplicativos de terceiros costumavam manter a senha do usuário em sigilo.
Além dos limites de segurança associados a manter a senha em sigilo, o aplicativo de terceiros era capaz de acessar todas as informações protegidas sem distinção.
Para resolver esses problemas, o protocolo OAuth foi criado a fim de permitir interações entre aplicativos em um contexto de segurança ideal. Portanto, o OAuth 2.0 foi projetado para uso com o protocolo HTTPS.
E então, já ouviu falar desse protocolo? Se não, fique tranquilo. Entenda melhor neste artigo todos os pontos sobre essa ferramenta que tem tomado os holofotes no que se refere a protocolos hoje!
Conteúdo
O que é Oauth 2.0?
OAuth 2 é a versão 2 do protocolo OAuth (também chamado de estrutura). Este protocolo permite que aplicativos de terceiros obtenham acesso limitado a um serviço disponível através de HTTP por meio de autorização prévia do proprietário dos recursos.
O acesso é solicitado por um chamado “cliente”, que pode ser um site ou um aplicativo móvel, por exemplo. Se os recursos não pertencerem ao cliente, este deve obter a autorização do utilizador final, caso contrário pode obter o acesso diretamente autenticando-se com as suas próprias credenciais.
A versão 2 deve simplificar a versão anterior do protocolo e facilitar a interoperabilidade entre diferentes aplicativos. As especificações ainda estão sendo escritas e o protocolo está em constante evolução. Porém, isso não impediu que fosse aclamado e implementado por muitos sites como Google e o Facebook.
Para que serve o Oauth 2.0?
Sem o OAuth2, para dar acesso a um aplicativo de terceiros, os identificadores do usuário devem ser armazenados em claro. Esta prática envolve muitos riscos em caso de comprometimento, além de ser impossível limitar os direitos do aplicativo de uma forma padronizada.
Além disso, identificar a entidade que deseja acessar recursos é complicado, abrindo assim a porta para abusos e deixando o usuário e o Sistema de Informação indefesos.
O uso de OAuth2 permite que você configure uma delegação de autorização para conceder a um aplicativo de terceiro acesso limitado a um recurso, com a concordância do proprietário deste último. Assim, não há necessidade de armazenar os identificadores do usuário em aplicativos de terceiros.
Como funciona o Oauth 2.0?
OAuth 2.0 é baseado em trocas entre 4 atores. O usuário, aqui denominado Proprietário do recurso. Assim, ele pode conceder acesso ao recurso para um aplicativo denominado Cliente.
O Authorization Server ocupa o papel central dentro do protocolo, e é responsável por autenticar o Resource Owner e emitir sua autorização na forma de um token denominado token de acesso. O servidor de recursos corresponde ao servidor onde os recursos protegidos são armazenados.
O protocolo aborda situações de segurança diferenciadas de acordo com 2 tipos de clientes:
- Um cliente confidencial é um aplicativo ou serviço de back-end instalado em uma área segura. Portanto, seus identificadores e tokens não são expostos ao Proprietário do Recurso.
- Um cliente público é geralmente instalado e executado na máquina do Proprietário do Recurso ou executado pelo navegador (front-end), de modo que é possível que pessoas e programas com acesso à máquina acessem os identificadores e tokens do cliente.
Um cliente confidencial vê seu acesso a recursos protegidos facilitado. No entanto, isso requer que ele seja capaz de garantir a confidencialidade de seus identificadores e tokens emitidos.
Ao se registrar no Authorization Server, todos os clientes recebem uma id de cliente, bem como um pin secreto para clientes confidenciais.
Solicitação de autorização
OAuth2 oferece vários métodos para acessar recursos recebendo um token de acesso. Dessa forma, para autorizar um aplicativo a acessar recursos, o Proprietário do Recurso deve se autenticar no Servidor de Autorização.
Ao contrário da identificação, que consiste em dar a própria identidade, a autenticação comprova essa identidade por diversos meios, como senha, biometria, etc.
Token de acesso
O token de acesso é o elemento usado para acessar um recurso protegido. Concedido pelo proprietário do recurso e emitido pelo servidor de autorização, ele fornecerá os privilégios concedidos ao cliente (ou seja, escopo) e o tempo de vida dessa autorização. Geralmente é de curta duração.
O token de atualização é o elemento usado para obter um novo token de acesso, sem interação com o usuário. Ele é emitido apenas para clientes confidenciais. Portanto, seu uso requer apenas a autenticação do cliente e não mais do Proprietário do Recurso.
Graças ao token de atualização, o usuário não é obrigado a se autenticar regularmente. Dessa forma, acabará melhorando sua experiência com o OAuth.
Os tokens clássicos são cadeias de caracteres ininteligíveis para o usuário. Apenas os Authorization Servers podem utilizá-los.
Portanto, esses tokens requerem o estabelecimento de uma cinemática de troca entre o Authorization Server, que entrega os tokens, e o Resource Server que os recebe.
Na verdade, o servidor de recursos não consegue determinar se o token de acesso é válido para a solicitação do cliente. Portanto, o servidor de recursos então, faz uma chamada para o servidor de autorização com o token.
Em seguida, ele retorna as informações representadas por esse token, incluindo o escopo, a validade e a identidade do cliente para o qual foi emitido. Isso permite que o servidor de recursos valide ou não a solicitação do cliente.
Conclusão
OAuth 2.0 oferece um grande painel para configurar um sistema de autorização padronizado. Ou seja, todos os diferentes cenários implementados permitem, cada um com sua abordagem, obter um token de acesso e atender a uma necessidade simples: acesso seguro a um recurso protegido em nome de seu proprietário.
Os documentos oficiais de OAuth para Google e Facebook contêm exemplos simples sobre o uso da estrutura OAuth 2.0. Além disso, também possui informações sobre as possibilidades de estendê-la.
É importante lembrar que existe um conjunto de riscos conhecidos que podem tornar uma implementação OAuth 2.0 vulnerável.
As regras de segurança envolvidas na implementação de um servidor OAuth 2.0 confiável são bastante numerosas e complexas, portanto, é melhor usar uma biblioteca já existente para facilitar o trabalho se seu objetivo for apenas usar o OAuth 2.0.
Goste ou não, fato é que OAuth 2 parece estar se estabelecendo como a solução padrão para delegação de autorização entre os diferentes aplicativos por mais alguns anos. Portanto, essa é a constatação a que podemos chegar!
Dessa forma, esperamos ter ajudado você a entender seu funcionamento interno. Se gostou, compartilhe esse artigo com mais pessoas interessadas.
Até a próxima!