O que é OAuth?

OAuth é um protocolo usado para trocar informações de autorização, permitindo que vários serviços online interajam com a permissão do usuário. O "OAuth 1.0" foi publicado como RFC 5849 em abril de 2010, e o "OAuth 2.0" veio em seguida, como RFC 6749, em outubro de 2012.

Imagine que você queira publicar uma foto no Instagram e compartilhá-la automaticamente no Twitter. Acessar manualmente os dois serviços para fazer a mesma publicação pode ser trabalhoso. Para evitar isso, o Instagram oferece um recurso chamado publicação cruzada, que permite compartilhar automaticamente suas publicações do Instagram em outras redes sociais, como o Twitter, usando as APIs dessas plataformas. Esse processo é viabilizado pelo OAuth.

Para publicar no Twitter, a autenticação convencional exige um ID de usuário e uma senha, o que é conhecido como Autenticação Básica. No entanto, compartilhar essas credenciais confidenciais com outro serviço é arriscado. O OAuth resolve esse problema por meio da troca de informações de autorização, em vez de credenciais de autenticação, concedendo permissões limitadas para a tarefa.

Na terminologia do OAuth:

  • O serviço que recebe a autorização (por exemplo, o Instagram) é chamado de cliente OAuth.
  • O serviço que concede a autorização (por exemplo, o Twitter) é chamado de servidor OAuth.
  • O usuário é chamado de Proprietário do Recurso.

Para iniciar o processo, o cliente OAuth deve primeiro se registrar no servidor OAuth, fornecendo informações como o nome e o domínio do aplicativo. Se o servidor OAuth considerar o cliente confiável, ele atribuirá um ID de cliente.

Quando o usuário (Proprietário do Recurso) concede autorização, o cliente OAuth o redireciona para o servidor OAuth. O servidor OAuth autentica o usuário e pergunta se as permissões indicadas devem ser concedidas ao cliente OAuth. Após a aprovação do usuário, o servidor o redireciona de volta ao cliente OAuth e concede um Token de Acesso. Esse token serve como comprovante de autorização, permitindo que o cliente OAuth acesse a API do servidor OAuth. O token permanece válido até expirar ou ser explicitamente revogado.