Tutorial login externo usando API de Google

Tutorial login externo usando API de Google

Es conocido por los desarrolladores web el potencial de las APIS de Google, pero no tan conocido el infierno de la documentación y la desorganizador que tiene su documentación.

He tenido que llegar a cabo la migración del webmail de un conocido portal web cuyo server de mail es un servidor Cyrus IMAP con más de 180000 usuarios activos a Google Apps, la cual ha sido realmente un infierno a la hora de gestión y desarrollo. Pero sin duda lo que más complicado ha sido es el desarrollo de un logeo para usuarios en una aplicación externa, es decir que desde mi servicio externo el usuario se pueda logear en su mailbox de Google Apps.

Ejemplo: te logeas en http://mail.midominio.com/login.php y te redirige a http://mail.google.com/a/midominio.com#inbox.

La documentación de las APIS de Google son muy extensas y eso es genial pero al mismo tiempo como he comentado antes, es un infierno. Es un arma de doble filo.

Para documentarme a nivel de técnico de como llevar a cabo éste desarrollo he tenido que consultar varios servidos de Google tales como Google Code, Google Groups, Google Forum en inglés, Google Forums en español, así como blogs de otros desarrolladores web. La impresión final es que la documentación oficial de Google es simple y no explican mucho, dejan las explicaciones y los desarrollos a manos de otros programadores y desarrolladores haciendo la documentación y los desarrollos Open Source bastante complejos de entender y de implementar.

Pero bueno después de esta introducción os comento como podréis elaborar vuestra aplicación externa para que los usuarios se logeen en el mailbox de Google Apps

Para empezar y como primer requisito es tener Google Apps y la edición Premier o Education. Hay otra edición que es para las grandes empresas con acuerdos comerciales especiales con Google que es la edición Partner. Cuando os registráis inicialmente en Google Apps tendréis la edición Standar la cual tiene limitaciones en el uso de las APIs y por ejemplo no se podría usar el servicio SAML-based Single Sign-On (SSO). Podrías instalar un Open Source sobre SSO o realizar un desarrollo para intentar usar éste servicio pero no podríais activar el servicio ni confurarlo.

Os adjunto algunos pantallazos de lo que veréis en el CP de Google Apps.

pantallazo_google

Opciones para configurar SAML Sing-on (SSO) en el menu de Opciones Avanzadas del Panel de Google Apps

Visión general de la configuración de single sign-on (SSO)

Visión general de la configuración de single sign-on (SSO) Haz click para verlo mayor

Uno de los puntos iniciales donde reside la complejidad es en decidir que método de logeo de la API de autenticación usar pues existen varios: ClientLogin, OAuth, AuthSub y Sign-on (SSO). Cada método tiene unas propiedades y unas funcionalidades determinas.

ClientLogin: Este interface se usa para logear en Google automaticamente desde programación. Una vez enviado el request metiante ClientLogin, Google enviará un tokken con que nuestra aplicación hará referencia cada momento que enviemos una petición de acceso a la cuenta del usuario, ya sea por GET o POST. El tokken contiene información del tiempo de validación y en que servicio se ha logeado, ya sea Google Apps, Docs, Youtube, etc.. Tiene limitaciones a la hora de usar los métodos y las diferentes llamadas, por lo que si estas logado como usuario y no como administrador no podrás realizar acciones como crear usuarios, modificar datos de usuarios,etc. Éste método sirve para una aplicación instalada en nuestro servidor y con la que podemos logear, crear usuarios, modificar datos usuarios, listar los correos en nuestro Google Apps, etc. No sirve para autentificar usuario y logear en el mailbox de Google Apps.
Para más información consultar ClientLogin autenticación API
OAuth: Es un protocolo para autenticar aplicaciones web y acceder a los servicios de Google. Aunque no a Google Apps. OAuth es un nuevo protocolo abierto de autentificación que permite una autentificcion simple y standarizada en aplicaciones de escrito y web, este método lo usa OpenID. No voy a explicar el funcionamiento de éste protocolo más. Si queréis informaros más sobre OAuth podréis ver su documentacion oficial en OAuth.net. En cuanto a validar la autentificación de un usuario en Google éste método nos sirver para crear y gestionar los tokkens de validación, pero no nos serviría para logearnos en nuestro mailbox de Google Apps.
Para más informacion sobre el uso de OAuth en una aplicación en externa consultar aqui: OAuth y Google

AuthSub:Se usa para aplicaciones web que necesiten tener acceso a los servicios protegidos de las cuentas de los usuarios de Google o Google Apps.
Para mantener un alto nivel de seguridad usamos un interface proxy llamado AuthSub que habilita a las aplicaciones web acceder sin recoger la información del usuario. Antes de usar éste método hay que verificar que el servicio de Google al que queremos acceder es compatible con éste protocolo.
Para más información y para saber más del escenario en el que hay que usar este método de autenticacion ver el siguiente link: AuthSub

Sing-on (SSO):Security Assertion Markup Language (SAML) es un standart XML que permite a los dominios web intercambiar autentificaciones y autorizaciones de datos. Usando SMAL como un proveedor online podemos conectar y asociar un proveededor de identidades con un autenticador de usuarios el cual intenta accedear a un contenido seguro como es el caso del mailbox de Google Apps.
Google Apps ofrece un servicio que es SAML-based Single Sign-On (SSO) que permite a las compañias partner tener total acceso a sobre el proceso de authenticacion en una aplicacion como Gmail o Google Calendar desde nuestra página web.
Si quieres leer más sobre éste metodo mira Implementación SSO Google. Éste es el enlace a los Open Source SSO Yo he usado un ejemplo de SSO que he tenido que remover cielo y tierra para encontrarlo porque no está muy visible en la documentacion de Google. Podeis ver la documentación del ejemplo. y descargar el Open Source del ejemplo. Lo tenéis implementado en JAVA, C# y PHP.

