Inicio de Sesión Único e Integración con los Servicios de Google

23
Proyecto de Investigación Inicio de Sesión Único con Google Alumno: Seth Karim Luis Martínez Profesor: Daniel Gutiérrez Colorado Facultad de Inteniería y Tecnología de la Universidad de Montemorelos

Transcript of Inicio de Sesión Único e Integración con los Servicios de Google

Page 1: Inicio de Sesión Único e Integración con los Servicios de Google

Proyecto de Investigación

Inicio de Sesión Único con Google

Alumno: Seth Karim Luis Martínez

Profesor: Daniel Gutiérrez Colorado

Facultad de Inteniería y Tecnología de la Universidad de Montemorelos

Page 2: Inicio de Sesión Único e Integración con los Servicios de Google

Presentación del problema

Cómo implementar un inicio de sesión único para los usuarios de los diferentes

sistemas existentes en la Universidad de Montemorelos?

Cómo integrar los recursos de Google tales como Calendar, Gmail, Docs y demás, a

los sistemas existentes en la Universidad de Montemorelos?

Page 3: Inicio de Sesión Único e Integración con los Servicios de Google

Objetivos y Justificación del Problema

Por varios años se ha pensado en tener un solo login para todos los sistemas existentes en la

Universidad de Montemorelos, pero por diversos motivos no se ha logrado

implementar.

El propósito del presente proyecto es lograr implementar en todos los sistemas de la

Universidad de Montemorelos un mecanismo de autenticación (login) único para

todos, usando para ello las cuentas de correo de los empleados, con la finalidad de que

los empleados no tengan que estar recordando distintos nombres de usuario y

contraseñas ni tengan que estarse logueando cada vez que cambian entre los diversos

sistemas existentes, ahorrando de esta manera mucho tiempo valioso para ellos. De

igual manera el uso de Gogole como proveedor de identidad ahorrara la necesidad de

almacenar y proteger contraseñas en bases de datos locales

De igual manera se intenta poder integrar a los sistemas de la Universidad de Montemorelos

los servicios de Google tales como Calendar, Documentos, Correo, etc.

Page 4: Inicio de Sesión Único e Integración con los Servicios de Google

Limitaciones y Delimitaciones

Tiempo: Se cuenta con 70 días, del 01 de Marzo del 2011 al 20 de Mayo del

2011.

Tecnología: El desarrollo está limitado al framework appfuse 1.9.4, Spring 2.0.6

y es necesario adaptar mcuhas cosas a estas versiones no tan recientes

Estructura y Desarrollo del resto de los sistemas: Puede que haya diversas

incompatibilidades entre los diversos sistemas a integrar en un solo login debido a

que usan distintas plataformas de desarrollo

Información: Al ser este, un proyecto realizado “a la medida”, no hay mucha

información disponible al respecto, así que todo lo que se hará sera nuevo

Page 5: Inicio de Sesión Único e Integración con los Servicios de Google

Recursos a usar y definición de términos

Framework Appfuse 1.9.4 – Framework de desarrollo web robusto que integra

diversas tecnologías y usa el patrón de desarrollo en capas MVC (Modelo-Vista-

Controlador)

Spring Framework 2.0.6 – Framework para aplicaciones Java basado en la inyección

de dependencias basado en XML (Extensible Markup Language)

OpenID – Estandar de identificacion digital descentralizado con el que un usuario

puede identificarse a través de una URL proveída por un Proveedor de Identidad (IdP)

SSO (Single Sign On) – Procedmiento de autenticación que habilita al usuario para

acceder a varios sistemas con una sola instancia de identeificación

Google – Empresa propietaria del buscador de dicho nombre y de muchos servicios

mas

LDAP – Lightweight Directory Access Protocol) Protocolo a nivel de aplicacion que

permite el acceso a un serviio de directorio ordenado y distribuido para buscar

informacion en un entorno de red

Page 6: Inicio de Sesión Único e Integración con los Servicios de Google

Procedimiento de investigación

Pasos a realizar para lograr el objetivo:

• Búsqueda de la tecnología a usar para autenticación

• Implementación en un sistema de la tecnología de

autenticación

• Búsqueda de la manera de integrar los servicios de Google

• Integración de un sistema con los servicios de Google

• Extensión de los procedimientos logrados a los demás

sistemas

Page 7: Inicio de Sesión Único e Integración con los Servicios de Google
Page 8: Inicio de Sesión Único e Integración con los Servicios de Google

Gracias

Page 9: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigacion (1)Estudio de diversas tecnologías que permiten un inicio de sesión único

*OpenSSO y OpenID: Comparativa y capacidad de integracion

http://www.mundointernet.es/IMG/pdf/ponencia151_2.pdf

CONCLUSION:

OpenSSO-Un solo login, varias credenciales. Funciona mejor en intranets. La autenticacion es lleavada a cabo

por el propio sistema

OpenID-Una sola credencial, mas de un login. Aun es inseguro y la autenticacion es delagada a un tercero

