Sistema de identificación distribuida

Entender la identidad en la Web

 Ejemplo de implementación Mozilla Persona


Alina Mierlus

@alina_mierlus

¿Por qué es importante?




  • ayuda al usuario a identificarse con una serie de servicios y herramientas;

  • permite crear una reputación en la red;

  • asegurar la privacidad y seguridad del usuario;

  • hoy en día, los métodos de identificación en la red son variados, pero al mismo tiempo en 'silos';



Servicio de identificación federado

Puntos positivos:
  • nos permite identificarnos con una dirección de email en diferentes páginas / apps en la web;
  • ya no necesitamos recordar contraseñas;
  • para desarrolladores: no dependemos de terceros; podemos  montar el servicio en nuestro proprio servidor;


Puntos menos positivos:
  • la adopción de soluciones federadas suele ser bastante baja (solo ciertos grupos la utilizan);
  • El desarrollador todavía tiene que gestionar el servicio de registro aparte.
    Introducción a Mozilla Persona







    ¿Por qué Mozilla Persona?

    Para desarrolladores:

    • Facil de implementar;
    • Software libre: https://github.com/mozilla/persona
    • "Deployable" (lo puedes montar en tu propia infraestructura)


    Para usuarios:
    • No deja rastros (la privacidad del usuario en primer plano);
    • Te identificas sólo con la dirección de correo electrónico;
    • Seguro y facil de utilizar;

    Puesta a punto de Mozilla Persona




    Express+Persona+MySQL


    Express:

    • facil de desarrollar servicios web, robusto


    Persona:
    • servicio de identificación


    MySQL:
    • Base de datos con los credenciales de identificación
    • En este ejemplo no gestionamos el registro!

    Organización del codigo
    Cliente:
    • utilizamos Grunt para gestionar el desarrollo e implentación: gruntjs.com/


    Servidor:

    • la instancia de express;
    • Se puede ejecutar como
       # node index.js 

    Data:
    • tenemos guardada la configuración de vhost
    • tenemos guardado un dump.sql de ejemplo

      ¡Aquí podéis encontrar el código fuente!

    ¿Cómo utilizarlo para mi proyecto?


    Configurar el servidor

    0) Configuración Apache server: http://httpd.apache.org/docs/2.2/configuring.html

    1) Configuración de vhosts: http://httpd.apache.org/docs/2.2/vhosts/

    ¡Aquí hay un buen ejemplo de como hacerlo en MacOSX!


     # vim /etc/hosts

    El cliente


    0) Instalar las dependencias:
     # npm install


    ¡Más información sobre npm - gestor de paquetes node!

    ¡Cómo instalar Grunt!

    El servidor

    0) Configurar el fichero config.json con el path corespondiente;

    1) Ejecutar el servidor:

     # node index.js

    La base de datos

    0) instalar una base de datos si no la tenéis (eg. MariaDB) ;
    1) start database
     # mysql -uroot
    2) Grant privileges
     > grant all privileges on test* to <your email> identified by <your name>
    3) Configurar el dump.sql
     # cd <your Project directory>/data
    # vim dump.sql

    Código fuente:

    http://bitbucket.org/similistools/express-persona-mysql-example

    ¡Lo podéis utilizar en vuestro proyecto, modificar, distribuir!



    ¡Gracias!