Configuración rápida

Cargar la biblioteca BrowserID

Hay que incluir en tu sitio web la biblioteca BrowserID que se encuentra en https://browserid.org/include.js asegurándonos de que se carga antes de llamar a cualquier función navigator.id .

Por ejemplo:

<script src="https://browserid.org/include.js" type="text/javascript"></script>

La biblioteca está diseñada para ser neutral al navegador y funciona bien en todos los navegadores modernos.

Pedir al usuario que se autentifique

Agrega un botón sign-in a tu pagina. Aunque es completamente opcional, es posible que desees utilizar uno de los siguientes botones de BrowserID:

A red sign in button A blue sign in button A orange sign in button A green sign in button A grey sign in button

Por ejemplo:

<a href="#" id="browserid" title="Sign-in with BrowserID">
  <img src="/images/sign_in_blue.png" alt="Sign in">
</a>

Cuando el usuario hace clic en el botón sign-in (conectar), llama la función navigator.id.get(), pasando una función a la que devuelve la llamada:

$(function() {
  $('#browserid').click(function() {
    navigator.id.get(gotAssertion);
    return false;
  });
});

En caso de éxito, la devolución de la llamada se realizará pasada la aserción: esto es una cadena que contiene una reclamación firmada de que el usuario posee una dirección de correo electrónico en particular.

Comprobar la aserción

Tendrás que enviar esta aserción para que tu servidor la compruebe, por ejemplo, mediante el uso de una petición AJAX. En este ejemplo tenemos un servicio que se ejecuta en /api/login que recibe y comprueba las aserciones. Si este servicio comprueba con éxito la aserción, actualizamos la interfaz de usuario llamando a loggedIn(), de lo contrario, controlamos los errores de inicio de sesión:

function gotAssertion(assertion) {
  // got an assertion, now send it up to the server for verification
  if (assertion !== null) {
    $.ajax({
      type: 'POST',
      url: '/api/login',
      data: { assertion: assertion },
      success: function(res, status, xhr) {
        if (res === null) {}//loggedOut();
          else loggedIn(res);
        },
      error: function(res, status, xhr) {
        alert("login failure" + res);
      }
    });
  } else {
    //loggedOut();
  }
}
Nota: es importante que la aserción se compruebe en el servidor y no en el navegador.

En el servidor, debes comprobar la aserción y extraer de ella la dirección de correo del usuario. La forma más sencilla de hacerlo es utilizar el servicio de verificación gratuito proporcionado por BrowserID. Envia una solicitud POST a   https://browserid.org/verify con dos parámetros:

  • assertion: la aserción codificada
  • audience: el nombre del host y  puerto opcional opcional de su sitio. Esto hace más difícil que una afirmación generada para un sitio ajeno se utilice para acceder a la tuya. Se debe especificar de forma explícita audience (audiencia) y no confiar en un parámetro enviado por el navegador del usuario, como document.location. El servicio de verificación comprobará que la audiencia que especificas coincide con el nombre de dominio incluido en la aserción.

Nota: esta llamada era un GET, pero a partir del 13 de octure de 2011 debe ser un POST.

El verificador comprobará que la aserción es para tu sitio y que es válida. Responde con una estructura JSON que contiene los contenidos y el código de estado de la aserción.

Supón que tienes una aserción que pide a  https://mysite.com que acepte la dirección de correo lloyd@example.com.

Puedes enviarla a https://browserid.org/verify:

$ curl -d "assertion=<ASSERTION>&audience=https://mysite.com" "https://browserid.org/verify"

Aquí está la respuesta:

{
    "status": "okay",
    "email": "lloyd@example.com",
    "audience": "https://mysite.com",
    "expires": 1308859352261,
    "issuer": "browserid.org"
}

Simplemente tienes que comprobar que el estado es correcto y, si lo es, el usuario puede conectarse al sitio. Puedes crear una sesión para él y colocar una cookie en su navegador para identificar la sesión.

Implementa el cierre de sesión

Puedes implementar el cierre de sesión simplemente eliminando la cookie de la sesión de usuario.  Si has implementado la compatibilidad para inicio de sesión persistente, entonces solo tendrás que llamar a navigator.id.logout().

En función del tiempo que haya trascurrido desde que el usuario inició sesión/ingresó con su proveedor de identidad, el usuario dispondrá aún de un certificado de usuario válido: si es así, entonces cuando el usuario inicie sesión/ingrese de nuevo, no se le solicitará de nuevo la contraseña para BrowserID. Sin embargo se le pedirá que seleccione la dirección de correo que va a usar y que confirme que desea iniciar sesión/ingresar.

Etiquetas y colaboradores del documento

Última actualización por: StripTM,