
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:
- Um fulano qualquer entra em um blogger qualquer, o Google Testing Blog por exemplo.
- 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.
- Fulano clica em “Follow”, escolhe o ícone do OpenID.
- Fulano digita seu OpenID, que é simplesmente http://gaigalas.net (eu mesmo montei um servidorzinho!).
- Servidor do Blogger delega autenticação para o servidor do Gaigalas, que pede usuário e senha.
- 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).
- Servidor do Gaigalas redireciona de volta para o servidor do Blogger, com um “OK”.
- Blogger agora sabe que o misterioso visitante identificado por “http://gaigalas.net” é Alexandre Gaigalas, e está autenticado!

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
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.

Excelente seu post. Parabéns!