Back-End

26 nov, 2012

OAuth sem dor com PHP – PHP OAuth API – Parte 01

Publicidade

Package: PHP OAuth API

OAuth é um protocolo muito usado para acessar APIs de determinados sites em nome dos usuários desses sites.

Apesar de o OAuth ser relativamente fácil de explicar, não é fácil implementá-lo sem lidar com as dores de cabeça das múltiplas configurações do protocolo, as diferentes versões de protocolos, os detalhes de implementações específicas do site, e o pior de tudo: ter de saber mais do que gostaria sobre os detalhes do protocolo.

Leia este artigo para aprender como usar a classe PHP para API OAuth para acessar qualquer API de qualquer site que suporte qualquer versão do OAuth, sem ter qualquer dessas dores de cabeça.

Nesta primeira parte, vamos entender por que o protocolo OAuth é necessário e como ele funciona. Também veremos as implementações de consumo do PHP OAuth.

Na segunda parte, que será publicada na próxima semana, vamos colocar a mão na massa e ver na prática como utilizar a classe PHP OAuth.

Por que o protocolo OAuth é necessário?

Se você já estiver familiarizado com o protocolo OAuth ou você não se importa muito com a existência dele, pule para a seção abaixo chamada “Usando a classe PHP para API OAuth na prática” .

Considere um usuário que está registrado em um site.Vamos chamá-lo de servidor. Pense no Twitter como um exemplo de um servidor.

O usuário pode fazer muitas coisas nas páginas do site consumidor diretamente, como, por exemplo, postar novas mensagens de status no Twitter. Alternativamente, muitas dessas coisas podem ser feitas acessando a API do Twitter a partir de programas em execução em outros sites. Vamos chamar os outros sites de consumidores ou sites clientes.

Os programas que acessam o site do Twitter a partir de sites consumidores podem publicar novas mensagens de status do Twitter em nome do usuário, como se fosse o usuário inserindo-as no site do Twitter.

O problema original dessa solução é que o usuário teria que fornecer seu login e sua senha para os sites consumidores para que eles pudessem acessar as APIs dos servidores em seu nome.

Esse é um problema de segurança, pois permite que eventuais abusos de pessoas aconteçam por trás de sites consumidores. Não só eles podem executar ações com as contas de usuários que não tinha a intenção de permitir, mas os nomes de usuário e as senhas podem ser usados para abusar de outros sites em que os usuários possuem contas com as mesmas senhas.

Como funciona o protocolo OAuth?

OAuth é um protocolo que foi criado para evitar os problemas mencionados acima. Ele permite que um site consumidor acesse informações ou execute ações em um site provedor com a conta do usuário, mas o usuário não precisa fornecer a senha da conta para o site consumidor.

Quando um site consumidor quer acessar a conta de usuário de um site provedor, ao utilizar o protocolo OAuth, o usuário é redirecionado para uma página no site provedor no qual é pedido que ele conceda certas permissões de acesso de conta para o site consumidor.

Em seguida, o usuário é redirecionado para o site consumidor de tal forma que ele pode obter um token especial para acessar a API do site provedor com as permissões que o usuário concedeu.

Se você não está familiarizado com os detalhes do OAuth, deixa eu te dizer que essa explicação do protocolo é uma simplificação exagerada. Essa classe foi criada para lidar com todas as complicações do protocolo, de forma que você não precise aprendê-la e compreendê-la para acessar as APIs do site provedor. Então, isso é tudo que você precisa saber sobre como o protocolo funciona.

Implementações de consumo do PHP OAuth

Infelizmente, a maioria das soluções de consumo do PHP OAuth existentes é muito mais complicada do que deveria ser.

Por exemplo, a extensão PECL OAuth é muito completa em termos da funcionalidade que é necessária para construir o OAuth baseado em sites consumidores ou provedores. No entanto, usá-la é como ter todas as peças de um grande quebra-cabeça e adivinhar como cada peça deve ser montada para resolvê-lo por inteiro.

Existem várias versões incompatíveis do protocolo OAuth. Sem saber como cada versão do protocolo funciona, você não vai nem conseguir começar com PECL Oauth.

Você não precisa apenas saber como funciona o protocolo OAuth, mas também conhecer as diferentes etapas de cada uma das versões do protocolo OAuth, que parâmetros você precisa passar para a extensão deste para calcular os bits de informação necessários usados no protocolo, assim como quando e onde você precisa redirecionar o usuário entre o consumidor e o site provedor.

Se você já passou por essa dor de cabeça, sabe que é um desafio para a paciência de qualquer desenvolvedor.

Eu não quero acabar com o esforço dos desenvolvedores da extensão PECL OAuth. Como eu disse, ela é muito completa em termos de funcionalidade básica. Mas, em termos de usabilidade para o desenvolvedor que não conhece o protocolo OAuth em detalhes, nem é interessante saber mais do que o suficiente sobre isso. Essa extensão poderia ter fornecido uma maneira mais simples de uso. O mesmo vale para as bibliotecas OAuth por aí, em PHP ou em outras linguagens.

***

Texto original disponível em http://www.phpclasses.org/blog/package/7700/post/1-Painless-OAuth-with-PHP.html