¿Que es?
BrowserID consiste en una serie de librerías que permiten el login a cualquier sitio web introduciendo únicamente un email. Este sistema soporta la mayoría de CMS mayoritarios a través de plugins y existen librerías para la mayoría de lenguajes web usados actualmente.
¿Como implementarlo?
1. Habilita BrowserID en tu sitio web
Incluye la librería include.js de BrowserID en tu sitio agregando el siguiente script a su <head>.
<script src="https://browserid.org/include.js" type="text/javascript"></script>
2. Identifica al usuario
En lugar de mostrar un formulario en tu sitio para pedir un nombre de usuario y una contraseña, usa el API de BrowserID hecho en Javascript cuando el usuario hace clic en su botón de inicio de sesión:
navigator.id.get(function(assertion) {
if (assertion) {
//Este código será invocado una vez que el usuario ha
//seleccionado una dirección de correo electrónico de su propiedad.
} else {
// Algo fue mal y no se pudo registrar.
}
});
Tras iniciar sesion correctamente, se pedira una nueva confirmación ( assertion ), un string que contiene una petición firmada que prueba que el usuario es quien dice ser.
3. Verificando al usuario
Debemos verificar que la confirmación es autentica, y extraer el email del usuario de ésta. Para ello, lo mas facil es usar el sistema de verificación de BrowserID.
Para esto, enviamos una petición a https://browserid.org/verify con dos parametros mediante POST.
1- assertion: La confirmación codificada
2- audience: El hostname de tu sitio y el puerto (El puerto es opcional)
El verificador confirma que el assetion corresponde a tu web y que es válido, veamos un ejemplo:
$ curl -d "assertion=<ASSERTION>&audience=https://mysite.com" "https://browserid.org/verify"
{
"status": "okay",
"email": "[email protected]",
"audience": "https://mysite.com",
"expires": 1308859352261,
"issuer": "browserid.org"
}
Y esto es todo, no necesitamos mas verificación si no queremos.
Ejemplo
En esta web podemos ver un ejemplo http://myfavoritebeer.org/ y revisar el código aqui https://github.com/lloyd/myfavoritebeer.org/
Dudas
Una vez visto como se implementa, mirar un poco el source y probar varios ejemplos me entran dos dudas:
¿Si un usuario valida un email y otra persona en otro sitio usa su email, tiene acceso?
Si lo que realmente hace es asignar un token a cada email basado en su navegador...¿Que pasa si el usuario intenta logear desde otro PC?
¿Que opináis de este sistema?¿Lo habéis probado?
La página web oficial es BrowserID.
PD: Funciona en todos los navegadores de escritorio y móviles.