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í:
ejemplo_saml_login

Gracias a Gon que me estuvo ayudando a mi I+D 😉

Tags de búsquedas:

api externa,usar login de google en mi web,manual de uso de xmlsec,loguin,login externo con facebook en mi web,falta el parametro de respuesta necesario samlresponse,como me login en google com es,como iniciar sesion en php desde una api externa,api implementación con clave pública y Login usuario,api externo,validar los usuarios que responden en google form

Noticias relacionadas »

22 comentarios en Tutorial login externo usando API de Google – 2 –

  1. Pingback: Tutorial login externo usando API de Google

  2. Luis Alberto R. C.
    / Responder

    Hola Pedro, no tengo experiencia en programacion mas bn se me olvido jeje…. te queria preguntar como hago en google apps for education para configurar una api donde me haga una firma institucional para todos los usuarios en ves de hacerlo uno por uno… estuve avergiuando y me dicen que aqui
    https://apps-apis.google.com/a/feeds/emailsettings/2.0/{domain}/{username}/signature, pero estoy super bloqueado no se que hacer gracias por lo atencion que le prestes. cambie el domain por mi dominio asociado y el username por el administrado pero jum dice que error no se que… como haria? me das una luz? gracias.

  3. / Responder

    hola pedro, estoy diseñando una pagina la cual me trae unas cordenasas :
    http://protectlaptop.webuda.com/yo.php de la maquina que hace la peticion, que pasa
    funicona perfecto pero cuando me da el resultado quiero hacerle un GET desde un codigo vbs, y lo k me trae ese todo el codigo de la pagina, como puedo capturar solo el resultado…gracias de antemano…

  4. Alan Hugo
    / Responder

    Hola Pedro
    Seria genial si me das la mano para generar eso clave que pide el registro del SSO, xq ni idea por donde empezar, lo unico que en el archivo de ejemplo apararece “DSAPublicKey01.key” y probe con ese y obviamente me salio error al simular “Google Apps – Falta el parámetro de respuesta necesario, SAMLResponse.”
    He estado leyendo que tengo que ejecutar unos comandos para generar :S, tambien te comento que e visto q hace tiempo se lleva un proyecto moodle con app que parece estar madurando, chekea esta pagina: http://learningischange.com/2009/02/25/the-killer-app-google-apps-and-moodle-integration/ se ve muy interesante y atractivo.
    Gracias, por la respuesta, es bueno saber que alguien te escucha
    Saludos

  5. Alan Hugo
    / Responder

    Hola, en el formulario de ingreso de Datos del Sign-on SSO me pide un archivo certificado que debe contener la clave publica, este paso no lo has posteado? uhmmmm no encuentro como hacerlo, por otro lado tengo una cuenta premium con 2 usuarios pero no aparece el link para habilitar el SSO.. muy raro¿?, despues me alcanzaron una cuenta de Educacion y ahi si estaba la opcion y es caso que comento del registro del SSO, gracias por el articulo, es de mucha ayuda.
    Saludos desde Peru

    • Pedro Ventura
      / Responder

      Buenas Alan!

      Pues esto que hice de la API de login con SSO de Google fue hace mas de un año y la verdad que no recuerdo muy bien. Ahora que lo dices si que recuerdo que había que generar unas claves, creo que en un de los codigos de ejemplo que tengo hay un archivo con una clave (que es un ejemplo).

      Todo esto cuando lo hice fueron meses de desarrollo y tuve que probar e investigar un monton de posibilidades y códigos. Además cuando lo hice tenia una cuenta “partner” porque lo estaba haciendo para un grupo de empresas que es bastante grande y tenia acuerdos con google, de manera que no lo he llegado a probar en una cuenta premium, standard o de educacion.

      Es posible que la API haya cambiado algo (o mucho), si te soy sincero no tengo mucha idea.

      Pueba a descargar todos los códigos de ejemplo que tengo. Lee el otro artículo que escribí http://www.pedroventura.com/blog_programacion/2009/06/23/login-externo-usando-api-de-google-apps/, investiga todos los links externos que algunos eran interesantes o había mas códigos de ejemplo. Ahora no me acuerdo porque como te he dicho fue muy complejo y un proyecto largo pero investiga todo esto que te he dicho, si sigues igual, me lo comentas y le echo un ojo a la API para refrescar la memoria.

      Ánimo!

  6. Alan
    / Responder

    Hola probe el ejemplo.. pero me sale que no puedo acceder a la pagina “Google Apps – Este dominio no está configurado para utilizar la función “Inicio de sesión único”.” me podrian decir la razon del xq no me sale 🙁

  7. Harold
    / Responder

    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?

  8. Pedro Ventura
    / Responder

    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!

  9. hiro
    / Responder

    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.

  10. hiro
    / Responder

    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

    • Alan Hugo
      / Responder

      Hola Pedro, Hiro
      Bueno despues de una semana de intento e logrado avances, logre hacer los certificados .cer (DSA) e instalado el xmlsec1 y la libreria libxml2 como aconseja hiro, pero aun me sale este error “Google Apps – Falta el parámetro de respuesta necesario, SAMLResponse” se queda en la ruta https://www.google.com/a/domain/acs.
      Pareciera que mi error fuera por XML que tengo no responden, la verdad ya se me fueron las ideas de que podria estar pasando para que no funcione.
      Me podria decir si hay datos adicionales.. derrepente instalar un paquete o el mismo xml.
      Por otro lado e provado el tutorial de moodle.. y funciona bien, pero con tu ejemplo no se que pasa que no logro exito.
      Gracias, seguire en el intento.

  11. Pedro Ventura
    / Responder

    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!

  12. Juan Carlos Gutierrez
    / Responder

    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

  13. / Responder

    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.

  14. Juan Carlos Gutierrez
    / Responder

    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.

    • / Responder

      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!

  15. JR
    / Responder

    Muchas gracias, muchiiisimas garcias, buenísimo artículo, muy util.

    • / Responder

      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!

  16. Pingback: Tutorial login externo usando API de Google | 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! »

  • Pedro (3 días)
    Buenos días Margherita El plugin está obsoleto y ya no…
  • Juan Carlos Díaz (4 días)
    Este grupo de Telegram me ha dado muy buenas señales…
  • Margherita (4 días)
    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 (3 semanas)
    Hola Margat Muchísimas gracias por tu comentario, me alegro de…
  • Pedro Ventura (3 semanas)
    Hola Rebeca, Tan sólo se permite 1 dominio por cuenta.…

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
Una aplicación, multiples bases de datos CakePHP

Tengo que lanzar un web para varios países y aprovecharé la potencia de CakePHP para realizar una sola plataforma con...

Cerrar