Hace unos días anunciamos que soitu.es te daba la opción de autenticarte utilizando OpenID. En este artículo te contamos los pasos que hemos seguido para su implantación en nuestra Web. También te puede servir como guía si estás pensando en implantar OpenID en tu Web en un futuro.
Nuestro punto de partida es una Web [soitu.es] en producción con un sistema de registro y autenticación de usuarios ya existente. Los pasos a seguir serían prácticamente los mismos si se parte de un desarrollo desde cero, ya que implantar un sistema de autenticación OpenID no es muy intrusivo con el código existente. Por supuesto, esto dependerá de cómo esté desarrollada cada Web :).
El primer paso consiste en adaptar la base de datos de usuarios. Se parte de una tabla de usuarios en la que cada usuario cuenta con un identificador único (clave primaria). Es necesario crear una nueva tabla que asocie a cada usuario con sus posibles identificadores OpenID, creando una relación de uno a muchos entre la tabla de usuarios y esta nueva tabla. Su clave primaria será el identificador OpenID puesto que, obviamente, este identificador debe ser único, ya que no podrá haber dos usuarios que compartan identificador OpenID.
Actualmente existen multitud de librerías que dan soporte OpenID tanto de consumer (cliente) como de provider (servidor). Nuestra parte de gestión de usuarios está desarrollada en Perl, así pues, la elección lógica era el módulo Net::OpenID::Consumer disponible en el repositorio de CPAN (de momento, no entra en nuestros planes ofrecer servicios de proveedor OpenID).
A día de hoy, la versión estable de este módulo sólo soporta la especificación 1.1 de OpenID Authentication, lo cual limita el acceso a varios proveedores de OpenID. Entre ellos, se encuentra Yahoo, que ha pasado directamente a soportar la especificación 2.0, ignorando la versión 1.1.
Afortunadamente, el equipo que mantiene este módulo lleva tiempo desarrollando una nueva versión del mismo que sí soporta la especificación 2.0. Decidimos instalar esta versión -no sin algo de miedo ;)- y tras una serie de pruebas comprobamos que su funcionamiento era bastante correcto. No obstante, no deja de ser una versión beta, así que, si notáis cualquier error o funcionamiento extraño, os agradeceremos todos los comentarios que nos hagáis llegar.
Con el módulo ya instalado, necesitamos construir nuestra propia librería para implementar las siguientes acciones:
Una vez implementadas las acciones del punto anterior, es necesario desarrollar el CGI que interactuará con el navegador del usuario. El objetivo de este CGI es proporcionar un interfaz de autenticación OpenID de forma desacoplada de la autenticación tradicional, para evitar confundir a los usuarios. Realiza dos funciones:
Necesitamos adaptar tres páginas para implantar OpenID:
Ciertos proveedores de OpenID tratan de comprobar la legitimidad de la Web que les solicita la autenticación (en este caso, soitu.es) utilizando el protocolo Yadis. Mediante este protocolo comprueban los servicios de identificación que proporciona la Web origen para avisar al usuario sobre su legitimidad. En soitu.es tuvimos que modificar nuestros servidores Web para que insertaran en todas las peticiones la siguiente cabecera:
X-XRDS-Location: http://www.soitu.es/openid/yadis.xrdf
El contenido del fichero yadis.xrdf define los servicios de autenticación que proporciona la Web y las especificaciones que siguen:
<?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://specs.openid.net/auth/2.0/return_to</Type>
<URI>http://www.soitu.es/userauth/openidauth.pl</URI>
</Service>
<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/return_to</Type>
<URI>https://seguro.soitu.es/userauth/openidauth.pl</URI>
</Service>
</XRD>
</xrds:XRDS>
Y... ¡eso es todo! Como ya comentamos anteriormente seguimos investigando temas como OAuth para el intercambio de datos con otras Webs, pero eso es otra guerra. Cada cosa a su tiempo.
Si quieres firmar tus comentarios, regístrate o inicia sesión »
En este espacio aparecerán los comentarios a los que hagas referencia. Por ejemplo, si escribes "comentario nº 3" en la caja de la izquierda, podrás ver el contenido de ese comentario aquí. Así te aseguras de que tu referencia es la correcta. No se permite código HTML en los comentarios.
Soitu.es se despide 22 meses después de iniciar su andadura en la Red. Con tristeza pero con mucha gratitud a todos vosotros.
Fuimos a EEUU a probar su tren. Aquí están las conclusiones. Mal, mal...
Algunos países ven esta práctica más cerca del soborno.
A la 'excelencia general' entre los medios grandes en lengua no inglesa.
Para bien o para mal, el iPad se ha convertido en un habitual en muchas conversaciones. Ya sea para romper el hielo antes de una reunión o con el café en una comida familiar: defensores y detractores del aparato de Apple salen por doquier. ¿Es para tanto? ¿Vale la pena hacerse con uno? ¿No hace lo mismo que un ordenador?
En: E-Campany@
Recomendación: Albert Medrán
La Administración de Obama sigue dando ejemplo de apertura tecnológica al resto de los gobiernos del mundo: si una de sus banderas es la apertura de datos, ahora te toca al código fuente de módulos de Drupal Traducir »
En: radar.oreilly.com
Recomendación: Raúl Rivero
En la BBC han hecho un gráfico impresionante sobre la evolución de Internet entre 1998 y 2008. Visto en elblogsalmon.com Traducir »
En: bbc.co.uk
Recomendación: mami
Lo sentimos, no puedes comentar esta noticia si no eres un usuario registrado y has iniciado sesión.
Si quieres, puedes registrarte o, si ya lo estás, iniciar sesión ahora.