Alexandre.Gaigalas.Net

Desenvolvedor, autor e projetista de interfaces.

OpenID e Oauth: Autenticação e Autorização Descentralizada

Chaves: zaz, zaz

Chaves: zaz, zaz

OpenID é o tipo de coisa que você lê, pensa “poxa que legal”, fecha o artigo e nunca mais abre na vida. Orientação a Objetos era assim algumas décadas atrás: Todo mundo falava sobre, mas raramente alguém sabia do que estava falando, e quem lia não tinha a mínima idéia da utilidade daquilo.

Pra quem nunca leu, a idéia é simples:

  • Seu login e senha fica em um só servidor (login+senha fica mais bonito se chamarmos de credencial).
  • O servidor não precisa saber o que você pode ou não acessar (autorização), ele só precisa saber quem você é (autenticação).
  • Qualquer um pode montar um servidor.

O que naturalmente, em 99,78% dos casos, leva as seguintes perguntas:

  • Se qualquer um pode ter um servidor, como é a segurança disso?
  • Bacana, mas quem usa isso?

A segurança não é um problema, realmente. Se você criar um servidor e montar um usuário “admin” com uma senha qualquer, isso não significa que você poderá acessar o usuário “admin” de outro site. Um servidor pode autenticar somente credenciais que ele gerencia. Um exemplo simples e real:

  1. Um fulano qualquer entra em um blogger qualquer, o Google Testing Blog por exemplo.
  2. Fulano acha o conteúdo bastante interessante! Lá no canto ele vê um “Followers” e como é um cara bem-informado, sabe que o Google Friend Connect usa, entre outros provedores de autenticação, OpenID.
  3. Fulano clica em “Follow”, escolhe o ícone do OpenID.
  4. Fulano digita seu OpenID, que é simplesmente http://gaigalas.net (eu mesmo montei um servidorzinho!).
  5. Servidor do Blogger delega autenticação para o servidor do Gaigalas, que pede usuário e senha.
  6. Fulano digita seu usuário e senha (ou não, se já tiver feito isso e estiver salvo na sessão. Igual o “Lembrar de mim” do GMail).
  7. Servidor do Gaigalas redireciona de volta para o servidor do Blogger, com um “OK”.
  8. Blogger agora sabe que o misterioso visitante identificado por “http://gaigalas.net” é Alexandre Gaigalas, e está autenticado!
Autenticação via OpenID no Blogger

Autenticação via OpenID no Blogger

O Blogger não precisou perguntar pro servidor do Gaigalas quais as permissões de acesso do visitante misterioso. Ele assume, deduz, determina isso da maneira que bem entender. O importante é ele saber que aquele vistante é o Alexandre Gaigalas, identificado por “http://gaigalas.net”, e sempre que alguém identificar-se da mesma forma no futuro, esse alguém será o mesmo Alexandre.

Coisas bacanas:

  • A opção “Lembrar de mim” funciona globalmente. Você loga só uma vez pro primeiro serviço, depois apenas utiliza a mesma sessão para os demais
  • Se você mudar sua senha, pode mudar em todos os serviços ao mesmo tempo
  • Você pode ter várias credenciais, da mesma forma que uma autenticação normal

Pra quem se interessou, pode obter um OpenID de várias formas: Uma Google Account ou Windows Live ID por exemplo são também OpenIDs. É possível montar seu próprio servidor usando o phpMyID.

Mas, e o OAuth?

Se o OpenID era autenticação (quem entra) o OAuth é autorização (onde entra). Cenário simples denovo:

  • Fulano entra na enquete do novo filme do Michael Jackson
  • Fulano escolhe as músicas e clica em “Save” para salvar suas escolhas
  • Site do Michael Jackson conectará ao Twitter no qual o usuário se autenticará (que pode ser com OpenID, vide acima!)
  • Twitter, após autenticar o usuário como Alexandre, pergunta se deseja que o site do Michael Jackson ganhe permissão para acessar o Twitter do usuário
  • Alexandre aceita
  • Twitter redireciona para o site do Michael Jackson com um “OK” e chaves de autorização
  • Site do Michael Jackson agora está livre para utilizar o Twitter em nome de Alexandre
Enquete do Michael Jackson Solicitando Autorização via OAuth

Enquete do Michael Jackson Solicitando Autorização via OAuth

Bacana não? O Twitter é um dos pioneiros em OAuth na internet, e milhares de aplicações no mundo já utilizam o padrão.

OpenID tem bastantes provedores, mas poucos consumidores. É raro encontrar um site que aceite OpenID. Facebook, por exemplo, é um deles.

1 Comment to OpenID e Oauth: Autenticação e Autorização Descentralizada

  1. 02/05/2010 at 12:13 | Permalink

    Excelente seu post. Parabéns!

Comentar

Você pode usar os seguintes HTML atributos e tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>