The idea it was named after

Tuesday, April 11, 2006

OpenID, y no te registres nunca más

O al menos ese es el objetivo. OpenID es un sistema de identidad descentralizado pensado específicamente para la web. De hecho, una identidad openid es simplemente una URL, y puedes tener tantas identidades como URLs. De lo único que se encarga el protoco es de proveer una forma de demostrar que tu eres el propietario de cierta URL.

¿Cómo funciona?



Existen dos tipos de software en este contexto: el consumidor openid, y el servidor de identidades. Primero hay que registrarse en un servidor, y luego puedes usar tu URL de usuario en los sitios que lo soporten. El método de autenticación en uno de esos sitios suele pasar las siguientes etapas:


  1. El usuario escribe su identidad URL en un formulario de la aplicación web
  2. La aplicación web comprueba que esa URL es una identidad (o un alias) openid, y si es así negocia un contraseña con el servidor openid.
  3. Si el usuario no está autenticado en el servidor openid, aparece una página https del mismo servidor para que escriba su contraseña.
  4. De nuevo por https y en la página del servidor, si es la primera vez que el usuario intenta usar su identidad en la aplicación web del principio, el servidor le pregunta si realmente quiere permitir el uso de su identidad en ese servidor.
  5. El servidor redirige a la aplicación web intercambiando la contraseña de paso de un sólo uso previamente negociada, y le confirma o deja de confirmar la identidad del usuario. Normalmente en este paso el usuario ve en la aplicación que ya está autenticado con su URL.


En general, el paso 3 no ocurre si el usuario ya está logeado en el servidor openid, y el 4 sólo tiene lugar si es la primera vez que usa su URL en cada aplicación web.

Otra característica del protocolo openid es que, como ya he mencionado por encima, permite el uso de aliases. Basta con añadir dos etiquetas HTML meta en la cabecera de una página web para especificar el servidor openid y la identidad URL. De esta manera se puede ir cambiando de servidor openid y continuar usando siempre la misma identidad URL.

Compartiendo perfiles



Openid sólo se encarga de garantizar la identidad de un usuario, pero nada más. El protocolo en sí no brinda ningún otro tipo de información acerca del usuario que podría resultar importante: Nombre, nick, dirección email.. La idea subyacente es usar tecnologías ya existentes para este paso, como vCards (usado en Jabber), FOAF u otros.

Estado del arte



Todos los frentes están abiertos: servidores de identidades, librerías que implementan openid en distintos lenguajes, plugins para aplicaciones web y páginas web que ya usan openid. Existen varios servidores públicos en funcionamiento, como myopenid.com o videntity.org, que además ofrece vCards y FOAF (Lista de servidores openid). En openidenabled.com tienen una gran cantidad de recursos tanto a nivel de librerías, que viene a ser la misma pero para distintos lenguajes (PHP, Python, Perk, Ruby, C#) como en plugins para muchas aplicaciones web: Pyblosxom, Plone, Apache HTTP Server OpenID Access Control, MoinMoin, Mailman, MediaWiki y Drupal.

Además de todo esto, existe un número creciente de sitios web que soportan openid. Algunos son servidor y consumidor de URLs openid, como Journals.jevon.org LiveJorunal (de Yahoo!)y sus hijos derivados o Journals.jevon.org que te ofrecen identidad y un weblog gratuitamente. zooomr.com, la competencia libre del hospedaje de flickr, también usa este nuevo sistema de autenticación. Igualmente, en LifeWiki.net te ofrecen identidad y un wiki que lo soporta, etc..

Mi contribución



Estoy tan harto como vosotros de tenerme que registrar continuamente una y otra vez en distintas páginas web, cada una con sus distintos y draconianos métodos para verificar tu identidad. Por eso esta especificación libre y abierta me parece una buena idea por la que vale la pena esforzarme en que se implante a lo largo y ancho de la red.

Por eso he desarrollado, basado en el código de ejemplo de la librería PHP-OpenID 1.0.0, un plugin para Wordpress, el motor de weblogs por excelencia. A diferencia de algún otro plugin que se había desarrollado para WP, el que yo he escrito (y que aun está en fase beta) es más sencillo y seguro porque no necesita modificar ningún script de WP ni tocar la estructura de la base de datos. Para usarlo sólo has de instalar la librería PHP-OpenID mediante Pear (o extraerla en wp-content/plugins) y activarlo.

Además openid me parece una manera ideal de integrar distintas aplicaciones web, y con esa idea en mente he habilitado un sistema de cookies/sesiones en mi plugin. Ahora estoy modificando el parche de openid para mediawiki ya disponible de manera que al instalar wordpress y mediawiki en el mismo sitio web, al logear con openid en mediawiki se autentifique automáticamente en wordpress (y viceversa), pasando lo mismo al cerrar sesión. Si tengo tiempo y ganas, luego buscaré implementar openid en algún sistema de foros y quizás en menéame, siempre usando este sistema de autenticación unificado que trae ventajas evidentes, inherentes a las ventajas de openid. Parezco un comercial y por eso termino ya, pero lo mejor es que lo comprobéis vosotros mismos.

4 Comments:

Post a Comment

<< Home