También puedes descargarlo aquí.

zip
Descargar Sample SSO Source.zip - Descargado 709 veces
Iré comentado y creando otros post más técnicos pero si queréis más información técnica, ayuda o asesoramiento sobre la implementación no dudes en preguntarme y contactar conmigo.

Última actualización: He colgado el código que he usado. Podéis ver el post con el ejemplo completo en tutorial login externo usando API de Google 2

Tags de búsquedas:

Google login api, ejemplo java api google oauth, google login, sido es el desarrollo de un logeo para usuarios en una aplicación externa, php login google, loguearse en google a traves de php, logeo gmail en tu web, api de autenticacion google, como usar la api de youtube en mi blog, como se usa saml2

Posts Relacionados:

  • Tutorial login externo usando API de Google – 2 - Ya he explicado en un post anterior las diferentes versiones que tiene la API de Google para realizar login externos. A mi me llevó mucho tiempo de investigación para documentarme...
  • Registrar eventos del botón +1 de Google en Google Analytics Si hace unos días escribía sobre como integrar el boton +1 de Google hoy comentaré como registrar interacciones, eventos o clicks , para registrarlo en Google Analytics. El botón +1...
  • integra google talk en tu web Integrar un chat de google talk en tu web es muy simple con Google talk chatback badges. Un badge o insignia de Google Talk permite a otros conversar contigo a...
  • Como integrar el boton +1 de Google. En Marzo apareció el botón +1 de Google con la idea de dar más notoriedad a contenidos de calidad y a la vez ofrecer contenidos más personalizados al usuario provenientes...
  • Google Friend Connect caído No es la primera vez que la herramienta social de Google, Google Friend Connect se cae. Pero el impacto que tiene en la red de blogger y en todas las...

Te ha ayudado el artículo? Colabora!

10 comentario/s

Comentar

  1. Oscar dice:

    Hola, queria consultarte respecto al parametro:

    $relayStateURL = ‘http://mail.google.com/a/’ . $domainName;
    $acsURL = ‘https://www.google.com/a/’ . $domainName . ‘/acs’;

    por alguna razon no me reconoce esos dos al momento de realizar la configuracion, es posible que han cambiado eso durante algun momento, seguire tratando de configurarlos pero queria consultar por aca, por si acaso…

    • Pedro Ventura dice:

      Hola Oscar, lo siento no poder ayudarte, ya hace unos cuantos años que no hago nada con la API de Google y no te puedo dar soporte o ayudar. Este artículo ya tiene un tiempo y no se cuantas cosas habrán cambiando en la API.

      De todas maneras si consigues solucionar tu error, no dudes en compartirlo por si a otros lectores les puede ayudar.

      un saludo!

  2. Sergio dice:

    Hola Pedro, me estoy volviendo loco para integrar el login entre moodle y google apps. En Google apps he activado el SSO, y ahora cuando intento acceder me redirige a mi web moodle, la cual no autentica correctamente. Ahora no puedo acceder a mi cuenta de administración de google apps.

    ¿Existe alguna forma de desactivar el SSO? O mejor todavía ¿qué le tengo que configurar a moodle para que haga el login correctamente en google apps?

    En tu blog no he encontrado nada acerca de moodle, así que supongo que en este tema no me podrás echar una mano ¿o sí?

    Gracias por tu ayuda
    Saludos

  3. Gavo dice:

    Buen Post estare al pendiente de tus actualizaciones.

    Saludos Cordiales.

  4. Andres dice:

    Hola Julio, llegué acá buscando información acerca de lo que comentas….mira estoy tratando de setear una firma en una cuenta de correo de google, verificando la API me indica que mediante CURL debo enviarle un XML que ya tengo según esta docu http://code.google.com/intl/es-CL/googleapps/domain/email_settings/developers_guide_protocol.html#GA_email_signature_main
    y a esto adjuntarle un token de autenticación…esto del token ya lo tengo listo pero por algún motivo me da como resultado

  5. mariaanghi dice:

    hola chicos alguien me podria ayudar a hacer que en mi web mande eventos a google calendar y ami base de datos, ya investige muchisimo como ingresar eventos a google pero no me sale me da un erro “espera un objeto” pero ami parecer es que no se conecta con google calendar, puede ser? como se hace? muchas gracias

  6. claudio dice:

    Pedro: Estoy buscando informacion hace meses sobre como conectar google Apps version Estandar con LDAP (sincronizar usuarios)… etc..

    Pero todo se limita a utilizar la version premier cosa que no es para nada barata en relacion a mi bolsillo..

    Lo que estoy intentando realizar es conectar mi aplicacion de usuarios con el servicio de google, intente hacerlo a travez de ajax llamando al formulario de google, y demas cosas pero esas chanchadas no me funcionaron…

    Tenes idea de como puedo hacer para hacer un SSO entre mi aplicacion y google Apps Estandaro por lo menos, como puedo hacer para logearme desde otra apliacion…

    Gracias

  7. Cristian Zepeda dice:

    Buenas, sabes intente probar la muestra que tenias pero no me funciono, si tienes alguna otro ejemplo o un explicativo como configurar te lo agradecería

    saludos

  8. Pedro dice:

    Otro ejemplo que los grupos de Google son una mierda y un caos para encontrar documentación.

    http://www.webmonkey.com/blog/Google_Groups_Fail:_JQuery_Abandons_Google_Over_Spam__Interface_Problems

Deja tu comentario

Nombre:

Email (no será publicado)

Website

Comentario

Colabora, añade +1 a mi blog!!