Instalar OpenID en tu site.
Como ya, por fin, se empieza a ver en más sitos de Internet la opción de logearse usando OpenID, decidí adaptar mi site …YSLL! para que fuese un proveedor de dicho sistema y poder usarlo a partir de ahora. Bueno, un proveedor único, ya que solo acepta una cuenta; la mía.
Pero, que es OpenID?
Bueno, OpenID surgió a mediados del 2006 como una forma de unir cuentas y membresías en un único sitio. Ahorrando así la molestia de tener cientos de cuentas distintas en cientos de sites distintos.1
La lógica es bastante simple. Tener un único sitio con mis datos y que el resto de sitios le pregunten a él por mi. Teniendo así una única cuenta creada, y centralizada.
Pero, como funcionaría esto?
Todavía no ves muy bien el uso? Bueno, probemos con un ejemplo.
Supongamos que tenemos una cuenta en un servidor OpenID. Digamos, por ejemplo OpenID.es, y supongamos que queremos comentar un post de una amiga, que está en Blogspot. Lo primero que nos encontramos es que nos pide usuario y contraseña en Blogspot, o la opción más fácil; usar una cuenta OpenID! Al introducir la URL de tu cuenta OpenID, el servidor blogspot preguntará, a la web que le has indicado, por ti. “Oye, quien es este tipejo? Lo conoces?“, y será el servidor OpenID.es el que realmente se moleste en comprobar tu usuario y contraseña en sus datos. Una vez comprueba quien eres, le indica quien eres al servidor de Blogspot, “Si, lo conozco, se llama GeL/T0 y aquí tienes unos pocos datos más sobre él“. Y listo, el servidor Blogspot dará por buena esa información y te dejará añadir tu comentario usando (parte de) la información que le ofrece tu OpenID.
Cuales son las ventajas?
Sobretodo centralización. Con una única cuenta tienes acceso a donde te de la gana. No más altas, no más registros, no más correos de confirmación. Y sobretodo, ten en cuenta, que una vez que te logéas por primera vez en tu servidor, no necesitarás tener que andar logeandote más veces. Con introducir la URL de tu cuenta OpenID será suficiente2
Vale, genial. Pero vallamos un poco más adelante…
Como hacer que mi site valide como OpenID?
Bueno, hay un par de opciones. La más básica es crearte una cuenta OpenID en cualquier servidor y en la cabecera de tu site introducir lo siguiente:
<link rel="openid.server" href="{URL DEL SERVER}" />
<link rel="openid.delegate" href="{URL DEL DELEGATE}" />
Por ejemplo, si tenemos una cuenta en OpenID.es esto sería de la siguiente forma:
<link rel="openid.server" href="http://openid.es/serve" />
<link rel="openid.delegate" href="http://NOMBREDEUSUARIO.openid.es" />
Y ya estaría, podrás usar siempre tu propio site para logearte en cualquier lado!
Como hacer que “realmente” tu site valide como OpenID?
Bueno, compliquemos un poco más el asunto. En el caso anterior realmente lo que hacemos es redirigir a un site externo donde validar nuestros datos, es decir realizamos dos saltos entre servidores, pero porque no hacemos que sea realmente nuestro site el que valide los datos? Nos ahorraríamos un salto y encima controlaríamos nosotros toda la información.
Pero, tendríamos que desarrollar todo el código? No! Nada más lejos de la realidad. Simplemente necesitaremos descargarnos el script de php, phpMyID(OS)3, configurar ciertos parametros y subirlo a nuestro site. Parece fácil, verdad? Pues lo és
Veamos como hacerlo. Lo primero es descargarnos el script(tgz, zip), descomprimimos y la primera sorpresa, son solo dos archivos! Tiene buena pinta, verdad! Bueno, pues de esos dos archivos nosotros solo tocaremos uno MyID.config.php.
Bueno, este archivo será el que contendrá toda la información necesaria. A simple vista es fácil ver que habrá que cambiar y que no:
<?php
// IF YOU HAVE NOT DONE SO, PLEASE READ THE README FILE FOR DIRECTIONS!!!
/**
* phpMyID - A standalone, single user, OpenID Identity Provider
*
* @package phpMyID
* @author CJ Niemira <siege (at) siege (dot) org>
* @copyright 2006-2008
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
* @url http://siege.org/projects/phpMyID
* @version 2
*/
/**
* User profile
* @name $profile
* @global array $GLOBALS['profile']
*/
$GLOBALS['profile'] = array(
# Basic Config - Required
‘auth_username’ => ‘username‘ //aquí añadiremos el nombre de acceso
‘auth_password’ => ‘password‘, //aquí añadiremos la contraseña de acceso4
# Optional Config - Please see README before setting these
‘microid’ => array(’mailto:correo‘, ‘web‘), //Esta información es opcional5
‘pavatar’ => ‘imagen‘, //Aquí debería ir vuestro pavatar6
# Advanced Config - Please see README before setting these
# ‘allow_gmp’ => false,
# ‘allow_test’ => false,
# ‘auth_realm’ => ‘phpMyID’,
# ‘force_bigmath’ => false,
# ‘idp_url’ => ‘http://your.site.com/path/MyID.config.php’,
# ‘lifetime’ => 1440,
# ‘paranoid’ => false, # EXPERIMENTAL
# Debug Config - Please see README before setting these
# ‘debug’ => false,
# ‘logfile’ => ‘/tmp/phpMyID.debug.log’,
);
/**
* Simple Registration Extension
* @name $sreg
* @global array $GLOBALS['sreg']
*/
$GLOBALS['sreg'] = array ( // Aquí ira el grueso de la información
# ‘nickname’ => ‘nick‘, // Tu nick, en algunos sitios (por ejemplo BlogsPot) mostrarán el nick
# ‘email’ => ‘correo‘, // Tu dirección de correo. Básico!
# ‘fullname’ => ‘nombre‘, //Tu nombre completo, esto será lo que muestren otros blogs (el mio?, ahora mismo no lo recuerdo)
# ‘dob’ => ‘AAAA-DD-MM‘, // Tu fecha de nacimiento. OJO: El formato es distinto al español
# ‘gender’ => ‘genero‘, // Sexo. M/F
# ‘postcode’ => ‘CP‘, //Código postal.
# ‘country’ => ‘ES‘, // Ciudad
# ‘language’ => ‘es‘, // Lenguaje
# ‘timezone’ => ‘Europe/Madrid‘ // Zona horaria.
);
require(’MyID.php’);
?>
Como ves, solo hay una cosa realmente difícil de hacer, y es crear la contraseña encriptada. Y como soy muy majo, acabo de crear un pequeño script para que podáis crear todas las que queráis. Es tan simple como escribir esto:
http://storage.g05l21.net/contrasenyaOpenID.php?a1={tu usuario}&a2={tu contraseña}&a3={auth_realm7}
Y simplemente copiar el churro que te devuelve.
Una vez rellenado todo tendrás que subir ambos archivos al site (yo recomiendo subirlo a la misma home) y listo. Ya tienes un bonito servidor OpenID funcionando en tu ordenador. Ahora cuando quieras logearte usando tu servidor solo tendrás que escribir:
http://{tudominio}/MyID.config.php
Esto no es que sea muy “recordable” y comodo, verdad. Bueno, pues volvemos al punto anterior (Como hacer que mi site valide como OpenID?) y realizamos lo mismo; añadir a las cabeceras de tu home el siguiente código:
<link rel="openid.server" href="http://{tudominio}/MyID.config.php" />
<link rel="openid.delegate" href="{tudominio}/MyID.config.php" />
Y ya está. A partir de ahora podrás usar tu propio dominio para logearte en cualquier site que acepte cuentas OpenID!
- Información más técnica al respecto la puedes tener en:
- La web oficial de OpenID
- En el principal servidor español de cuentas OpenID. OpenID.es
- O, como no, en el enlace de la wikipedia
[↩]
- Ya que al preguntar al servidor OpenID, él sabrá de antemano quien eres [↩]
- Este script está pensado para un único usuario, aunque según comenta el autor, es fácilmente adaptable a varios [↩]
- Esto trae más miga [↩]
- MicroId? Que es MicroID [↩]
- No sabes lo que es el pavatar. Vistia su site [↩]
- Este valor no es obligatorio, usaría por defecto ‘phpMyID’ [↩]






7 Julio 2008 14:06 pm
Instalar OpenID en tu site….
Pequeño howto para hacer que nuestro dominio nos sirva como servidor de cuentas OpenID, basandose en un script OpenSource Además añade un sencillo script que podemos usar para crear las contraseñas que almacenará la aplicación….
8 Julio 2008 6:52 am
muchos sitios como los de weblogs sl han optado por solo permitir enlaces de openid por que pueden en cierto modo controlar el monto de spam que entra en sus webs lo cual es algo muy bueno para sus blogs.
–
Mundo Prestamos
Hipotecas y Prestamos
31 Agosto 2008 17:06 pm
Instalar OpenID en tu site…
Bueno, OpenID surgió a mediados del 2006 como una forma de unir cuentas y membresías en un único sitio. Ahorrando así la molestia de tener cientos de cuentas distintas en cientos de sites distintos.1 La lógica es bastante simple. Tener un único s…