Blog do Urubatan
msgbartop
Desenvolvedor, Arquiteto, Palestrante, Coordenador do RSJUG, Patinador e Blogger
msgbarbottom

27 Jun 07 Como ajudar a acabar com o montão!

Tudo bem, eu sei que este titulo não diz muita coisa, mas eu tenho muitos problemas com o montão!

Mas que montão? o montão de usuários e senhas que eu preciso para entrar em cada site/servidor/forum/…

Por exemplo, só para começar:

  1. Conta pessoa física em um banco
  2. Conta pessoa jurídica em outro
  3. GUJ
  4. login do meu notebook
  5. login da rede na empresa
  6. login de administração do blog
  7. login do google (Orkut, Gmail, Google Reader)
  8. Login e-mails @urubatan.com.br
  9. Login e-mails @techoffice.com.br
  10. Login e-mails @usiinformatica.com.br
  11. ubuntuforums.org
  12. java.net
  13. portaljava.com
  14. javafree.org
  15. login infoblogs
  16. digg
  17. hotwords.com.br
  18. flickr.com
  19. thinkfree.com
  20. del.icio.us
  21. VPS onde roda o blog
  22. theserverside.com

Fora outras senhas que eu esqueci até agora …

E como manda a boa pratica, a senha não é a mesma em todos estes lugares, e em alguns o nome do usuário não é o mesmo também.

Em alguns deles, eu preciso mudar de senha periodicamente, alguns deles tem politicas bem fortes de qualidade da senha, …

Ou seja, é muito ruim ter de lembrar todas estas senhas e nomes de usuários …

Imaginem se fosse possível ter uma identidade online que possibilitasse o login em todos os sites que vocês utilizassem …

Sim, eu sei, a microsoft criou o passport, o google tem o Google ID, …

Mas eu estou falando de uma forma de autenticação descentralizada, em que você não é obrigado a confiar em um terceiro caso você não queira, o site vai confiar em quem o usuário disser para ele confiar …

Uma forma de autenticação centrada no usuário, e não “no meu servidor” …

Onde o usuário possa dizer quais dados dele serão compartilhados com cada site.

Bom, eu não vou inventar um super ultra mega sistema de autenticação, isto já foi feito :D
E o nome disto é OpenID

O OpenID é um sistema de autenticação distribuido, onde qualquer site pode ser um servidor, ou um consumidor de autenticação …

