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 y realizar pruebas con cada tipo de login.
Ni siquiera en los grupos de Google fueron capaces de ayudarme: Login Users with Google Apps Mensajes.
Al final llegue a descubrir que el que necesitaba era el método Sing-on (SSO) o Security Assertion Markup Language (SAML).
NOTA1: Antes de copiar el código tenéis que verificar si es el tipo de Login que necesitáis.
Este tipo de login no vale para las versiones standard, y si tenéis esa versión deberéis probar con otro tipo.
NOTA2: Antes de nada tenéis que documentaros y ver los tipos de login que ofrece la API de Google en mi antiguo post: tutorial login externo usando API de Google
Código para realizar login con Sign-on SSO
descarga el código fuente aquí:
Descargar Ejemplo Completo Login Google Apps con SSO.rar - Descargado 238 veces
Gracias a Gon que me estuvo ayudando a mi I+D
Posts Relacionados:
- acortar urls o reducir el tamaño de un link con la api de linkinho
- Indexar las búsquedas full-text con Sphinx. Tutorial como usar Sphinx
- integra google talk en tu web
- Tutorial login externo usando API de Google
Hola pedro, estaba revisando tu código y encuentro en saml_util.php que aparece un archivo xml dentro de un directorio templates, ese archivo que hace o que es?
Contiene la configuración inicial para lanzar el formulario de login SSO.
Yo no lo tengo en mi .rar de mis archivos pero puedes verlo en http://code.google.com/p/google-apps-sso-sample/source/browse/trunk/php/SAMLTestTool/templates/AuthnRequestTemplate.xml?r=13
Buenas hiro,
muchas gracias por tu comentario y aportación!!
Soy consciente que es posible que mi código está algo des-actualizado y está muy personalizado con lo que yo hice, pero me alegro que lo hayas conseguido!!! se que es un tremendo lio!
Si luego quieres postear o colgar algún código de ejemplo adicional me lo dices y lo haré encantado. Puedo hacer referencia, si tienes, a tu web o blog.
Un saludo!
El siguiente paso es validar el usuario, y contraseña contra la propia base de datos de google.
Supongo que la forma mas correcta es hacerlo con OAUTH…
Si tengo exito ya os pasaré mi código.
Hola Pedro,
He estado un par de dias peleandome con tu codigo, y por fin he conseguido que me funcione. Te quedo muy agradecido, por que con tu código me quedan las cosas bastante claras.
De todas formas os comento los problemas que he tenido, por si pueden ayudar a alguien.
Lo primero, la instalación del “xmlsec1″ que se usa para firmar el xml, en nuestros servidores no estaba instalado, y instalandolo con el yum no funcionaba. Finalmente era por culpa de la version de las librerias “libxml2″ que eran demasiado antiguas.
También me he liado un poco por que en el zip de tu ejemplo usas un fichero .key para la variable $pubKey
y por lo que he visto tiene que ser un fichero .cer para que la aplicacion “xmlsec1″ lo pueda codificar
Aparte he tenido que regenerar mis claves de firma, por que las que tenía generadas para usar con la aplicación de rnd.feide.no eran RSA en lugar de DSA para que puedan ser usadas por la aplicación “xmlsec1″
Aqui explican esto ultimo:
http://markmail.org/message/itz7eybyfurvdt3o#query:xmlsec%20Error%3A%20failed%20to%20load%20public%20key%20from+page:1+mid:qgmnycgd5chbvtsg+state:results
Pues mira he estado buscando algo sobre el ClientLogin en .Net
He encontrado esto que son códigos de ejemplo con la librerías en .NET para la API de Google, echa un ojo al código, porque parece que tiene buena pinta.
http://code.google.com/p/google-gdata/
Con estas librerías parece que puedes gestionar todos o casi todos los servicios de Google en .Net:
* Base
* Blogger
* Calendar
* Spreadsheets
* Google Apps Provisioning
* Code Search
* Notebook
* Picasa Web Albums
* Document Feed
* Contacts
* You Tube
* Google Health
Además encontré esta documentación que está bien porque viene códigos de ejemplo en .Net
http://code.google.com/intl/es-ES/apis/gdata/docs/auth/clientlogin.html
También he encontrado este desarrollo de una empresa u otros programadores que es un SDK para construir apps en .Net , échale un ojo porque también tiene buena pinta.
http://code.google.com/p/lokad-sdk/
Ya me contarás.
Un saludo!
Hola Pedro, estuve buscando y encontre algo sobre ClientLogin API de google, es para aplicaciones instaladas (no web obviamente), creo que podria servirme esto, te dejo la URL para que la revises y me des tu opinion y si se puede me puedan dar mas luces sobre el tema.
http://code.google.com/intl/es-ES/apis/accounts/docs/AuthForInstalledApps.html
Hola Hiro,
usar el sistema simpleSMALphp de rnd.feide.no es lo peor yo estuve un par de semanas probando su código y fue mas o menos perder el tiempo.
Hiro, lo realmente complicado es lo que preguntas y lo que yo lleve mucho tiempo para desarrollar. Es decir logear desde un servicio o web externa y acceder a Google Apps. Lo bueno es que si el formulario de login esta en tu server lo puedes personalizar como quieras.
Sobre el login lo que tienes que hacer es primero comprobar en tu base de datos, esto es algo fundamental, pues el SSO no comprueba la contraseña sino si exite el usuario.
Por lo que el proceso, cuando yo hice todo esto, era el siguiente:
1.- El usuario se logea a través de un formulario en tu server.
2.- Los datos que ha introducido los compruebas en tu propia base de datos. Por lo que cuando el usuario cambie la contraseña la tendrá que cambiar en tu máquina.
3.- Después usas el SSO y mandas el nombre del user a GA
El tema es que primero tienes que comprobar si el usuario existe en tu base de datos y el login y pass estan bien (en tu BBDD), después solo pasas el login a GA, ya que sólo se comprueba el login.
Esto es lo que yo investigué y lo que yo llegue a implementar y funcionaba.
Creo que la API tenía un método para recoger la password de GA, pero no estoy muy seguro.
Hola, buen ejemplo, pero como podría hacer si quiero utilizar el SSO desde una aplicacion Desktop cliente/servidor, por ejemplo en el colegio donde trabajo los sistemas estan en .Net Cliente/Servidor, como podria implementar el SOO en ese escenario.
Buenas Juan Carlos,
pues me vas a perdonar pero no tengo ni idea de como integrar la API de GA con .Net
Lo que si te puedo decir es que en la lista de código de ejemplo de SSO hay para integrar C# y ASP.Net, pero creo que ésto a ti no te resuelve nada,no?!
Échale un ojo a este enlace y me cuentas, pero no creo que Google ha desarrollado la API para que funcione con entornos Deskop… no creo…
http://code.google.com/p/google-apps-sso-sample/downloads/list
Gracias
Un saludo!
Muchas gracias, muchiiisimas garcias, buenísimo artículo, muy util.
De nada!
Mucha gente me ha escrito pidiéndome ayuda, la verdad que la API de Google es un tremendo lio y costoso de implementar.
Un saludo!
[...] 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 [...]