Sistema de identificación distribuida
Entender la identidad en la Web
Ejemplo de implementación Mozilla Persona
Alina Mierlus
@alina_mierlus
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';
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.
¿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:
- framework web apps para nodejs: expressjs.com/
- 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!
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?
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
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
http://bitbucket.org/similistools/express-persona-mysql-example
¡Lo podéis utilizar en vuestro proyecto, modificar, distribuir!
¡Gracias!