Integración: Permitir el acceso al Sistema Institucional con un identificador OpenID y asociar a OpenSSO el

identificador OpenID y asi se puede navegar entre aplicaciones teniendo las ventajas de tener una sola

credencial (OpenID) y al mismo tiempo un solo login (OpenSSO)

MI PUNTO DE VISTA: Mezclar ambas cosas es complicado, asi que pienso que lo mejor es implementar

OpenSSO (Single Sign On), lo cual hace que, con loguearnos a una sola aplicacion, se crea una cookie con

nuestra identidad y de ahi en adelante, el proceso de logueo a las demas aplicaciones lo hace el mismo

sistema en base a la cookie. OpenID no me da confianza porque cualquiera con una cuenta Google/Gmail

podria acceder a los sistemas UM ya que el encargado de la autenticacion es Google (proveedor de

identidad)

ACTUALIZACIÓN: Hay que usar OpenID. Es la única manera de que Google pueda actuar como proveedor de

identidad, ya que la manera de loguearse será a través del correo electrónico

Page 10: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigacion (2)*OpenID, Infocards y Contexto

http://estandaresytecnologiasdefi.wordpress.com/page/2/

CONCLUSIÓN:

Muestra una perspectiva sobre las tecnologias actuales que proveen una autenticacion o identidad

*SimpleSAMLphp

http://simplesamlphp.org/

CONCLUSION:

Se ocupa de proveer una identidad a los usuarios. Puede funcionar como Proveedor de Servicios y

como Proveedor de Identidad. Es multilenguaje y tiene su documentacion aqui:

http://simplesamlphp.org/docs/1.7/ . Lo malo es que es en PHP

*OpenSSO Java

https://opensso.dev.java.net/

CONCLUSION:

No lo he leido mucho, pero aqui esta toda la informacion.

Page 11: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigacion (3)*Shibboleth

http://shibboleth.internet2.edu/

CONSLUSION:

Provee OpenSSO

*LOGINS EXTRAS

Con Facebook: http://developers.facebook.com/docs/guides/web#login

Con Yahoo: http://developer.yahoo.com/bbauth/user.html

Con Twitter: http://dev.twitter.com/pages/oauth_faq

*Login Federado con cuentas Google

http://code.google.com/intl/es-419/apis/accounts/docs/OpenID.html

NOTA: ESTO LO USARÉ PARA EL LOGIN OPENID USANDO GOOGLE

NOTA2: A partir de ahora los links morados serán los links mas valiosos

Page 12: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (4)*MI SOLUCION PROPUESTA

-Para permitir el acceso de los usuarios puede usarse OpenSSO y utilizar a Google como Proveedor de Identidad (no

encuentro como) ACTUALIZACIÓN: La única manera de usar a Google como Proveedor de Identidad es usar

OpenID, así que este será el punto de entrada al Sistema Institucional

-Para que Google actue como proveedor de identidad, es necesario usar openID

-Para parmitir usar los recursos de Google, el Sistema actuara como Proveedor de Identidad y Google como Proveedor

de Servicios (Tutorial de Pedro Ventura)

Page 13: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (5)Después de llegar a la conclusión de que mi punto de partida en esta investigación/proyecto era poder implementar

OpenID en el Sistema y lograr de esa manera la autenticación usando Google, me di a la tarea de investigar cosas

relacionadas que me permitieran llevar esto a acabo:

*Que es un LDAP

http://ldapman.org/articles/sp_intro.html

CONCLUSION: LDAP es una Base de Datos donde se almacenan los datos de autenticacion de un usuario

(nombre, contrasenia y otros) y sus roles

*Proyecto de SSO por inmuna para la Municipalidad de Rosario

http://www.google.com.mx/url?sa=t&source=web&cd=3&ved=0CCkQFjAC&url=http%3A%2F%2Fwww.rosario.go

v.ar%2FArchivosWeb%2Fmunix%2Fdoc_arq2.pdf&rct=j&q=sso%20y%20ldap&ei=IfpCTYirI4WisQOVlaX4C

g&usg=AFQjCNFe1X0cbMtKtET6qSqjF_FjY0aaLw&sig2=tjl3rIuXEE2AhGTOlUvL8g&cad=rja

CONCLUSION: Tiene una explicacion detallada de como se configuro SSO, usando Kerberos y LDAP para lograr el

SSO. Viene explicado paso a paso

Page 14: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (6)CONCLUSIÓN GENERAL

*Bueno, basado en el comentario de David Cifuentes -http://groups.google.com/group/colombia-

gtug/browse_thread/thread/f851a1d4ad020e8e-, si lo que se necesita es delegar el proceso de autenticación a

Google como proveedor de identidad se debe usar OpenID. Google Accounts soporta Single Sign-On mediante

OpenID, es decir Google actua como proveedor de identidad y, si tus aplicaciones internas soportan

OpenID, éstas actuaran como proveedoras de servicios. Asi que, por lo tanto, para permitir, el logueo

unico, usando a Google como proveedor de identidad, es necesario usar OpenID. Para hacer la parte de usar los

