OAuth | O que e por que (1 de 2)

Lilian Lima
Devs JavaGirl
Published in
3 min readJul 11, 2019

OAuth é um padrão aberto para delegação de acesso (identificação, autenticação e autorização) às APIs (Application Programmming Interface). Hein?!?

Muitos carros de luxo hoje vêm com uma chave de manobrista. É uma chave especial que você dá ao atendente de estacionamento e, diferentemente da sua chave normal, essa não permitirá que o carro percorra um caminho muito longo. Algumas chaves de manobrista não abrem o porta-malas, por exemplo. Independentemente das restrições que a chave de valet impõe, a ideia é muito inteligente. Você dá a alguém acesso limitado ao seu carro com uma chave especial, enquanto você tem sua chave normal para desbloquear tudo.†

Com o aumento exponencial da utilização de redes sociais, como Facebook e Twitter, tornou-se muito comum a integração de aplicativos e sistemas com estas novas plataformas de mídias sociais para delegação de acesso, isto é, ao invés de ter que criar uma nova conta específica nesse serviço, você passa a acessá-lo através de sua conta existente nessas mídias sociais, por exemplo, eu realizo minha autenticação no Evernote através da minha conta no Google:

Além de poupar a memorização de mais uma conta e senha (levante a mão quem nunca replicou a mesma senha entre diferentes serviços só pra não correr o risco de esquecê-la em seguida? \o/) você evita expor suas credenciais a mais pessoas que terão total acesso a elas e poderão fazer o que quiserem — o que quiserem mesmo — inclusive alterar sua senha e bloqueá-la. 😦

Identidade única, liberação de acesso infinita

Este é o problema que o OAuth se propõe resolver: você como usuário concede acesso às suas informações sigilosas, armazenadas num provedor de serviços, a outros sites consumidores.

Em outras palavras, o usuário tem o direito de se autenticar em sites e aplicativos de forma segura e integrada, mas controlando detalhadamente as permissões que ele deseja que o site possua em relação aos seus dados. É assim que funciona esse padrão, isto é, fornecemos nossas credenciais de acesso ao provedor de serviços / autenticador (Facebook, Twitter, Google, etc) e, caso essas credenciais sejam válidas, somos redirecionados para uma tela que permite ao mesmo validar quais tipos de informação ele deseja compartilhar com o site ou aplicativo que ele está acessando. Logo após estas permissões serem concedidas, o acesso é feito a partir de um token fornecido pelo autenticador, que pode ser o Facebook, Twitter ou qualquer outro serviço que disponibilize uma API que permita autenticações neste padrão.

Mas, se na definição inicial falamos que OAuth é um padrão aberto o que seria o inverso disso?

O inverso direto de aberto seria fechado, correto? Mas, nesse caso essa associação direta leva a uma definição inadequada, aqui a palavra “proprietária” cabe melhor.

OAuth começou por volta de novembro de 2006, enquanto Blaine Cook estava trabalhando na implementação do Twitter OpenID. Ele entrou em contato com Chris Messina procurando uma maneira de usar o OpenID junto com a API do Twitter para delegar autenticação. Eles se encontraram com David Recordon, Larry Halff e outros em uma reunião do CitizenSpace OpenID para discutir soluções existentes. Larry estava procurando integrar o OpenID para o Ma.gnolia Dashboard Widgets. Depois de analisar a funcionalidade existente do OpenID, bem como outras práticas do setor, chegaram à conclusão de que não havia nenhum padrão aberto para a delegação de acesso à API.

Esse padrão é a combinação de padronização + inteligência + experiências de muitos protocolos bem estabelecidos, ele é semelhante a outros protocolos como Google AuthSub, OpenAuth da AOL, Yahoo BBAuth, API do Google Maps, API do Flickr, API do Amazon Web Services, etc. Cada um deles fornece um método proprietário para troca de credenciais de usuário por um token ou ticket de acesso. O OAuth foi criado estudando cuidadosamente cada um deles e extraindo as melhores práticas e aspectos comuns que permitiriam novas implementações, bem como uma transição suave para que os serviços existentes suportassem OAuth.

Dado que O que e Por que foram detalhados acima, vamos para o próximo nível.

Referências:

https://oauth.net/about/introduction

https://medium.com/trainingcenter/entendendo-o-padr%C3%A3o-oauth-2-0-e0d0cfa0b53

Originally published at http://deviniciative.wordpress.com on July 11, 2019.

--

--

Lilian Lima
Devs JavaGirl

{“ocupação”: “software engineer”, “idioma computacional”: “java”, “um hobby”:” escrever”,” um valor”:” justiça social”, “um amor”: “minha família 💙”}