Protocolos concorrentes ao OAuth – LuizTools
Protocolos concorrentes ao OAuth
Escrito por Luiz Duarte em 15/03/2017
Uma vez que não existia antes do OAuth um protocolo aberto que pudesse ser adotado como padrão pelos provedores de serviços, foram criados diversos protocolos proprietários, todos muito semelhantes, mas mantidos por empresas e com funcionalidades diferentes, de acordo com as necessidades de seus criadores. Todos são excelentes sistemas de delegação de acesso, mas fazem com que o desenvolvedor que queira trabalhar com mais de um deles tenha de ler diversas especificações e desenvolver mais de um cliente de delegação de acesso.
A seguir serão apresentados três dos maiores sistemas de delegação de acesso que existem ou já existiram, mantidos por três gigantes dos serviços online: OpenAuth, da America OnLine (AOL); AuthSub do Google e Browser-Based Authentication (BBAuth) do Yahoo!. A rápida apresentação destes protocolos proprietários fará com que se torne mais claro o quão seguro, confiável e extensível é o padrão proposto pelo protocolo OAuth, que já foi comentado em outros posts. Ainda que muitos tenham desconfiança quanto à segurança que um padrão aberto pode proporcionar, existem empresas, como o Google e o Twitter, que apesar de que tiveram seus próprios sistemas de delegação e acesso no passado, adotaram o protocolo OAuth também, como uma alternativa open-source para delegar acesso aos seus recursos. Isto deve ser o bastante para criar uma visão mais clara do quão seguro e eficiente o protocolo é.
Segundo OpenAuth (2009), a API de autenticação aberta da AOL (OpenAuth) permite que websites e aplicações de terceiros autentiquem seus usuários nos serviços AOL e AIM através de seus sites/aplicações. Para utilizar os recursos do OpenAuth, é exigido um cadastro prévio por parte do desenvolvedor, para que possa obter um Developer ID que concederá acesso ao sistema de delegação de acesso.
Aplicações devidamente cadastradas utilizam seu Developer ID para chamarem a página de autenticação segura da AOL e obter um authentication token. Com este token, eles podem solicitar consentimento do usuário para acessar seus recursos protegidos nas aplicações e serviços AOL/AIM.
A figura 2 mostra basicamente como funciona o fluxo de requisições para autenticação e consumação de recursos usando AOL OpenAuth, desde a solicitação de login (1, 2 e 3), obtenção do authentication token (4), solicitação de consentimento para acessar a lista de amigos do AIM (5, 6, 7, 8 e 9) e finalizando com a permissão ou negação de acesso por parte do usuário:
Aplicações web que desejem acessar serviços protegidos por um usuário do Google ou hospedado numa conta do Google App podem fazê-lo usando o Serviço de Proxy de Autorização (AUTHSUB). Para manter um alto nível de segurança, a interface proxy, chamada AuthSub, permite à aplicação web obter acesso sem conhecer as informações de login do usuário, mantendo o sigilo do mesmo.
O AuhSub permite que os desenvolvedores utilizem tokens seguros e não-seguros. Para utilizar tokens seguros, o desenvolvedor precisa se cadastrar previamente e possuir um certificado. Após o registro, o desenvolvedor poderá tornar todas suas requisições seguras por meio de assinaturas digitais. Desta forma, o Google garante a confiabilidade de aplicações de terceiros sobre os recursos de seus usuários.
A figura 3 mostra resumidamente como funciona o fluxo de requisições para delegação de acesso utilizando AuthSub, desde a requisição de um token (1), solicitação do Google para que o usuário conceda acesso ou não (2 e 3), entrega do token à aplicação (4) e por fim, uso do token para acessar os recursos protegidos do usuário (5 e 6):
Visando atender à demanda de aplicações e websites desejando integrar-se aos serviços do Yahoo!, a empresa californiana de serviços de Internet desenvolveu a Browser-Based Authentication (Yahoo! BBAuth). Este seguro sistema de delegação de acesso tornou possível às aplicações de terceiros consumirem serviços e recursos sob nome de usuários devidamente cadastrados no Yahoo! (BBAUTH, 2009).
Não obstante, o próprio Yahoo! mantém um rígido cadastro de aplicações que desejam utilizar seus recursos, priorizando a segurança de seus usuários. Este cadastro inclui muito mais do que simples informações de contato e URLs da aplicação: o cadastro exige que sejam especificados quais serviços serão acessados, o escopo de acesso necessário, a descrição do que sua aplicação faz, entre outros dados.
A primeira vez que um usuário visita o website consumidor e ele deseja acessar recursos e serviços dentro do domínio do Yahoo!, o usuário é redirecionado para uma URL do Yahoo! especialmente desenvolvida para uma autenticação segura e para que o usuário conceda permissões à aplicação (ou não). Todo este processo é feito dentro do site do Yahoo!, para que a aplicação consumidora somente tenha acesso aos recursos e serviços sob nome do usuário se o mesmo assim desejar. Durante este processo de autenticação do usuário, o Yahoo! lhe apresentará um Termo de Serviço e os recursos que a aplicação deseja acessar.
A Figura 4 exemplifica de forma resumida o fluxo de requisições para que uma aplicação consumidora obtenha acesso a recursos protegidos sob nome de um usuário do Yahoo!. Mesmo aparentando ser mais simples do que os protocolos anteriormente apresentados, o BBAuth também segue os mais altos padrões de segurança, propiciando uma delegação de acesso confiável e segura para ambas as partes.
Devido a um esforço para padronização, o Yahoo abriu mão de seu BBAuth para uso de OAuth, OpenID e um híbrido entre os dois, conforme dito na documentação oficial.
Analisando atentamente os três protocolos citados anteriormente, é possível notar muitas semelhanças no seu modus operandi, o que é natural considerando que o objetivo dos três é o mesmo. O estudo superficial do funcionamento destes protocolos é importante para o entendimento do quão seguro é a proposta do OAuth, que já foi largamente discutido em outros posts.
AUTHSUB, Google Authsub. Disponível em: <http://code.google.com/intl/pt-BR/apis/accounts/docs/AuthSub.html>. Acesso em 01 nov. 2009.
BBAUTH. Yahoo! BBAuth. Disponível em: <http://developer.yahoo.com/auth/>. Acesso em 01 nov. 2009.
OPENAUTH. AOL OpenAuth. Disponível em: <http://dev.aol.com/api/openauth>. Acesso em: 01 nov. 2009.
Luiz Fernando Duarte Junior é graduado em Ciência da Computação com pós-graduação na área de Computação Móvel. Professor do ensino superior, gerente de projetos, empreendedor e palestrante, é tradutor e autor de livros sobre desenvolvimento e gerência de projetos, disponíveis na seção Meus Livros.