servicios de Google (correo, calendario, etc), este debera actuar como proveedor de servicio y aqui es donde

aplican los tutoriales de PedroVentura -http://www.pedroventura.com/blog_programacion/2009/06/23/login-

externo-usando-api-de-google-apps/-

Otra opción menos viable, porque no le entendi mucho a la informacion y hay poca, es usar CAS (Central

Authentication Service): http://www.jasig.org/cas

-Aqui un tuto para usar CAS con Eclipse:

https://wiki.jasig.org/display/CASUM/Using+CAS+with+Maven+2+and+Eclipse

Page 15: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (7)Decidido a implementar OpenID en appfuse, como primer paso, investigué sobre este tema las diferentes opciones que

existen para implementar OpenID en tu aplicación web:

*Como funciona OpenID

http://es.wikipedia.org/wiki/OpenID

INVESTIGACION DE COMO IMPLEMENTAR OPENID EN MI APLICACION WEB

*Tecnologias/Proyectos disponibles -- http://wiki.openid.net/w/page/12995176/Libraries

-JOpenID -- http://code.google.com/p/jopenid/ WIKI: http://code.google.com/p/jopenid/wiki/JOpenId

-OpenID4Java -- http://code.google.com/p/openid4java/

-Hacer a mi aplicacion mi propia proveedora de identidad -- http://wiki.openid.net/w/page/12995226/Run-your-own-

identity-server

*Implementar OpenID en mi aplicacion: http://www.ibm.com/developerworks/java/library/j-

openid/index.html?ca=drs-

*Escribir un Proveedor de OpenID para SSO: http://www.ibm.com/developerworks/java/library/j-

openid2/index.html?ca=drs-

Page 16: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (8)Otras alternativas:

-OpenSSO: https://opensso.dev.java.net/ , http://developers.sun.com/identity/reference/techart/app-integration.html

-JOSSO: http://www.josso.org/confluence/display/JOSSO1/JOSSO+-+Java+Open+Single+Sign-On+Project+Home

-OpenAM: http://www.forgerock.com/openam.html , https://wikis.forgerock.org/confluence/display/openam/Home

-Login Federado para Usuarios de Cuentas Google: http://code.google.com/intl/es-ES/apis/accounts/

, http://code.google.com/intl/es-ES/apis/accounts/docs/OpenID.html

Tutorial a seguir para implementar OpenID por medio de Login Federado para usuarios de cuentas Google

http://code.google.com/intl/es/apis/accounts/docs/OpenID.html

Que libreria usar????

-OpenId4Java ya que es la que ha sido probada para Logins Federados --

http://code.google.com/intl/es/apis/accounts/docs/OpenID.html

Como implementar OpenID4Java? -- http://code.google.com/p/openid4java/wiki/QuickStart

Como diseniar una buena interfaz para ingresar al Sistema:

http://sites.google.com/site/oauthgoog/UXFedLogin/summary

Page 17: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (9)Acegi soporta OpenID

http://www.infoq.com/news/2008/04/spring-security

http://www.acegisecurity.org/

NOTA: Acegi es lo mismo que Spring Security ahora, ya que lo absorbió. A partir de su version 2 pasó a llamarse

Spring Security

A partir de este momento, debido a que appfuse viene con Acegi, buscaré la maner de implementar OpenID usando el

acegi o en su defecto, actualizar las librerías y usar Spring Security

Page 18: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (10)Como configurar Spring Security para que soporte OpenID

http://forum.springsource.org/showthread.php?t=80655

Documentacion oficial para configurar SpringSecurity para que soporte OpenID

http://static.springsource.org/spring-security/site/docs/2.0.x/reference/ns-config.html#ns-openid

Autenticacion OpenID usando Spring Security

http://blog.fredvos.org/2008/10/openid-authentication-with-spring.html

Tutorial de configuracion de OpenID con Spring Security en un proyecto Grails

http://www.gruposp2p.org/wordpress/?p=225

Unas configuraciones interesantes

http://blog.jotadeveloper.com/2009/06/23/spring-security-2-la-configuracion-a-la-medida-con-dao-hibernate-iv/

Todos las subetiquetas de <openid-login>

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-namespace.html#nsa-openid-login

Page 19: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación (11)Spring Security OpenID con Google (Ejemplo)

http://code.google.com/p/spring-security-openid/downloads/detail?name=spring-security-openid-google.zip

Tutorial Oficinal OpenID4Java

http://code.google.com/p/openid4java/

*Configurando un LDAP en Apffuse

http://appfuse.org/display/APF/LDAP+Authentication#LDAPAuthentication-appfuse1xx

Page 20: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación ()A partir de ahora detallo las configuraciones y cosas que he aprendido acerca de como habilitar el soporte para

OpenID en Spring para poder utilizarlo en Appfuse 1.9.4:

Page 21: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación ()*

Page 22: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación ()*

Page 23: Inicio de Sesión Único e Integración con los Servicios de Google

Proceso de Investigación ()*