OAuth 2: Gerenciamento de acessos para clientes de APIs — part 1

Antes era comum solicitar que usuários compartilhassem seus logins e senhas de sites como o Facebook com aplicativos clientes, uma solicitação simples que escondia muitos riscos inadmissíveis. OAuth chegou e trouxe um modelo de autenticação com menos privilégios, que permite que o usuário conceda acesso controlado a seus dados.

O que é OAuth?

OAuth é um padrão web para a autenticação de acesso a aplicativos, sistemas, sites, etc. Ele foi projetado de forma que os usuários possam conceder acesso restrito a recursos próprios — como dados pessoais, lista de contatos, fotos, etc que residem em algum site, por exemplo, Facebook, Twitter ou Google — para um aplicativo terceiro, por exemplo, um aplicativo que você fará login com o Facebook e o mesmo terá acesso ao seu email, foto de perfil e lista de contatos.

Qual a importância dele?

Ele é importante porque coloca o gerenciamento nas mãos do verdadeiro proprietário do recurso, o usuário! O mesmo faz a conexão entre suas contas em diferentes serviços web sem complicações e sem o envolvimento direto dos administradores de segurança de cada um dos respectivos sites. Esse relacionamento pode ser duradouro ou encerrado a qualquer momento pelo usuário.

A autenticação por meio do OAuth consiste de três passos

Como fica a segurança?

A segurança desse padrão é mais uma questão cultural do que alguma falha. O usuário não pode simplesmente sair por aí “logando” em qualquer site ou aplicativo e fornecer seus dados para um desconhecido. O problema é que muitas vezes ele não se dá conta que está dando acesso a aplicação cliente, mesmo sem informar a senha. Ele deve dar autorização apenas às aplicações que ele confia, pois com essa autorização, uma aplicação mal intencionada pode fazer muitos estragos, por exemplo, postar conteúdo em seu nome. Isso é comum em redes sociais como o Facebook. É importante lembrar que o usuário pode revogar a autorização de qualquer aplicação que não é mais utilizada ou de origem duvidosa.

Algumas vantagens em utilizar OAuth

  • Flexibilidade
  • Independente de implementação
  • Deployment diverso (público, privado e corporativo)
  • Interoperabilidade (web, mobile , desktop)
  • Utilizar serviços que o usuário confia
  • Pode-se trocar de implementação facilmente

Como utilizar em um Sistema, site, blog ou aplicativo ?

1. Cadastre seu aplicativo

https://developers.facebook.com/

https://dev.twitter.com/

https://developers.google.com

2. Utilize uma lib, framework ou desenvolva seu script

http://oauth.net/2/

https://github.com/fkooman/php-oauth-client

https://github.com/ivan-novakov/php-openid-connect-client

https://github.com/ssx/oauth-facebook-examples

http://www.phpclasses.org/package/7700-PHP-Authorize-and-access-APIs-using-OAuth.html

No próximo artigo da série, preparei alguns scripts em PHP e JavaScript para a demostrar na prática como utilizar o padrão OAuth. :D

Referências

http://hueniverse.com/oauth/guide/

http://hueniverse.com/2007/10/04/beginners-guide-to-oauth-part-i-overview/

http://www.slideshare.net/gigantedesousa/quemtemmedoo-auth

http://www.slideshare.net/GuilhermeHenriqueOliveira/coderockrjam-entendendo-oauth-com-zend

http://goo.gl/6YW6md

http://goo.gl/aUD5xh


Originally published at www.fabioassuncao.com.br on December 11, 2014.

Show your support

Clapping shows how much you appreciated Fábio Assunção’s story.