Abmeldung als API-Gateway-Backend hinzufügen
Erfahren Sie, wie Sie ein Abmelde-Backend mit API Gateway definieren.
Eine allgemeine Anforderung besteht darin, dass APIs API-Clients die Möglichkeit bieten, sich sauber abzumelden, indem sie Zugriffstoken entziehen und möglicherweise andere URLs aufrufen, um zusätzliche Aufgaben nach der Abmeldung auszuführen. Mit API Gateway können Sie Abmelde-Backends definieren, um diese Funktionalität bereitzustellen, wenn Sie eine Tokenauthentifizierungs-Policy OAuth 2.0 für ein API-Deployment verwenden. Anforderungen an das Abmelde-Backend können optional eine URL nach der Abmeldung als Wert eines Abfrageparameters namens postLogoutUrl
enthalten.
Wenn Sie eine OAuth 2.0-Tokenauthentifizierungs-Policy definieren, können Sie optional einen Pfad zum Abmelde-Backend (Abmeldepfad) angeben, um Zugriffstoken im Falle eines Authentifizierungsfehlers zu widerrufen. Siehe Token validieren, um Authentifizierung und Autorisierung zu API-Deployments hinzuzufügen.
Die Definition des Abmelde-Backends umfasst optional:
- Eine Liste der zulässigen URLs nach der Abmeldung, an die eine Anforderung umgeleitet werden kann, um Zugriffstoken zu entziehen. Wenn der Abfrageparameter
postLogoutUrl
in der Anforderung enthalten ist, muss sein Wert eine dieser URLs sein. Die URLs in der Liste können absolute Pfade oder relative Pfade sein, und die URLs können Kontextvariablen enthalten. Wenn Sie einen relativen Pfad angeben (d.h. zu einer anderen Route im API-Deployment), müssen sowohl das API-Deployment als auch die Route anonymen Zugriff zulassen. Wenn Sie nicht explizit eine oder mehrere URLs in die Liste aufnehmen, ist jede Post-Logout-URL zulässig. - Daten, die an Abmelde-URLs übergeben werden, wenn die Anforderung umgeleitet wird, als Wert des Abfrageparameters
state
. Die Daten können nur Kontextvariablen (nicht statische Werte) enthalten.
Beim Empfang einer Anforderung an den Abmeldepfad von einem API-Client prüft das API-Gateway, ob der API-Client authentifiziert ist, um das Abmelde-Backend aufzurufen, prüft, ob eine in der Anforderung enthaltene Post-Logout-URL zulässig ist, und entfernt alle gespeicherten Informationen zur Session des API-Clients (z.B. in Cookies). Angenommen, die Post-Logout-URL ist zulässig. Was als Nächstes geschieht, hängt davon ab, ob der API-Client authentifiziert ist und ob die zuvor gecachte Antwort von der Discovery-URL, die in der Tokenauthentifizierungs-Policy OAuth 2.0 angegeben ist, einen Endpunkt für die Endsession bereitgestellt hat:
- Wenn der API-Client nicht authentifiziert ist, leitet das API-Gateway die Abmeldeanforderung an die URL nach der Abmeldung um.
- Wenn der API-Client authentifiziert wurde, die Tokenauthentifizierungs-Policy OAuth 2.0 jedoch keinen Endpunkt für die Endsession bereitstellte, leitet das API-Gateway die Abmeldeanforderung an die Post-Logout-URL um und übergibt alle Statusinformationen, die in der Definition des Abmelde-Backends angegeben sind.
- Wenn der API-Client authentifiziert ist und die Tokenauthentifizierungs-Policy OAuth 2.0 einen Endpunkt für die Endsession bereitgestellt hat, leitet das API-Gateway die Abmeldeanforderung an diesen Endpunkt der Endsession um und übergibt die Post-Logout-URL sowie alle in der Definition des Abmelde-Backends angegebenen Statusinformationen. In diesem Fall ist der Identitätsprovider dafür verantwortlich, die Anforderung an die URL nach der Abmeldung umzuleiten.
Sie können ein Abmelde-Backend zu einer API-Deployment-Spezifikation hinzufügen, indem Sie:
- die Konsole verwenden
- eine JSON-Datei bearbeiten
Mit der Konsole Abmelde-Backends zu einer API-Deployment-Spezifikation hinzufügen
So fügen Sie mit der Konsole Abmelde-Backends zu einer API-Deployment-Spezifikation hinzu:
-
Erstellen oder aktualisieren Sie ein API-Deployment mit der Konsole, wählen Sie die Option Völlig neu aus, und geben Sie auf der Seite Basisinformationen Details ein.
Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployment in einem API-Gateway bereitstellen und API-Gateway aktualisieren.
-
Geben Sie auf der Seite Authentifizierung die Authentifizierungsoptionen an.
Weitere Informationen zu Authentifizierungsoptionen finden Sie unter Hinzufügen von Authentifizierung und Autorisierung zu API-Deployments.
-
Erstellen Sie auf der Seite Routen eine neue Route, und geben Sie Folgendes an:
-
Pfad: Einen Pfad zum Backend-Service für API-Aufrufe, die die aufgeführten Methoden verwenden. Beachten Sie, dass der von Ihnen angegebene Routenpfad:
- relativ zum Deployment-Pfadpräfix ist (siehe API durch das Erstellen eines API-Deployments in einem API-Gateway bereitstellen)
- einen Schrägstrich ( / ) vorangestellt haben muss. Es kann nur ein einzelner Schrägstrich verwendet werden
- mehrere Schrägstriche enthalten (sofern diese nicht aufeinander folgen) und mit einem Schrägstrich enden kann
- alphanumerische Zeichen in Großbuchstaben und Kleinbuchstaben enthalten kann
- die folgenden Sonderzeichen enthalten kann:
$ - _ . + ! * ' ( ) , % ; : @ & =
- Parameter und Platzhalter enthalten kann (siehe Pfadparameter und Platzhalter zu Routenpfaden hinzufügen)
- Methoden: Eine oder mehrere Methoden, die vom Backend-Service akzeptiert werden. Bei Abmelde-Backends wird nur
GET
akzeptiert. - Backend-Typ: Den Typ des Backend-Service als
Logout
. - Zulässige URIs nach der Abmeldung: (optional) Eine Liste mit mindestens einer zulässigen URL, zu der eine Abmeldeanforderung umgeleitet werden kann, um Token zu entziehen. Die URLs in der Liste können absolute Pfade oder relative Pfade sein, und die URLs können Kontextvariablen enthalten. Beispiel:
["https://${request.header[tenant-id].page.html}", "https://fixed-path.page.html",
."/logout_html"
]Beachten Sie dabei Folgendes:
- Eine Post-Logout-URL kann in eine Anforderung an das Abmelde-Backend als Wert eines Abfrageparameters mit dem Namen
postLogoutUrl
aufgenommen werden. - Wenn Sie einen relativen Pfad angeben (d.h. zu einer anderen Route im API-Deployment), müssen sowohl das API-Deployment als auch die Route anonymen Zugriff zulassen.
- Wenn Sie nicht explizit eine oder mehrere URLs in die Liste aufnehmen, ist jede Post-Logout-URL zulässig.
- Eine Post-Logout-URL kann in eine Anforderung an das Abmelde-Backend als Wert eines Abfrageparameters mit dem Namen
- Status nach Abmeldung: (Optional) Daten, die übergeben werden, wenn eine Abmeldeanforderung an einen Sessionendpunkt und/oder eine Post-Logout-URL umgeleitet wird. Die Daten können nur Kontextvariablen (nicht statische Werte) enthalten. Beispiel:
request.query[region]
Die Daten werden als Wert des Abfrageparameters
state
übergeben.
-
- (Optional) Wählen Sie Weitere Route aus, um Details zusätzlicher Routen einzugeben.
- Wählen Sie Weiter aus, um die Details zu prüfen, die Sie für das API-Deployment eingegeben haben.
- Wählen Sie Erstellen oder Änderungen speichern aus, um das API-Deployment zu erstellen oder zu aktualisieren.
- (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).
JSON-Datei zum Hinzufügen von Abmelde-Backends zu einer API-Deployment-Spezifikation bearbeiten
So fügen Sie Abmelde-Backends zu einer API-Deployment-Spezifikation in einer JSON-Datei hinzu:
-
Bearbeiten Sie mit Ihrem bevorzugten JSON-Editor die vorhandene API-Deploymentspezifikation, der Sie ein Abmelde-Backend hinzufügen möchten, oder erstellen Sie eine neue API-Deploymentspezifikation (siehe API-Deploymentspezifikation erstellen).
Beispiel: Die folgende grundlegende API-Deployment-Spezifikation definiert eine einfache serverlose "Hello World"-Funktion in Oracle Functions als einzelnes Backend:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
-
Fügen Sie im
routes
-Abschnitt einen neuen Abschnitt für ein Abmelde-Backend ein.{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } }, { "path": "<logout-route-path>", "methods": ["<method-list>"], "backend": { "type": "OAUTH2_LOGOUT", "allowedPostLogoutUris": ["<url>", "<url"], "postLogoutState": "<logout-data>" } } ] }
Dabei gilt:
-
<logout-route-path>
gibt einen Pfad für Aufrufe mit den aufgelisteten Methoden zum Abmelde-Backend an. Beachten Sie, dass der von Ihnen angegebene Routenpfad:- relativ zum Deployment-Pfadpräfix ist (siehe API durch das Erstellen eines API-Deployments in einem API-Gateway bereitstellen)
- einen Schrägstrich ( / ) vorangestellt haben muss. Es kann nur ein einzelner Schrägstrich verwendet werden
- mehrere Schrägstriche enthalten (sofern diese nicht aufeinander folgen) und mit einem Schrägstrich enden kann
- alphanumerische Zeichen in Großbuchstaben und Kleinbuchstaben enthalten kann
- die folgenden Sonderzeichen enthalten kann:
$ - _ . + ! * ' ( ) , % ; : @ & =
-
Parameter und Platzhalter enthalten kann (siehe Pfadparameter und Platzhalter zu Routenpfaden hinzufügen)
<method-list>
gibt eine oder mehrere Methoden, die vom Abmelde-Backend akzeptiert werden, durch Komma getrennt an. Im Fall von Abmelde-Backends wird nurGET
akzeptiert."type": "OAUTH2_LOGOUT"
gibt an, dass das Backend ein Abmelde-Backend ist.-
"allowedPostLogoutUris": ["<url>", "<url>"]
gibt optional eine Liste mit mindestens einer zulässigen URL an, an die eine Abmeldeanforderung umgeleitet werden kann, um Token zu widerrufen. Die URLs in der Liste können absolute Pfade oder relative Pfade sein, und die URLs können Kontextvariablen enthalten. Beispiel:["https://${request.header[tenant-id].page.html}", "https://fixed-path.page.html",
."/logout_html"
]Beachten Sie dabei Folgendes:
- Eine Post-Logout-URL kann in eine Anforderung an das Abmelde-Backend als Wert eines Abfrageparameters mit dem Namen
postLogoutUrl
aufgenommen werden. - Wenn Sie einen relativen Pfad angeben (d.h. zu einer anderen Route im API-Deployment), müssen sowohl das API-Deployment als auch die Route anonymen Zugriff zulassen.
- Wenn Sie nicht explizit eine oder mehrere URLs in die Liste aufnehmen, ist jede Post-Logout-URL zulässig.
- Eine Post-Logout-URL kann in eine Anforderung an das Abmelde-Backend als Wert eines Abfrageparameters mit dem Namen
-
"postLogoutState": "<logout-data>"
gibt optional Daten an, die übergeben werden sollen, wenn eine Abmeldeanforderung an einen Endpunkt der Endsession und/oder eine URL nach der Abmeldung umgeleitet wird. Die Daten können nur Kontextvariablen (nicht statische Werte) enthalten. Beispiel:request.query[region]
Die Daten werden als Wert des Abfrageparameters
state
übergeben.
In diesem Beispiel kann eine Anforderung an das Backend
/logout
eine der fürallowedPostLogoutUris
angegebenen URLs als Wert des AbfrageparameterspostLogoutUrl
enthalten. Wenn die URL nach der Abmeldung aufgerufen wird, wird der Wert der Kontextvariablenrequest.query[region]
an die URL übergeben. Beachten Sie, dass in diesem Beispiel einer derallowedPostLogoutUris
-Werte ("/logout_html"
) ein relativer Pfad zum Standardantwort-Backend/logout_html
in demselben API-Deployment ist. Da es sich um einen relativen Pfad zu einer anderen Route in demselben API-Deployment handelt, muss das/logout_html
-Backend eine Autorisierungs-Policy vom TypANONYMOUS
enthalten, wie hier gezeigt.{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } }, { "path": "/logout", "methods": ["GET"], "backend": { "type": "OAUTH2_LOGOUT", "allowedPostLogoutUris": ["https://${request.header[tenant-id].page.html}", "/logout_html"], "postLogoutState": "request.query[region]" } }, { "path": "/logout_html", "methods": ["GET"], "backend": { "type": "STOCK_RESPONSE_BACKEND", "body": "Token could not be revoked." }, "requestPolicies": { "authorization": { "type": "ANONYMOUS" } } } ] }
-
- Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
-
Verwenden Sie die API-Deployment-Spezifikation, wenn Sie ein API-Deployment wie folgt erstellen oder aktualisieren:
- Durch Angabe der JSON-Datei in der Konsole bei Auswahl der Option Vorhandene API hochladen
- Durch Angabe der JSON-Datei in einer Anforderung an die REST-API von API-Gateway
Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployment in einem API-Gateway bereitstellen und API-Gateway aktualisieren.
- (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).