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
usandoCORS
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!