Utiliser CORS
CORS (Cross-Origin Resource Sharing) est un protocole basé sur un en-tête qui permet à JavaScript d'effectuer des demandes en votre nom pour accéder aux ressources d'un autre domaine. Configurez Cloud Gate de sorte qu'il active CORS et applique les paramètres CORS pour Cloud Gate en cours d'exécution dans la passerelle d'application ou les domaines d'identité IAM.
CORS aide à empêcher JavaScript (planté sur un site par des attaquants, par exemple, en utilisant des publicités) de faire des demandes AJAX en votre nom. Les demandes frauduleuses d'AJAX pourraient retirer de l'argent de votre banque ou faire des achats à votre nom sur un site d'achat en ligne. Ces demandes peuvent aboutir si vous disposez actuellement d'une session active avec ces sites. CORS stipule que si un serveur ne répond pas avec l'ensemble correct d'en-têtes de réponse, le navigateur n'autorise pas JavaScript à voir (ou à accéder) la réponse.
- domain : par exemple,
site1.oraclecloud.com
appelleoracle.com
- sous-domaine : par exemple,
site1.oraclecloud.com
appellesite7.oraclecloud.com
- port : par exemple,
site1.oraclecloud.com
appellesite1.oraclecloud.com:3030
- protocole : par exemple,
https://site1.oraclecloud.com
appellehttp://site1.oraclecloud.com
Une demande CORS se présente sous deux formes : une demande CORS simple ou une demande CORS de pré-vol.
Demande CORS simple
- Il s'agit de l'une des méthodes suivantes :
GET
POST
HEAD
- Les en-têtes HTTP autorisés pouvant être ajoutés manuellement à la demande CORS simple sont les suivants :
Accept
Accept-Language
Content-Language
Content-Type
DPR
Downlink
Save-Data
Viewport-Width
Width
- Le paramètre
Content-Type
, s'il est défini, doit être :application/x-www-form-urlencoded
multipart/form-data
text/plain
Demande CORS de pré-vol
Si la demande JavaScript ne répond pas aux caractéristiques d'une demande CORS simple, une demande CORS de pré-vérification est envoyée à la ressource située dans l'autre domaine.
La demande CORS de pré-vérification vérifie si la demande réelle peut être envoyée à cette ressource en incluant des en-têtes HTTP spécifiques dans la demande contenant les données qui ont entraîné le déclenchement du flux de demande de pré-vérification. En d'autres termes, si la demande HTTP JavaScript a spécifié des méthodes/en-têtes dans la demande HTTP qui nécessitaient une demande CORS de pré-vérification, la demande CORS de pré-vérification interroge la ressource pour ces méthodes/en-têtes afin de voir si la ressource accepte une telle demande interdomaine.
Propriétés et attributs de configuration CORS Cloud Gate
Propriété CORS | Description |
---|---|
cloudGateCorsEnabled |
Propriété booléenne permettant d'activer la prise en charge CORS de Cloud Gate pour la location. Ce paramètre doit être configuré sur : L'activation de l'indicateur La valeur par défaut est Meilleures pratiques. Configurez |
cloudGateCorsAllowedOrigins |
La propriété est un tableau de chaînes qui contient la liste des origines CORS autorisées. La valeur par défaut est un tableau vide. Chaque demande CORS indique sa source ou son origine dans l'en-tête de demande d'origine. La valeur de l'en-tête d'origine correspond à cette liste. Si l'origine est mise en correspondance, Cloud Gate ajoute les en-têtes CORS appropriés à sa réponse. Si l'origine n'est pas mise en correspondance, Cloud Gate ne renvoie aucun en-tête de réponse CORS, ce qui entraîne le rejet de la réponse par le navigateur. Valeurs CORS autorisées dans le modèle d'entrée :
Exemples :
|
cloudGateCorsAllowNullOrigin |
Propriété booléenne permettant de prendre en charge les scénarios dans lesquels le navigateur envoie une origine "NULL". Ce paramètre doit être configuré pour : La valeur par défaut est Une origine "NULL" est envoyée si la requête CORS provient d'un fichier sur l'ordinateur d'un utilisateur ou si un serveur redirige vers un autre serveur en réponse à une requête CORS. Le navigateur passe une origine "nulle" lorsqu'il considère l'origine "obtenue". Pour augmenter la sécurité, par défaut, les origines "null" ne sont pas autorisées. Certaines origines "NULL" sont valides. Les applications qui tirent parti de la connexion au flux de navigateur OpenID Connect (OIDC) du domaine d'identité verront des origines "null" envoyées à leurs noeuds Cloud Gate. Lorsque Cloud Gate est redirigé vers l'adresse d'autorisation du domaine d'identité pour démarrer la connexion au navigateur OIDC et que le domaine d'identité redirige la demande vers Cloud Gate, l'origine est NULL. |
cloudGateCorsMaxAge |
Entier indiquant le nombre de secondes pendant lesquelles le client (navigateur) peut mettre en cache une réponse CORS de pré-vérification. |
cloudGateCorsExposedHeaders |
La propriété est un tableau de chaînes qui répertorie les en-têtes de réponse pouvant être ajoutés à l'en-tête de réponse La valeur par défaut est un tableau vide. |
Configuration des paramètres CORS Cloud Gate dans les domaines d'identité
Cloud Gate exige que vous configuriez les paramètres suivants dans les domaines d'identité pour la prise en charge de CORS (Cross-Origin Resource Sharing).
isCorsAllowed
du document de stratégie de niveau Web était configuré sur true
, Cloud Gate autoriserait le pré-vérification des demandes CORS vers les applications protégées. La version minimale requise de Cloud Gate est la version 21.1.2.
Utilisez l'adresse /admin/v1/Settings/Settings
pour configurer les paramètres CORS. La demande est une opération patch
. Pour plus d'informations, reportez-vous à Mise à jour d'un paramètre.
Workflows de demande CORS simples et en amont
Présentation des workflows de demande CORS (Cross-Origin Resource Sharing).
Workflow de demande CORS simple
- La demande est identifiée comme une demande CORS par la présence de l'en-tête de demande d'origine.
- Si nécessaire (par exemple, expiration du cache), les paramètres CORS de Cloud Gate sont téléchargés à partir des domaines d'identité dans IAM.
- Cloud Gate traite la demande, soit en rejetant la demande, soit en l'autorisant à passer au serveur d'applications en amont.
- Avant qu'une réponse ne soit renvoyée, Cloud Gate applique CORS tel que défini par les paramètres CORS de Cloud Gate.
- Cloud Gate garantit toujours que l'en-tête de réponse variable fait partie de la réponse et contient l'en-tête d'origine. Cela se produit même pour les demandes non CORS.
- Si
cloudGateCorsEnabled
est défini surfalse
, le traitement s'arrête ici. La réponse est renvoyée telle quelle. - Cloud Gate vérifie que l'origine est autorisée, à l'aide de la liste configurée des origines autorisées.
Si l'origine n'est pas autorisée, tous les en-têtes de réponse CORS pris en charge sont supprimés de la réponse et le traitement se termine.
- L'en-tête de réponse
Access-Control-Allow-Origin
est ajouté et configuré sur la valeur de l'en-tête de demande d'origine. - L'en-tête de réponse
Access-Control-Allow-Credentials
est ajouté et configuré surtrue
. - La valeur
Access-Control-Expose-Headers
est configurée à l'intersection entre la valeurcloudGateCorsExposedHeaders
et la liste des en-têtes renvoyés dans la réponse. - Les éléments
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
etAccess-Control-Max-Age Response Headers
sont enlevés de la réponse.
- Cloud Gate renvoie sa réponse.
Cloud Gate écrase les en-têtes Access-Control-Allow-Origin
et Access-Control-Allow-Credentials Response
s'ils sont définis par le serveur d'applications en amont.
Pré-vérification du workflow de demande CORS
- La demande est identifiée comme une demande CORS par la présence de l'en-tête de demande d'origine.
- Si nécessaire (par exemple, expiration du cache), les paramètres CORS de Cloud Gate sont téléchargés à partir des domaines d'identité dans IAM.
- La demande est identifiée comme une demande CORS de pré-vérification par la méthode OPTIONS et l'en-tête de demande
Access-Control-Request-Method
, en plus de l'en-tête de demande d'origine. - Si
cloudGateCorsEnabled
est défini surtrue
, la demande est autorisée à passer par le serveur d'applications en amont, ce qui permet aux applications d'implémenter CORS.Si
cloudGateCorsEnabled
est défini surfalse
, l'ancien paramètre de stratégie de niveau WebisCorsAllowed
est toujours respecté, juste plus tard dans le traitement de la demande. - Avant que la réponse ne soit renvoyée par Cloud Gate, CORS est appliqué comme défini par les paramètres CORS de Cloud Gate.
- Cloud Gate garantit toujours que l'en-tête de réponse Varier fait partie de la réponse et contient l'en-tête "Origine". Cela se produit même pour les demandes nonCORS.
- Si
cloudGateCorsEnabled
est défini surfalse
, le traitement s'arrête ici. La réponse est renvoyée telle quelle. - Cloud Gate vérifie que l'origine est autorisée, à l'aide de la liste configurée des origines autorisées.
Si l'origine n'est pas autorisée, tous les en-têtes de réponse CORS pris en charge sont supprimés de la réponse et le traitement se termine.
- L'en-tête de réponse
Access-Control-Allow-Origin
est ajouté et configuré sur la valeur de l'en-tête de demande d'origine. - L'en-tête de réponse
Access-Control-Allow-Credentials
est ajouté et configuré surtrue
. - Si le serveur d'applications en amont n'a pas ajouté l'en-tête de réponse
Access-Control-Allow-Methods
, Cloud Gate construit sa valeur comme suit :- Si l'en-tête Autoriser la réponse est inclus dans la réponse, Cloud Gate utilise sa valeur.
- Si l'en-tête de demande
Access-Control-Request-Method
est trouvé dans la demande, Cloud Gate utilise sa valeur.
- Si le serveur d'applications en amont n'a pas ajouté l'en-tête de réponse
Access-Control-Allow-Headers
, Cloud Gate utilise la valeur de l'en-tête de demandeAccess-Control-Request-Headers
dans la demande, si elle est présente. - Si
cloudGateCorsMaxAge
est configuré avec une valeur supérieure à zéro, l'en-tête de réponseAccess-Control-Max-Age
est ajouté et configuré avec la valeur d'âge maximale. Si la valeurcloudGateCorsMaxAge
est inférieure ou égale à zéro, aucune action n'est effectuée pour l'en-tête de réponseAccess-Control-Max-Age
. - L'en-tête de réponse
Access-Control-Expose-Headers
est enlevé. Elle ne s'applique pas aux réponses de pré-vol.
- Cloud Gate renvoie sa réponse.