Utilizzo di CORS
CORS (Cross-Origin Resource Sharing) è un protocollo basato su 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 nei domini di Identity Gateway applicazioni o IAM.
CORS aiuta a evitare che il rogue JavaScript (piantato 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 in 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.com
chiamaoracle.com
- sottodominio: ad esempio,
site1.oraclecloud.com
chiamasite7.oraclecloud.com
- porta: ad esempio,
site1.oraclecloud.com
chiamasite1.oraclecloud.com:3030
- protocollo - ad esempio,
https://site1.oraclecloud.com
chiamahttp://site1.oraclecloud.com
Una richiesta CORS è disponibile in due forme: una semplice richiesta CORS o una richiesta CORS Preflight.
Richiesta CORS semplice
- Il metodo è uno dei seguenti:
GET
POST
HEAD
- Le intestazioni HTTP consentite che è possibile aggiungere manualmente alla richiesta CORS semplice sono:
Accept
Accept-Language
Content-Language
Content-Type
DPR
Downlink
Save-Data
Viewport-Width
Width
- Il valore
Content-Type
, se impostato, deve essere:application/x-www-form-urlencoded
multipart/form-data
text/plain
Richiesta CORS preliminare
Se la richiesta JavaScript non soddisfa le caratteristiche di una richiesta CORS semplice, viene inviata una richiesta CORS preliminare alla risorsa presente nell'altro dominio.
La richiesta CORS 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 Preflight. In altre parole, se la richiesta HTTP JavaScript ha specificato alcuni metodi o intestazioni nella richiesta HTTP che richiedevano 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 tra domini.
Proprietà e attributi di configurazione CORS Cloud Gate
Proprietà CORS | descrizione; |
---|---|
cloudGateCorsEnabled |
Proprietà booleana per attivare il supporto CORS Cloud Gate per la tenancy. Questa impostazione deve essere configurata in: L'abilitazione del flag L'impostazione predefinita è Best practice. Configurare |
cloudGateCorsAllowedOrigins |
La proprietà è un array di stringhe che contiene la lista 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 l'origine viene abbinata, Cloud Gate aggiunge le intestazioni CORS appropriate alla risposta. 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 che supporta gli scenari in cui il browser invia un'origine "null". Questa impostazione deve essere configurata in: L'impostazione predefinita è Un'origine "null" viene inviata se la richiesta CORS proviene da un file sul computer di un utente o se un server si reindirizza a un altro server in risposta a una richiesta CORS. Il browser passa un'origine "null" quando considera l'origine "colta". Per aumentare la sicurezza, per impostazione predefinita, le origini "nulle" non sono consentite. Alcune origini "nulle" sono valide. Le applicazioni che utilizzano il login al flusso del browser OpenID Connect (OIDC) del dominio di Identity vedranno le origini "nulle" inviate ai rispettivi nodi Cloud Gate. Quando Cloud Gate si reindirizza all'endpoint di autorizzazione del dominio di Identity per avviare il login al browser OIDC e quando il dominio di Identity reindirizza la richiesta a Cloud Gate, l'origine sarà "null". |
cloudGateCorsMaxAge |
Numero intero che specifica il numero di secondi in cui il client (browser) può inserire nella cache una risposta CORS Preflight. |
cloudGateCorsExposedHeaders |
La proprietà è un array di stringhe che elenca le intestazioni di risposta che è possibile aggiungere all'intestazione di risposta L'impostazione predefinita è un array vuoto. |
Configurazione delle impostazioni CORS Cloud Gate nei domini di Identity
Cloud Gate richiede la configurazione delle impostazioni seguenti nei domini di Identity per il supporto CORS (Cross-Origin Resource Sharing).
isCorsAllowed
nel documento Criterio livello Web è stata configurata su true
, Cloud Gate consentirebbe la verifica 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 Aggiornare un'impostazione.
Flussi di lavoro di richiesta CORS semplici e in esecuzione anticipata
Panoramica dei flussi di lavoro delle richieste CORS (Cross-Origin Resource Sharing).
Flusso di lavoro semplice richiesta CORS
- La richiesta viene identificata come richiesta CORS dalla presenza dell'intestazione della richiesta di origine.
- Se necessario (ad esempio, scadenza della cache), le impostazioni CORS di Cloud Gate vengono scaricate dai domini di Identity in IAM.
- Cloud Gate elabora la richiesta, rifiutandola o consentendola al server applicazioni a monte.
- Prima che una risposta venga restituita, Cloud Gate applica CORS secondo quanto definito dalle impostazioni CORS di Cloud Gate.
- Cloud Gate verifica sempre che l'intestazione Vary Response 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-Origin
viene aggiunta e configurata al valore dell'intestazione della richiesta di origine. - L'intestazione di risposta
Access-Control-Allow-Credentials
viene aggiunta e configurata intrue
. - Il valore
Access-Control-Expose-Headers
è configurato per l'intersezione tra il valorecloudGateCorsExposedHeaders
e la lista di intestazioni restituite nella risposta. - I valori
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
eAccess-Control-Max-Age Response Headers
vengono rimossi dalla risposta.
- Cloud Gate restituisce la risposta.
Cloud Gate sovrascrive le intestazioni Access-Control-Allow-Origin
e Access-Control-Allow-Credentials Response
se impostato dall'Application Server a monte.
Flusso di lavoro richiesta CORS preliminare
- La richiesta viene identificata come richiesta CORS dalla presenza dell'intestazione della richiesta di origine.
- Se necessario (ad esempio, scadenza della cache), le impostazioni CORS di Cloud Gate vengono scaricate dai domini di Identity in IAM.
- La richiesta viene identificata come richiesta CORS preliminare dal metodo OPTIONS e dall'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
, la vecchia impostazione dei criteri livello WebisCorsAllowed
viene ancora rispettata, subito dopo nell'elaborazione della richiesta. - Prima che la risposta venga restituita da Cloud Gate, CORS viene applicato in base alle impostazioni CORS di Cloud Gate.
- Cloud Gate verifica sempre che l'intestazione Vary Response faccia parte della risposta e contenga l'intestazione "Origine". Ciò si verifica 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-Origin
viene aggiunta e configurata al valore dell'intestazione della richiesta di origine. - L'intestazione di risposta
Access-Control-Allow-Credentials
viene aggiunta e configurata intrue
. - Se l'Application Server a monte non ha aggiunto l'intestazione di risposta
Access-Control-Allow-Methods
, Cloud Gate costruisce il valore nel modo seguente:- Se l'intestazione Consenti risposta è inclusa nella risposta, Cloud Gate utilizza il relativo valore.
- Se l'intestazione della richiesta
Access-Control-Request-Method
viene trovata nella richiesta, Cloud Gate utilizza il relativo valore.
- Se l'Application Server a monte non ha aggiunto l'intestazione di risposta
Access-Control-Allow-Headers
, Cloud Gate utilizza il valore dell'intestazione di richiestaAccess-Control-Request-Headers
nella richiesta, se presente. - Se
cloudGateCorsMaxAge
è configurato su un valore maggiore di zero, l'intestazione di rispostaAccess-Control-Max-Age
viene aggiunta e configurata per il valore di durata massimo. Se il valorecloudGateCorsMaxAge
è uguale o inferiore a zero, non viene eseguita alcuna azione per l'intestazione di rispostaAccess-Control-Max-Age
. - L'intestazione di risposta
Access-Control-Expose-Headers
viene rimossa. Non si applica alle risposte pre-volo.
- Cloud Gate restituisce la risposta.