Utilizzo di CORS
Cross-Origin Resource Sharing (CORS) è un protocollo basato sull'intestazione che consente a JavaScript di effettuare richieste per conto dell'utente per accedere alle risorse in un altro dominio. Configurare Cloud Gate in modo che abiliti CORS e applichi le impostazioni CORS per Cloud Gate in esecuzione nel gateway applicazioni o nei domini di identità IAM.
CORS aiuta a evitare che JavaScript (impiantato in un sito da aggressori, ad esempio utilizzando annunci pubblicitari) faccia richieste AJAX per tuo conto. Le richieste fraudolente di AJAX potrebbero prelevare denaro dalla tua banca o effettuare acquisti a tuo nome su un sito di shopping online. Queste richieste potrebbero avere esito positivo se si dispone attualmente di una sessione attiva con tali siti. CORS stabilisce che se un server non risponde con il set corretto di intestazioni di risposta, il browser non consente a JavaScript di visualizzare (o accedere) la risposta.
- dominio - ad esempio,
site1.oraclecloud.comchiamaoracle.com - sottodominio: ad esempio,
site1.oraclecloud.comchiamasite7.oraclecloud.com - porta, ad esempio
site1.oraclecloud.comchiamasite1.oraclecloud.com:3030 - protocollo - ad esempio,
https://site1.oraclecloud.comchiamahttp://site1.oraclecloud.com
Una richiesta CORS è disponibile in due forme: una richiesta CORS semplice o una richiesta CORS preflight.
Richiesta CORS semplice
- Il metodo è uno dei seguenti:
GETPOSTHEAD
- Le intestazioni HTTP consentite che possono essere aggiunte manualmente alla richiesta CORS semplice sono:
AcceptAccept-LanguageContent-LanguageContent-TypeDPRDownlinkSave-DataViewport-WidthWidth
- Il valore
Content-Type, se impostato, deve essere:application/x-www-form-urlencodedmultipart/form-datatext/plain
Richiesta CORS preflight
Se la richiesta JavaScript non soddisfa le caratteristiche di una richiesta CORS semplice, viene inviata una richiesta CORS preflight alla risorsa situata nell'altro dominio.
La richiesta CORS di preflight verifica se la richiesta effettiva può essere inviata a tale risorsa includendo intestazioni HTTP specifiche nella richiesta contenente i dati che hanno determinato l'attivazione del flusso di richieste di preflight. In altre parole, se la richiesta HTTP JavaScript specifica alcuni metodi o intestazioni nella richiesta HTTP che richiede una richiesta CORS Preflight, la richiesta CORS Preflight esegue una query sulla risorsa per tali metodi o intestazioni per verificare se la risorsa accetta tale richiesta cross-domain.
Proprietà e attributi di configurazione CORS di Cloud Gate
| Proprietà CORS | Descrizione |
|---|---|
cloudGateCorsEnabled |
Proprietà booleana per attivare il supporto CORS Cloud Gate per la tenancy. Questa impostazione deve essere configurata su: L'abilitazione del flag L'impostazione predefinita è Best practice. Configurare |
cloudGateCorsAllowedOrigins |
La proprietà è un array di stringhe che contiene l'elenco delle origini CORS consentite. L'impostazione predefinita è un array vuoto. Ogni richiesta CORS specifica l'origine o l'origine nell'intestazione della richiesta di origine. Il valore dell'intestazione di origine corrisponde a questo elenco. Se viene trovata una corrispondenza con l'origine, Cloud Gate aggiunge alla risposta le intestazioni CORS appropriate. Se l'origine non corrisponde, Cloud Gate non restituisce alcuna intestazione di risposta CORS, causando il rifiuto della risposta da parte del browser. Valori CORS consentiti nel modello di inserimento:
Esempi:
|
cloudGateCorsAllowNullOrigin |
Proprietà booleana per supportare gli scenari in cui il browser invia un'origine "nulla". Questa impostazione deve essere configurata su: L'impostazione predefinita è Viene inviata un'origine "nulla" se la richiesta CORS proviene da un file sul computer di un utente o se un server reindirizza a un altro server in risposta a una richiesta CORS. Il browser passa un'origine "nulla" quando considera l'origine "tainted". Per aumentare la sicurezza, per impostazione predefinita, non sono consentite origini "nulle". Alcune origini "nulle" sono valide. Le applicazioni che utilizzano il login al flusso del browser OpenID Connect (OIDC) del dominio di Identity visualizzeranno origini "nulle" inviate ai rispettivi nodi Cloud Gate. Quando Cloud Gate effettua il reindirizzamento al dominio di Identity, autorizza l'endpoint ad avviare il login del browser OIDC e quando il dominio di Identity reindirizza la richiesta a Cloud Gate, l'origine sarà "nulla". |
cloudGateCorsMaxAge |
Numero intero che specifica il numero di secondi in cui il client (browser) può inserire nella cache una risposta CORS di preflight. |
cloudGateCorsExposedHeaders |
La proprietà è un array di stringhe che elenca le intestazioni di risposta che possono essere aggiunte all'intestazione di risposta L'impostazione predefinita è un array vuoto. |
Configurazione delle impostazioni CORS di Cloud Gate nei domini di Identity
Cloud Gate richiede di configurare le seguenti impostazioni nei domini di Identity per il supporto CORS (Cross-Origin Resource Sharing).
isCorsAllowed nel documento Criterio livello Web è stata configurata su true, Cloud Gate consente l'esecuzione preliminare delle richieste CORS alle applicazioni protette. La versione minima richiesta di Cloud Gate è la 21.1.2.
Utilizzare l'endpoint /admin/v1/Settings/Settings per configurare le impostazioni CORS. La richiesta è un'operazione patch. Per ulteriori informazioni, vedere Aggiorna un'impostazione.
Flussi di lavoro delle richieste CORS semplici e preflight
Panoramica dei flussi di lavoro delle richieste CORS (Cross-Origin Resource Sharing).
Flusso di lavoro richiesta CORS semplice
- La richiesta viene identificata come richiesta CORS dalla presenza dell'intestazione della richiesta di origine.
- Se necessario, ad esempio la scadenza della cache, le impostazioni CORS di Cloud Gate vengono scaricate dai domini di Identity in IAM.
- Cloud Gate elabora la richiesta, rifiutando la richiesta o consentendo l'accesso al server applicazioni a monte.
- Prima che venga restituita una risposta, Cloud Gate applica CORS come definito dalle impostazioni CORS di Cloud Gate.
- Cloud Gate garantisce sempre che l'intestazione della risposta varia faccia parte della risposta e contenga l'intestazione "Origine". Ciò si verifica anche per le richieste non CORS.
- Se
cloudGateCorsEnabledèfalse, l'elaborazione viene interrotta qui. La Risposta viene restituita così com'è. - Cloud Gate verifica che l'origine sia consentita utilizzando la lista configurata di origini consentite.
Se l'origine non è consentita, tutte le intestazioni di risposta CORS supportate vengono eliminate dalla risposta e l'elaborazione termina.
- L'intestazione della risposta
Access-Control-Allow-Originviene aggiunta e configurata in base al valore dell'intestazione della richiesta di origine. - L'intestazione della risposta
Access-Control-Allow-Credentialsviene aggiunta e configurata intrue. Access-Control-Expose-Headersè configurato per l'intersezione tra il valorecloudGateCorsExposedHeaderse l'elenco delle intestazioni restituite nella risposta.Access-Control-Allow-Methods,Access-Control-Allow-HeaderseAccess-Control-Max-Age Response Headersvengono rimossi dalla risposta.
- Cloud Gate restituisce la sua risposta.
Cloud Gate sovrascrive le intestazioni Access-Control-Allow-Origin e Access-Control-Allow-Credentials Response se impostate dal server applicazioni a monte.
Flusso di lavoro richiesta CORS preflight
- La richiesta viene identificata come richiesta CORS dalla presenza dell'intestazione della richiesta di origine.
- Se necessario, ad esempio la scadenza della cache, le impostazioni CORS di Cloud Gate vengono scaricate dai domini di Identity in IAM.
- La richiesta viene identificata come richiesta CORS Preflight mediante il metodo OPTIONS e l'intestazione della richiesta
Access-Control-Request-Method, oltre all'intestazione della richiesta di origine. - Se
cloudGateCorsEnabledètrue, la richiesta può passare al server applicazioni a monte per consentire alle applicazioni di implementare CORS.Se
cloudGateCorsEnabledèfalse, l'impostazione precedente del criterio livello WebisCorsAllowedviene ancora rispettata, poco dopo nell'elaborazione della richiesta. - Prima che la risposta venga restituita da Cloud Gate, CORS viene applicato come definito dalle impostazioni CORS di Cloud Gate.
- Cloud Gate garantisce sempre che l'intestazione della risposta varia faccia parte della risposta e contenga l'intestazione "Origine". Ciò avviene anche per le richieste nonCORS.
- Se
cloudGateCorsEnabledèfalse, l'elaborazione viene interrotta qui. La Risposta viene restituita così com'è. - Cloud Gate verifica che l'origine sia consentita utilizzando la lista configurata di origini consentite.
Se l'origine non è consentita, tutte le intestazioni di risposta CORS supportate vengono eliminate dalla risposta e l'elaborazione termina.
- L'intestazione della risposta
Access-Control-Allow-Originviene aggiunta e configurata in base al valore dell'intestazione della richiesta di origine. - L'intestazione della risposta
Access-Control-Allow-Credentialsviene aggiunta e configurata intrue. - Se l'Application Server a monte non ha aggiunto l'intestazione della risposta
Access-Control-Allow-Methods, Cloud Gate ne costruisce il valore come indicato di seguito.- Se l'intestazione Consenti risposta è inclusa nella risposta, Cloud Gate ne utilizza il valore.
- Se l'intestazione della richiesta
Access-Control-Request-Methodviene trovata nella richiesta, Cloud Gate ne utilizza il valore.
- Se l'Application Server a monte non ha aggiunto l'intestazione della risposta
Access-Control-Allow-Headers, Cloud Gate utilizza il valore dell'intestazione della richiestaAccess-Control-Request-Headersnella richiesta, se presente. - Se
cloudGateCorsMaxAgeè configurato su un valore maggiore di zero, l'intestazione della rispostaAccess-Control-Max-Ageviene aggiunta e configurata sul valore dell'età massima. Se il valorecloudGateCorsMaxAgeè minore o uguale a zero, non viene eseguita alcuna azione per l'intestazione della rispostaAccess-Control-Max-Age. - L'intestazione della risposta
Access-Control-Expose-Headersè stata rimossa. Non si applica alle risposte pre-volo.
- Cloud Gate restituisce la sua risposta.