Mit CORS arbeiten
Cross-Origin Resource Sharing (CORS) ist ein Header-basiertes Protokoll, mit dem JavaScript in Ihrem Namen Anforderungen für den Zugriff auf Ressourcen in einer anderen Domain stellen kann. Konfigurieren Sie Cloud Gate so, dass es CORS aktiviert und CORS-Einstellungen für Cloud Gate erzwingt, das in App-Gateway- oder IAM-Identitätsdomains ausgeführt wird.
CORS verhindert, dass Schurken JavaScript (die von Angreifern auf eine Website gepflanzt werden, z. B. durch die Verwendung von Werbung), AJAX-Anfragen in Ihrem Namen stellen. Betrügerische AJAX-Anfragen könnten Geld von Ihrer Bank abheben oder Einkäufe in Ihrem Namen auf einer Online-Shopping-Website tätigen. Diese Anforderungen können erfolgreich sein, wenn Sie derzeit eine aktive Session mit diesen Sites haben. CORS schreibt vor, dass der Browser es JavaScript nicht erlaubt, die Antwort anzuzeigen (oder darauf zuzugreifen), wenn ein Server nicht mit den richtigen Antwortheadern antwortet.
- Domain - Beispiel:
site1.oraclecloud.com
ruftoracle.com
auf - Subdomain - Beispiel:
site1.oraclecloud.com
ruftsite7.oraclecloud.com
auf - Port - Beispiel:
site1.oraclecloud.com
ruftsite1.oraclecloud.com:3030
auf - Protokoll - Beispiel:
https://site1.oraclecloud.com
rufthttp://site1.oraclecloud.com
auf
Eine CORS-Anfrage gibt es in zwei Formen: eine einfache CORS-Anfrage oder eine Preflight-CORS-Anfrage.
Einfache CORS-Anforderung
- Die Methode ist eine der folgenden:
GET
POST
HEAD
- Folgende HTTP-Header können der einfachen CORS-Anforderung manuell hinzugefügt werden:
Accept
Accept-Language
Content-Language
Content-Type
DPR
Downlink
Save-Data
Viewport-Width
Width
Content-Type
muss, sofern festgelegt, Folgendes sein:application/x-www-form-urlencoded
multipart/form-data
text/plain
Preflight-CORS-Anforderung
Wenn die Anforderung JavaScript die Eigenschaften einer einfachen CORS-Anforderung nicht erfüllt, wird eine Preflight-CORS-Anforderung an die Ressource in der anderen Domain gesendet.
Die Preflight-CORS-Anforderung testet, ob die tatsächliche Anforderung an diese Ressource gesendet werden kann, indem bestimmte HTTP-Header in die Anforderung mit den Daten aufgenommen werden, die zum Auslösen des Preflight-Anforderungsflusses geführt haben. Mit anderen Worten: Wenn die HTTP-Anforderung JavaScript einige Methoden/Header in der HTTP-Anforderung angegeben hat, für die eine Preflight-CORS-Anforderung erforderlich ist, fragt die Preflight-CORS-Anforderung die Ressource nach diesen Methoden/Headern ab, um zu prüfen, ob die Ressource eine solche domainübergreifende Anforderung akzeptiert.
Cloud Gate - CORS-Konfigurationseigenschaften und -attribute
CORS-Eigenschaft | Beschreibung |
---|---|
cloudGateCorsEnabled |
Boolesche Eigenschaft zum Aktivieren der Cloud Gate-CORS-Unterstützung für den Mandanten. Diese Einstellung muss wie folgt konfiguriert werden: Wenn Sie das Flag Der Standard ist Best Practice. Konfigurieren Sie |
cloudGateCorsAllowedOrigins |
Die Eigenschaft ist ein Zeichenfolgenarray, das die Liste der zulässigen CORS-Ursprünge enthält. Der Standardwert ist ein leeres Array. Jede CORS-Anforderung gibt ihre Quelle oder ihren Ursprung im Header der Ursprungsanforderung an. Der Wert des Ursprungsheaders wird mit dieser Liste abgeglichen. Wenn der Ursprung übereinstimmt, fügt Cloud Gate der Antwort die entsprechenden CORS-Header hinzu. Wenn der Ursprung nicht übereinstimmt, gibt Cloud Gate keine CORS-Antwortheader zurück. Dadurch wird die Antwort vom Browser abgelehnt. Zulässige CORS-Werte in der Eingabevorlage:
Beispiele:
|
cloudGateCorsAllowNullOrigin |
Boolesche Eigenschaft zur Unterstützung von Szenarios, bei denen der Browser einen "Null"-Ursprung sendet. Diese Einstellung muss wie folgt konfiguriert werden: Der Standard ist Ein "Null"-Ursprung wird gesendet, wenn die CORS-Anforderung von einer Datei auf dem Computer eines Benutzers stammt oder wenn ein Server als Antwort auf eine CORS-Anforderung zu einem anderen Server umleitet. Der Browser übergibt einen "Null"-Ursprung, wenn er den Ursprung als "gepflegt" betrachtet. Zur Erhöhung der Sicherheit sind standardmäßig "null" Ursprünge nicht zulässig. Einige "null" Ursprünge sind gültig. Für Anwendungen, die den OpenID Connect-(OIDC-)Browserablauf der Identitätsdomain nutzen, werden "null" Ursprünge angezeigt, die an ihre Cloud Gate-Knoten gesendet werden. Wenn Cloud Gate zur Identitätsdomain umleitet, autorisieren Sie den Endpunkt, die OIDC-Browseranmeldung zu starten, und wenn die Identitätsdomain die Anforderung an Cloud Gate zurückleitet, ist der Ursprung "null". |
cloudGateCorsMaxAge |
Eine Ganzzahl, die angibt, wie viele Sekunden der Client (Browser) eine Preflight-CORS-Antwort cachen kann. |
cloudGateCorsExposedHeaders |
Die Eigenschaft ist ein Zeichenfolgenarray, das die Antwortheader auflistet, die dem Antwortheader Der Standardwert ist ein leeres Array. |
Cloud Gate-CORS-Einstellungen in Identitätsdomains konfigurieren
Cloud Gate erfordert, dass Sie die folgenden Einstellungen in Identitätsdomains für die Unterstützung von Cross-Origin Resource Sharing (CORS) konfigurieren.
isCorsAllowed
im Web Tier Policy-Dokument mit true
konfiguriert wurde, lässt Cloud Gate CORS-Anforderungen vor dem Flug bis zu geschützten Anwendungen zu. Die mindestens erforderliche Cloud Gate-Version ist 21.1.2.
Verwenden Sie den Endpunkt /admin/v1/Settings/Settings
, um die CORS-Einstellungen zu konfigurieren. Die Anforderung ist ein patch
-Vorgang. Weitere Informationen finden Sie unter Einstellung aktualisieren.
Einfache und Preflight-CORS-Anforderungsworkflows
Überblick über Anforderungsworkflows für Cross-Origin Resource Sharing (CORS).
Einfacher CORS-Anforderungsworkflow
- Die Anforderung wird durch Vorhandensein des Ursprungsanforderungsheaders als CORS-Anforderung identifiziert.
- Falls erforderlich (z.B. Cacheablauf), werden die Cloud Gate-CORS-Einstellungen aus Identitätsdomains in IAM heruntergeladen.
- Cloud Gate verarbeitet die Anforderung. Die Anforderung wird entweder abgelehnt oder an den Upstreamanwendungsserver weitergeleitet.
- Bevor eine Antwort zurückgegeben wird, erzwingt Cloud Gate CORS gemäß den Cloud Gate-CORS-Einstellungen.
- Cloud Gate stellt immer sicher, dass der Header für variable Antworten Teil der Antwort ist - und den Header "Ursprung" enthält. Dies gilt auch für Nicht-CORS-Anforderungen.
- Wenn
cloudGateCorsEnabled
den Wertfalse
hat, wird die Verarbeitung hier gestoppt. Die Antwort wird unverändert zurückgegeben. - Cloud Gate prüft, ob der Ursprung zulässig ist. Dabei wird die konfigurierte Liste der zulässigen Ursprünge verwendet.
Wenn der Ursprung nicht zulässig ist, werden alle unterstützten CORS-Antwortheader von der Antwort entfernt, und die Verarbeitung endet.
- Der
Access-Control-Allow-Origin
-Antwortheader wird dem Wert des Ursprungsanforderungsheaders hinzugefügt und konfiguriert. - Der
Access-Control-Allow-Credentials
-Antwortheader wird zutrue
hinzugefügt und konfiguriert. - Die
Access-Control-Expose-Headers
ist für die Schnittmenge zwischen dem WertcloudGateCorsExposedHeaders
und der Liste der Header konfiguriert, die in der Antwort zurückgegeben werden. - Die
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
undAccess-Control-Max-Age Response Headers
werden aus der Antwort entfernt.
- Cloud Gate gibt seine Antwort zurück.
Cloud Gate überschreibt die Header Access-Control-Allow-Origin
und Access-Control-Allow-Credentials Response
, wenn sie vom Upstreamanwendungsserver festgelegt werden.
CORS-Anforderungsworkflow vor dem Start
- Die Anforderung wird durch Vorhandensein des Ursprungsanforderungsheaders als CORS-Anforderung identifiziert.
- Falls erforderlich (z.B. Cacheablauf), werden die Cloud Gate-CORS-Einstellungen aus Identitätsdomains in IAM heruntergeladen.
- Die Anforderung wird von der OPTIONS-Methode und dem Anforderungsheader
Access-Control-Request-Method
zusätzlich zum Anforderungsheader für den Ursprung als Preflight-CORS-Anforderung identifiziert. - Wenn
cloudGateCorsEnabled
true
ist, kann die Anforderung an den Upstreamanwendungsserver weitergeleitet werden, damit Anwendungen CORS implementieren können.Wenn
cloudGateCorsEnabled
false
ist, wird die alteisCorsAllowed
Web Tier Policy-Einstellung weiterhin berücksichtigt - erst später in der Anforderungsverarbeitung. - Bevor die Antwort von Cloud Gate zurückgegeben wird, wird CORS gemäß den Cloud Gate-CORS-Einstellungen durchgesetzt.
- Cloud Gate stellt immer sicher, dass der Header "Variable Antwort" Teil der Antwort ist - und enthält den Header "Ursprung". Dies tritt auch bei nonCORS-Anforderungen auf.
- Wenn
cloudGateCorsEnabled
den Wertfalse
hat, wird die Verarbeitung hier gestoppt. Die Antwort wird unverändert zurückgegeben. - Cloud Gate prüft, ob der Ursprung zulässig ist. Dabei wird die konfigurierte Liste der zulässigen Ursprünge verwendet.
Wenn der Ursprung nicht zulässig ist, werden alle unterstützten CORS-Antwortheader von der Antwort entfernt, und die Verarbeitung endet.
- Der
Access-Control-Allow-Origin
-Antwortheader wird dem Wert des Ursprungsanforderungsheaders hinzugefügt und konfiguriert. - Der
Access-Control-Allow-Credentials
-Antwortheader wird zutrue
hinzugefügt und konfiguriert. - Wenn der Upstreamanwendungsserver den
Access-Control-Allow-Methods
-Antwortheader nicht hinzugefügt hat, erstellt Cloud Gate seinen Wert wie folgt:- Wenn der Antwortheader zulässig in der Antwort enthalten ist, verwendet Cloud Gate seinen Wert.
- Wenn der
Access-Control-Request-Method
-Anforderungsheader in der Anforderung gefunden wird, verwendet Cloud Gate seinen Wert.
- Wenn der Upstreamanwendungsserver den
Access-Control-Allow-Headers
-Antwortheader nicht hinzugefügt hat, verwendet Cloud Gate den Wert desAccess-Control-Request-Headers
-Anforderungsheaders in der Anforderung, sofern vorhanden. - Wenn
cloudGateCorsMaxAge
mit einem Wert größer als Null konfiguriert ist, wird derAccess-Control-Max-Age
-Antwortheader zum Höchstalterwert hinzugefügt und konfiguriert. Wenn dercloudGateCorsMaxAge
-Wert null oder weniger ist, wird keine Aktion für denAccess-Control-Max-Age
-Antwortheader ausgeführt. - Der
Access-Control-Expose-Headers
-Antwortheader wird entfernt. Dies gilt nicht für Preflight-Antworten.
- Cloud Gate gibt seine Antwort zurück.