¿Cómo funciona la autenticación externa?

7

Por ejemplo, puedo iniciar sesión en sitios web de stackexchange iniciando sesión en sitios web externos como OpenID, Yahoo, etc. ¿Cómo funciona esto? ¿Cómo se comunican los sitios web (SE y Yahoo, por ejemplo)? ¿Cómo funciona Yahoo! ¿Sabes que es realmente stackexchange? ¿Cómo sabe stackexchange que he iniciado sesión correctamente en Yahoo! y es realmente Yahoo !? ¿Stackexchange sabe si me desconecto de Yahoo! ¿Después de iniciar sesión aquí?

    
pregunta Fitri 17.06.2011 - 17:24
fuente

2 respuestas

11

En su ejemplo particular, StackExchange usa OpenID. OpenID admite la idea de proveedores de identidad: Yahoo es un proveedor de identidad, al igual que Google, MyOpenID, etc. Para iniciar sesión, StackExchange le pregunta qué proveedor desea utilizar y luego lo redirige a esa página de inicio de sesión de proveedores.

Una vez que se autentica contra el proveedor, el proveedor lo redirige a StackExchange con un token. Este token contiene su información de identidad. Esto generalmente se denomina autenticación basada en reclamaciones, donde una reclamación es una pieza de información sobre una identidad, por ejemplo. su nombre y las reclamaciones se agrupan en un token.

La comunicación se realiza a través de redirecciones HTTP 302 y HTTP POST, todo a través del navegador del usuario. Yahoo conoce su StackExchange porque la URL de Yahoo contiene un parámetro que dice que es StackExchange. StackExchange sabe que el token de identidad es de Yahoo porque está firmado por Yahoo.

Consulte aquí: enlace

Y aquí: enlace

    
respondido por el Steve 17.06.2011 - 17:54
fuente
6

En relación con el token de identidad , puede adoptar varias formas. En un caso particular (que sé que soporta OpenID) el token es efectivamente un conjunto de parámetros de URL. Proporcionan una serie de cosas, incluyendo:

  1. Identificando de forma exclusiva quién eres (por ejemplo, tu OpenID / URL)
  2. Una firma. Este es un hash criptográfico, creado a partir de la información de identidad anterior y un secreto preestablecido conocido solo por su proveedor de OpenID y StackExchange.

Si cambia la información de identificación, rompe la firma y StackExchange se negará a iniciar sesión. Tampoco puede volver a crear una firma desde cero, ya que no conoce el secreto compartido.

Otra forma de token, con la que estoy más familiarizado, es una larga cadena pseudoaleatoria. Su navegador regresa del proveedor de identidad con esto en la URL. Luego, el sitio del cliente (por ejemplo, StackExchange) verifica el token directamente contra el proveedor de identidad; el proveedor busca en su lista de tokens emitidos recientemente y, si lo encuentra, devuelve al cliente su información de identificación única.

En cuanto al cierre de sesión / cierre de sesión único , no, StackExchange no sabe si se desconecta de su servicio OpenID. Del mismo modo, su proveedor de OpenID no recibe notificación si se desconecta de StackExchange.

Algunos sistemas (Google mail / docs / calendar es un buen ejemplo) en su lugar, utilizan un enfoque que lo desconecta del sitio / servicio que está utilizando y su servicio de proveedor de identificación. Sin embargo, todos los demás servicios no se ven afectados. Por ejemplo:

  1. Inicia sesión en Gmail
  2. Enlace a Google Docs (no tendrá que iniciar sesión nuevamente)
  3. Salir de Gmail (su sesión de Google Docs no se verá afectada)
  4. El próximo servicio de Google al que vaya insistirá en que vuelva a iniciar sesión

Referencias:

respondido por el JohnNKing 23.06.2011 - 15:40
fuente

Lea otras preguntas en las etiquetas