O OpenID foca apenas na autenticação, e não na autorização, e existem bibliotecas ja implementando o protocolo para diversas linguagens, entre elas o Java (estou começando a utilizar o http://openid4java.org) , e para diversas outras linguagens, como o Ruby, C#, … para uma listagem destas bibliotecas de uma olhada nesta página

Uma boa visualização de como o sistema funciona pode ser vista neste diagrama …



A idéia básica deste post é: por favor, no próximo serviço que você disponibilizar via web, coloque suporte a autenticação via OpenID, se você não quiser escrever um server, para prestar serviço de autenticação para os seus usuários, pelo menos implemente um “cliente” OpenID, para que seus usuários não precisem decorar mais um usuário/senha …

Uma coisa a se lembrar é que um OpenID não é uma conta no seu sistema/site/…

Um OpenID é a mesma coisa que uma combinação usuário/senha que vocês ja estão acostumados hoje, mas com a diferença que o cliente diz quem vai validar aquele usuário e senha …

Como assim o cliente diz?

Fácil, o “usuário” do OpenID é uma URL, e esta URL vai retornar algo parecido com:

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS
xmlns:xrds="xri://$xrds"
xmlns:openid="http://openid.net/xmlns/1.0"
xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority="0">
<Type>http://openid.net/signon/1.0</Type>
<URI>http://localhost:8080/simple-openid/provider.jsp</URI>
</Service>
</XRD>
</xrds:XRDS>

E como vocês podem vem, dentro deste “XRDS” tem uma lista de servidores que podem validar a autenticidade do usuário, que esta lhe dizendo que é o “dono” dela …

Ou seja, esta URL te diz que para validar quem é o “dono dela”, você vai utilizar o servidor
localizado em: http://localhost:8080/simple-openid/provider.jsp

E caso você queira utilizar o seu blog como identidade “OpenID” basta colocar algo parecido com isto no cabeçalho …

<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://samruby.myopenid.com/" />

Onde o openid.delegate é o seu ID real para aquele servidor …

Tudo bem, estou quase convencido, mas por que eu iria utilizar isto?

Bom, alguns motivos são:

  • O Firefox 3 vai vir com suporte nativo a OpenID
  • A Microsoft diz que vai suportar OpenID também
  • Se você tem um blog no wordpress.com você ja esta usando
  • Se você tem um blog no livejournal.com também ja esta usando
  • Cada vez aparecem mais sites com suporte a OpenID por ai …
  • Se você tem um perfil no technorati também ja pode usar
  • A America Online esta adotando também

A implementação de um servidor é um tanto complexa pois você terá que implementar a segurança das senhas de seus usuários, mas implementar um cliente é bastante simples …

Não vou postar um exemplo agora, mas o que vocês acham da idéia de difundir a utilização de OpenID para autenticação?

Vocês acham interessante um post com um exemplo de cliente e servidor OpenId aqui no blog?

Querem mais detalhes sobre implementação e discovery?

Algum de vocês vai pelo menos pensar na possibilidade de adicionar suporte a OpenID no próximo super mega projeto para enriquecer usando a internet que vocês disponibilizarem?

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Tags: , , ,

Reader's Comments

  1. |

    Acho interessante explorar mais esse assunto. E que tal um exemplo em Java e outro em Ruby/Rails? Se eu tiver tempo (duvido que tenha até semana que vem, mas se você puder esperar mais) posso ajudar a elaborar algum. Aliás, por que não um exemplo em cada linguagem tipo aqueles code contests?

    E, sim, pretendo alterar um projeto meu para usar OpenID e implementar o próximo (para o mesmo cliente) usando isso.

    Abs.

    Reply to this comment
  2. |

    Só faltou dar a dica do site: https://www.myopenid.com/, que fornece um servidor openid-compatible, p/ vc criar sua identidade lá.

    Reply to this comment
  3. |

    na verdade tem uma lista bem grande de servidores gratuitos no http://openid.net
    o wordpress e livejournal são servidores também
    o technorati …

    mas valeu a dica, eu tinha esquecido deste :D e só para constar, openid.org também é um servidor gratuito de identificação utilizando o OpenID :D

    Reply to this comment
  4. |

    A idéia é boa…

    Eu mesmo estava pensando em fazer algum programa… pra salvar todas as minhas senhas… e poder coloca-las em algum lugar na internet…

    ou então ficar carregando elas num txt pelo pendriver…

    mas nem sei como faço…

    Eu estaria sendo chato se ti pedir pra falar mais sobre o assunto e sobre como usar?

    Isso seria muito útil pra mim… e com certeza pra muita gente…

    Parabens pelo blog.

    Eu entrei aqui ontem pela primeira vez… e, pela segunda vez… resolvi testar os feeds…
    ai adicionei por acaso o seu blog…

    e volto hj… e vc fala de um assunto que eu estava pensando em como resolver a umas 2 semanas…

    Parabéns pelo blog… e agora ele num sai mais do meu feeds :D
    Se puder falar mais sobre o assunto… eu… e mais um tanto de gente… ficaria feliz viu :D
    Brigadão Amigo,

    Um Abraço

    T+

    Reply to this comment
  5. |

    Legal o OpenID Urubatan, já tinha ouvido falar mas não dei muita atenção na época e acabei usando outro serviço, da uma olhada aqui.

    Reply to this comment
  6. |

    Jeveaux, faltou o link :D

    Reply to this comment
  7. |

    Aff, que furada hehehe, coloquei a tag e esqueci o link, mas segue ae http://www.jeveaux.com/blog/?p=28

    Reply to this comment
  8. |

    bom, o clipperz é legal, mas não é uma identidade única, é um gerenciador de senhas integrado com o browser (parecido com o que ja existe no Firefox e no Internet Explorer de fabrica, só um pouquinho mais inteligente e baseado em Javascript).
    A idéia básica do OpenID é uma identidade única e focada no usuário …
    Se o usuário quiser ele pode utilizar um autenticador do OpenID com suporte a impressões digitais por exemplo, assim ele vai usar o polegar para se logar em todo e qualquer site que ele queira :D
    O Clipperz não ajuda a acabar com o montão, ajuda só a gerenciar o montão :D

    Reply to this comment

Leave a Comment