Trabajar con CORS
El uso compartido de recursos entre orígenes (CORS) es un protocolo basado en cabeceras que permite a JavaScript realizar solicitudes en su nombre para acceder a recursos en otro dominio. Configure Cloud Gate para que active CORS y aplique la configuración de CORS para Cloud Gate que se ejecuta en el gateway de aplicación o los dominios de identidad de IAM.
CORS ayuda a evitar que JavaScript (plantado en un sitio por atacantes, por ejemplo, mediante anuncios) realice solicitudes AJAX en su nombre. Las solicitudes fraudulentas de AJAX podrían retirar dinero de su banco o realizar compras a su nombre en un sitio de compras en línea. Estas solicitudes podrían tener éxito si actualmente tiene una sesión activa con esos sitios. CORS estipula que si un servidor no responde con el conjunto correcto de encabezados de respuesta, el navegador no permite que JavaScript vea (o acceda) a la respuesta.
- dominio: por ejemplo,
site1.oraclecloud.comllama aoracle.com - subdominio: por ejemplo,
site1.oraclecloud.comllama asite7.oraclecloud.com - port: por ejemplo,
site1.oraclecloud.comllama asite1.oraclecloud.com:3030 - protocolo: por ejemplo,
https://site1.oraclecloud.comllama ahttp://site1.oraclecloud.com
Una solicitud de CORS viene en dos formas: una solicitud de CORS simple o una solicitud de CORS de Preflight.
Solicitud CORS simple
- El método es uno de los siguientes:
GETPOSTHEAD
- Las cabeceras HTTP permitidas que se pueden agregar manualmente a la solicitud CORS simple son:
AcceptAccept-LanguageContent-LanguageContent-TypeDPRDownlinkSave-DataViewport-WidthWidth
- Si se define,
Content-Typedebe ser:application/x-www-form-urlencodedmultipart/form-datatext/plain
Solicitud CORS de Preflight
Si la solicitud JavaScript no cumple las características de una solicitud CORS simple, se envía una solicitud CORS de Preflight al recurso ubicado en el otro dominio.
La solicitud CORS de Preflight prueba si la solicitud real se puede enviar a ese recurso mediante la inclusión de cabeceras HTTP específicas en la solicitud que contienen los datos que han provocado que se dispare el flujo de solicitud de preflight. En otras palabras, si la solicitud HTTP JavaScript especificó algunos métodos/cabeceras en la solicitud HTTP que necesitaban una solicitud CORS de Preflight, la solicitud CORS de Preflight consulta al recurso para esos métodos/cabeceras para ver si el recurso acepta dicha solicitud entre dominios.
Propiedades y atributos de configuración de CORS de Cloud Gate
| Propiedad de CORS | Descripción |
|---|---|
cloudGateCorsEnabled |
Propiedad booleana para activar el soporte de Cloud Gate CORS para el arrendamiento. Este valor se debe configurar en: Al activar el indicador El valor por defecto es Mejor práctica. Configure |
cloudGateCorsAllowedOrigins |
La propiedad es una matriz de cadenas que contiene la lista de orígenes de CORS permitidos. El valor predeterminado es una matriz vacía. Cada solicitud de CORS especifica su origen en la cabecera de solicitud de origen. El valor de la cabecera de origen coincide con esta lista. Si el origen coincide, Cloud Gate agrega las cabeceras de CORS adecuadas a su respuesta. Si el origen no coincide, Cloud Gate no devuelve ninguna cabecera de respuesta de CORS, lo que hace que el explorador rechace la respuesta. Valores de CORS permitidos en la plantilla de entrada:
Ejemplos:
|
cloudGateCorsAllowNullOrigin |
Propiedad booleana para admitir escenarios en los que el explorador envía un origen "nulo". Este valor se debe configurar en: El valor por defecto es Se envía un origen "nulo" si la solicitud CORS proviene de un archivo en el equipo de un usuario o si un servidor redirige a otro servidor en respuesta a una solicitud CORS. El navegador pasa un Origen "nulo" cuando considera que el Origen está "manchado". Para aumentar la seguridad, por defecto, no se permiten orígenes "nulos". Algunos orígenes "nulos" son válidos. Las aplicaciones que aprovechen el inicio de sesión de flujo de explorador de Connect (OIDC) del dominio de identidad OpenID verán orígenes "nulos" enviados a sus nodos de Cloud Gate. Cuando Cloud Gate se redirige al punto final de autorización del dominio de identidad para iniciar la conexión del explorador de OIDC y cuando el dominio de identidad redirige la solicitud de nuevo a Cloud Gate, el origen será "nulo". |
cloudGateCorsMaxAge |
Entero que especifica el número de segundos que el cliente (explorador) puede almacenar en caché una respuesta CORS de preflight. |
cloudGateCorsExposedHeaders |
La propiedad es una matriz de cadenas que muestra las cabeceras de respuesta que se pueden agregar a la cabecera de respuesta El valor predeterminado es una matriz vacía. |
Configuración de valores de CORS de Cloud Gate en dominios de identidad
Cloud Gate requiere que configure los siguientes valores en los dominios de identidad para el soporte de uso compartido de recursos de origen cruzado (CORS).
isCorsAllowed del documento de política de nivel web se ha configurado en true, Cloud Gate permitiría realizar el vuelo previo de solicitudes CORS a través de aplicaciones protegidas. La versión mínima de Cloud Gate necesaria es 21.1.2.
Utilice el punto final /admin/v1/Settings/Settings para configurar los valores de CORS. La solicitud es una operación patch. Consulte Actualización de un valor para obtener más información.
Flujos de Trabajo de Solicitud de CORS Sencillos y Previos
Visión general de los flujos de trabajo de solicitud de uso compartido de recursos de origen cruzado (CORS).
Flujo de Trabajo de Solicitud de CORS Simple
- La solicitud se identifica como solicitud de CORS por la presencia de la cabecera de solicitud de origen.
- Si es necesario (por ejemplo, caducidad de caché), la configuración de CORS de Cloud Gate se descarga de los dominios de identidad en IAM.
- Cloud Gate procesa la solicitud, ya sea rechazando la solicitud o permitiéndola pasar al servidor de aplicaciones ascendente.
- Antes de que se devuelva una respuesta, Cloud Gate aplica CORS según lo definido por la configuración de CORS de Cloud Gate.
- Cloud Gate siempre garantiza que la cabecera de respuesta variable forme parte de la respuesta y contenga la cabecera "Origin". Esto ocurre incluso para solicitudes que no son de CORS.
- Si
cloudGateCorsEnabledesfalse, el procesamiento se detiene aquí. La Respuesta se devuelve tal cual. - Cloud Gate verifica que el origen está permitido, mediante la lista configurada de orígenes permitidos.
Si no se permite el origen, todas las cabeceras de respuesta de CORS soportadas se eliminan de la respuesta y finaliza el procesamiento.
- La cabecera de respuesta
Access-Control-Allow-Originse agrega y configura al valor de la cabecera de solicitud de origen. - La cabecera de respuesta
Access-Control-Allow-Credentialsse agrega y configura entrue. Access-Control-Expose-Headersse configura para la intersección entre el valorcloudGateCorsExposedHeadersy la lista de cabeceras que se devuelven en la respuesta.- Los valores
Access-Control-Allow-Methods,Access-Control-Allow-HeadersyAccess-Control-Max-Age Response Headersse eliminan de la respuesta.
- Cloud Gate devuelve su respuesta.
Cloud Gate sobrescribe las cabeceras Access-Control-Allow-Origin y Access-Control-Allow-Credentials Response si lo define el servidor de aplicaciones ascendente.
Flujo de trabajo de solicitud de CORS de Preflight
- La solicitud se identifica como solicitud de CORS por la presencia de la cabecera de solicitud de origen.
- Si es necesario (por ejemplo, caducidad de caché), la configuración de CORS de Cloud Gate se descarga de los dominios de identidad en IAM.
- La solicitud se identifica como solicitud CORS de preflight mediante el método OPTIONS y la cabecera de solicitud
Access-Control-Request-Method, además de la cabecera de solicitud de origen. - Si
cloudGateCorsEnabledestrue, se permite que la solicitud pase al servidor de aplicaciones ascendente para permitir que las aplicaciones implementen CORS.Si
cloudGateCorsEnabledesfalse, se sigue respetando la antigua configuración de política de nivel webisCorsAllowed, justo más tarde en el procesamiento de la solicitud. - Antes de que la respuesta se devuelva desde Cloud Gate, CORS se aplica según lo definido por la configuración de CORS de Cloud Gate.
- Cloud Gate siempre garantiza que la cabecera de respuesta variable forme parte de la respuesta y contenga la cabecera "Origin". Esto ocurre incluso para las solicitudes nonCORS.
- Si
cloudGateCorsEnabledesfalse, el procesamiento se detiene aquí. La Respuesta se devuelve tal cual. - Cloud Gate verifica que el origen está permitido, mediante la lista configurada de orígenes permitidos.
Si no se permite el origen, todas las cabeceras de respuesta de CORS soportadas se eliminan de la respuesta y finaliza el procesamiento.
- La cabecera de respuesta
Access-Control-Allow-Originse agrega y configura al valor de la cabecera de solicitud de origen. - La cabecera de respuesta
Access-Control-Allow-Credentialsse agrega y configura entrue. - Si el servidor de aplicaciones ascendente no ha agregado la cabecera de respuesta
Access-Control-Allow-Methods, Cloud Gate crea su valor de la siguiente manera:- Si la cabecera Permitir respuesta se incluye en la respuesta, Cloud Gate utiliza su valor.
- Si se encuentra la cabecera de solicitud
Access-Control-Request-Methoden la solicitud, Cloud Gate utiliza su valor.
- Si el servidor de aplicaciones ascendente no ha agregado la cabecera de respuesta
Access-Control-Allow-Headers, Cloud Gate utiliza el valor de la cabecera de solicitudAccess-Control-Request-Headersen la solicitud si está presente. - Si
cloudGateCorsMaxAgeestá configurado con un valor mayor que cero, la cabecera de respuestaAccess-Control-Max-Agese agrega y se configura con el valor de antigüedad máximo. Si el valorcloudGateCorsMaxAgees cero o inferior, no se realiza ninguna acción para la cabecera de respuestaAccess-Control-Max-Age. - Se ha eliminado la cabecera de respuesta
Access-Control-Expose-Headers. No se aplica a las respuestas de verificación previa.
- Cloud Gate devuelve su respuesta.