Comunicarse entre dos sitios, ambos con SSL

3

Ahora tengo dos sitios web: el sitio A y B, ambos con certificado SSL, y tienen exactamente los mismos usuarios. Entonces, cuando un usuario inicia sesión en el sitio A y hace clic en el enlace al sitio B, quiero que inicie sesión automáticamente en el sitio B.

Será fácil si solo uso POST y GET regulares para pasar el ID de usuario del sitio A al sitio B (más específicamente estoy usando POST y GET de PHP). Pero me pregunto si se realizará bajo la protección de SSL de forma automática o debo hacer algo más complicado para garantizar la seguridad.

    
pregunta John 02.10.2013 - 21:13
fuente

1 respuesta

1

Un usuario está "conectado" al sitio A porque el servidor A considera que las solicitudes de ese usuario están "vinculadas más allá de toda duda razonable" con la identidad del usuario. Hay varios métodos por los cuales se puede obtener tal resultado; pero por lo general, se jugó algún protocolo de autenticación (el usuario muestra su contraseña) y luego se mantiene algún tipo de enlace, de modo que para cada solicitud subsiguiente, el servidor sepa que es "del mismo tipo que anteriormente".

Hay varios métodos para mantener este enlace. Los principales son los siguientes:

  • Cada solicitud del navegador del usuario es un GET o POST que incluye como parámetro adicional (oculto) algún token de autenticación. El token fue creado por el servidor cuando se ejecutó el protocolo de autenticación, y cada página enviada por el servidor lo contiene.

  • El servidor envió un token de autenticación al cliente, que se devolverá al servidor con cada solicitud, como cookie .

  • El servidor realiza un seguimiento del cliente a través de la sesión SSL (cuando el cliente vuelve a conectarse al servidor, tanto el cliente como el servidor acuerdan reutilizar los elementos criptográficos de un protocolo de enlace anterior, porque ambos recuerdan las claves correspondientes).

El tercer método es específico de SSL; de lo contrario, el hecho de que utilice HTTP o HTTPS es irrelevante (excepto que con HTTP simple, el resultado no sería seguro , pero ese es otro debate).

Las

cookies HTTP se adjuntan a un nombre del sitio . Entonces, si la autenticación en el sitio A funciona de esa manera, entonces el navegador no enviará la cookie al sitio B, y la autenticación no se transportará automáticamente del sitio A al sitio B.

El primer método, sin embargo, puede funcionar. Es "suficiente" que los tokens de autenticación creados por el sitio A sean reconocidos por el sitio B. Pero, por supuesto, no quiere que otras personas puedan producir "tokens válidos" de la nada. Así que esto implica alguna forma de comunicación entre los servidores A y B (A le dice a B: "hey, acabo de crear este token que autentica a ese usuario) o criptografía ( Los tokens creados por A deben contener el nombre del usuario y alguna forma de firma o MAC del servidor A, verificable por el servidor B) .

    
respondido por el Thomas Pornin 02.10.2013 - 21:51
fuente

Lea otras preguntas en las etiquetas