2012-07-11 10 views
18

No entiendo cómo Google alcanzar el siguiente mecanismo de inicio de sesión único:automática de cookies de sesión único en varios dominios - como Google

  1. inicio sesión en Gmail, por ejemplo, (supongo que esto crea una cookie de withmy autorización)
  2. abro una nueva pestaña y tipo directo la url de "youtube"
  3. Entonces entro en youtube en el sistema.

¿Cómo se puede detectar este segundo sitio que ya he estado en un curso. Son dominios diferentes. Youtube no puede leer la cookie de Gmail.

Todas las soluciones que he leído sobre el inicio de sesión único no permiten esto. El cliente siempre solicita permiso para una aplicación de inicio de sesión central. En mi ejemplo, YouTube no sabe que soy el mismo usuario que inició sesión en Gmail (en realidad sí lo sé, pero no entiendo cómo)

Tenga en cuenta que escribo la url de "youtube" a mano. No hago clic en el ícono de youtube de la barra de herramientas superior de gmail (en ese caso, gmail puede pasar algunos parámetros de autenticación a través de la url, por ejemplo).

+0

¿Quizás la respuesta está en esta pregunta SO? http://stackoverflow.com/questions/44509/single-sign-on-across-multiple-domains – mxro

+1

¿Pudiste averiguar cómo lo hacen? Estoy perplejo porque he estado buscando firebug y si he iniciado sesión en 'google.com', yendo a' youtube.com' nunca redirige a algo como 'sso.google.com'. De alguna manera mágicamente sabe que estás conectado. – F21

+0

¿Lo encontraste cómo funciona? – chanchal118

Respuesta

0

Por lo que recuerdo, si no me equivoco, las cookies contienen un campo específico que contiene el dominio que puede leer y obtener dicha cookie. Esto se hace para evitar que ciertos sitios web lean toda su lista de cookies y hagan su propio negocio. Debería poder ver qué tipo de sitios pueden 'ver' su cookie de Gmail.

corrígeme si estoy equivocado, esto debe compilar la respuesta dada en relación con el SID y el ejemplo Gmail, YouTube ..

5

las galletas se establecen en los dominios spesific ejemplo:

setcookie(name,value,expire,path,domain) 

whene estás conectó por Gmail, antes mail.google.com, que haya sido redirigido a accounts.google.com luego a mail.google.com por lo que las galletas están en 'accounts.google.com' demasiado

in this case the domain is : accounts.google.com 
the path is : "/" 'this is the home path 

cuando solicite www.youtube.com luego haga clic en 'conexión' solicita accounts.google.com rápido, por lo que no puede ver esta redirección y comprueba si tiene cookies en accounts.google.com si es así, comprueba si las cookies son válidas y no expiradas o no prohibidas por el usuario o ... entonces se le redirige a www.youtube.com/signin?loginthisSession=Sessionid 'esta solicitud countains el valor de la galleta de sessionid atrapado de las galletas de accounts.google.com

último paso' www.youtube.com' los registros de usted y establecer su propia cookie en el dominio 'www.youtube.com 'y guardarlos

por lo que el truco está en el 302 http Redirect

+1

¿Cómo se implementa la redirección sin que lo veamos en Firebug? – chanchal118

+0

¿Es así como realmente funciona? Incluir el ID de la sesión en la URL generalmente se considera inseguro (sí, _es_ está encriptado si se usa HTTPS, pero puede ser registrado por servidores, proxies, historial del navegador o filtrado por el encabezado de referencia de HTTP). – SilverlightFox

+0

@ chanchal118 favor abre los ojos la captura de pantalla o sólo lo hacen a través de proxy/HttpFox y verá http://i.imgur.com/aDIcYJb.png – K3rnel31

3

Las cookies y el almacenamiento local se pueden compartir entre dominios usando un dominio intermedio. En la página de inicio está incrustado un "iframe", que accede a las cookies y envía mensajes a la principal.

mail.google.com y youtube.com pueden compartir las cookies usando accounts.google.es. Abra Chrome->Inspect->Resources->Local storag e y verá en accounts.google.com el token de autenticación en formato JWT.

He detallado los pasos técnicos en esta respuesta: https://stackoverflow.com/a/37565692/6371459. También consulte https://github.com/Aralink/ssojwt para ver una implementación de un inicio de sesión único usando JWT en un dominio central

Cuestiones relacionadas