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í.

sso-sample-1.0.1-php
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,como utilizar a autenticação oauth2 ?,autentificarse google apps,como utilizar en mi pagina el logueo de google,calendar,instalar las api c# de google plus,login con google php,login de mi app se autentique con gmail,loguearse con cuenta de google,login en mi web con google,login con cuenta de google,logearse en nuestra aplicacion mediante sso,logearse con gmail a mi web

Noticias relacionadas »

14 comentarios en Tutorial login externo usando API de Google

  1. Richard
    / Responder

    hola mi situacion es algo parecida, yo tengo mi aplicacion web y deseo realizar single sign on con oauth2, o sea integrar oauth a mi aplicacion web, me dirias como lo puedohacer, o si tienes algun ejemplo mejor todavia. Te aclaro no tengo coneccion con google, lo que tengo es el servidor de oauth que descargue de github

  2. Pingback: Tutorial login externo usando API de Google – 2 –

  3. Rodrigo
    / Responder

    Hola buen articulo gracias y felicidades por compartirlo, aun no lo pongo en practica pero me surgio una duda, eso de poder logearse para entrar a google desde codigo, no es valido para google apps gratuito o basico??

    Lo unico que quiero es poder accesar a a la bandeja de entrada sin pasar por la pagina de login.

  4. Oscar
    / Responder

    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
      / Responder

      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!

  5. Sergio
    / Responder

    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

  6. Gavo
    / Responder

    Buen Post estare al pendiente de tus actualizaciones.

    Saludos Cordiales.

  7. Andres
    / Responder

    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

  8. mariaanghi
    / Responder

    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

  9. claudio
    / Responder

    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

  10. Cristian Zepeda
    / Responder

    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

  11. / Responder

    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

  12. Pingback: Tutorial login externo usando API de Google – 2 - | Blog Pedro Ventura

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • Margherita (5 horas)
    Hola, tengo un problema con el plugin. Tanto en la…
  • Pablo H (2 semanas)
    Hola Pedro, Muchas gracias por el post, me fue muy…
  • Pedro Ventura (2 semanas)
    Hola Margat Muchísimas gracias por tu comentario, me alegro de…
  • Pedro Ventura (2 semanas)
    Hola Rebeca, Tan sólo se permite 1 dominio por cuenta.…
  • Rebeca (2 semanas)
    Hola. Yo ya tengo un dominio en bitly pero quiero…
  • Pedro Ventura (3 semanas)
    Hola Raul, 1. No habría problema, de hecho yo sigo…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Error Client does not support authentication protocol requested by server

Porqué sucede y que hacer cuando obtiene éste error:  Client does not support authentication protocol requested by server. Primero, se...

Cerrar