¿Es posible enviar cookies desde un servidor de terceros al navegador utilizando CORS?

1

ACTUALIZADO DE LA ÚLTIMA PREGUNTA CON MÁS DETALLES

Estoy creando una aplicación javascript completa a partir de la API de Salesforce.com sin un script del lado del servidor que se alojará en el dominio de salesforce.com (https)

Esta aplicación debería poder otorgar acceso a múltiples archivos desde salesforce.com a cloudfront utilizando cookies firmadas de cloudfront .

Para hacer esto, he pensado en crear una función aws lambda expuesta como un servicio web desde la puerta de enlace api que generará y devolverá las cookies firmadas en un encabezado de respuesta HTTP a la aplicación js.

Luego, la aplicación salesforce js debería poder llamar a esta función para obtener las cookies firmadas y redirigir al usuario a la URL de contenido privado en la nube.

Hasta ahora, he construido un cubo s3 + una distribución frente a la nube + función lambda vinculada a una puerta de enlace api. Pero no puedo hacer que funcionen juntos y configurar las cookies firmadas en el navegador debido a las mismas políticas de origen de las cookies:

  • La función que genera la cookie está alojada en amazonws.com (Función Lambda)
  • La función que llama a la función amazonws.com está alojada en salesforce.com
  • salesforce.com hace un XHR request usando CORS a amazonws.com para obtener las cookies requeridas.
  • Para cada cookie devuelta, amazonws.com establece los atributos a continuación:
    • dominio = cloudfront.net ; ruta = /; seguro; httpOnly

Obtengo con éxito las cookies en el lado del cliente ( salesforce.com ) del lado del servidor ( amazonws.com ) leyendo el encabezado XHR HTTP Response .

Pero (y aquí es donde pasé las últimas 24 horas), las cookies no se configuran en la tienda de cookies del navegador en salesforce.com . Lo que significa que no están disponibles para solicitar recursos a cloudfront.net .

¿Crees que podría funcionar si mi función aws lambda estuviera en el mismo dominio que cloudfront.net para servir una cookie con domain = cloudfront.net:

  • awmazonws.com / myfunction se convertiría en cloudfront.net / myfunction

¿O hay alguna otra manera de hacer esto?

¡Muchas gracias por su apoyo!

    
pregunta Brice 16.08.2018 - 19:29
fuente

1 respuesta

1

El atributo domain para una cookie no se puede establecer en dominios arbitrarios. Si bien foo.example.com podría establecer una cookie en example.com , no pudo establecer una cookie en example.org ya que este es un dominio no relacionado. Desde MDN: Set-Cookie: Dominios no válidos :

  

El agente de usuario debe rechazar una cookie que pertenezca a un dominio que no incluya el servidor de origen.

En cuanto a cómo lograr lo que quieres: no está claro qué quieres lograr en primer lugar. Las cookies para cloudfront.com solo deben ser proporcionadas por el servidor cloudfront.com. Tal vez usted está tratando de hacer algo con las cookies donde las cookies nunca fueron diseñadas.

    
respondido por el Steffen Ullrich 16.08.2018 - 19:58
fuente

Lea otras preguntas en las etiquetas