API-Gateway-Deployments erstellen
Mit Ihren Funktionen können Sie das systemeigene Authentifizierungsverfahren für die JWT-Validierung mit Oracle Identity Cloud Service integrieren und testen.
API-Gateway-Deployment mit nativer JWT-Validierung erstellen
Mit der nativen JWT-Validierungsfunktion für Oracle Cloud Infrastructure-Gateway können Sie eine auf Java Web Token (JWT)basierende Authentifizierungs-Policy für Ihr Deployment hinzufügen.
Mit diesem JWT-Typ können Sie die erforderlichen Daten angeben, um die Validierung des eingehenden Zugriffstokens (über Header oder Parameter) auszuführen. Die Policy benötigt die folgenden Informationen:
- Zulässige ausgebende Benutzer: Tokenaussteller. Es sind mehrere OAuth-Server verfügbar. In diesem Fall verwenden Sie jedoch
https://identity.oraclecloud.com/
. - Zielgruppen: Die Ressourcen, auf die für dieses Token zugegriffen werden kann.
- Public Keys: Das Json Web Key Set (JWKS), mit dem das Token innerhalb der ausgebenden Benutzer und Zielgruppen validiert werden soll. Zwei Arten von JWKS sind zulässig:
- Statische Schlüssel: Bei dieser Option müssen Sie die JWKS manuell mit dem JSON-Format angeben, das die erforderlichen Eigenschaften gemäß RFC 7517 Section 4 aufweisen muss.
- Remote-Schlüssel: Bei dieser Option müssen Sie eine URL angeben, aus der JWKS mit REST konsumiert werden können. Eine Einschränkung dieser Funktion besteht darin, dass die angegebene URL nicht geschützt werden muss, da diese Funktion derzeit die Möglichkeit zum Lesen geschützter URLs zum Abrufen der JWKS nicht unterstützt.
- Erweiterte Optionen:
- Max. Clow-Dauer in Sekunden: Wenn API-Gateway und der Identitätsprovider etwas unterschiedlich aufweisen, können Sie mit diesem Wert die Zeit für das Tokengültigkeitsfenster anpassen, um den Zeitpunkt zwischen den beiden Services auszurichten.
- Ansprüche: Damit prüfen Sie die Ansprüche, falls das eingehende Token erforderlich ist. Beispiel:
client_id
claim oderuser_id
claim.
Erstellen Sie einen neuen Deployment-Namen in Ihrem API-Gateway mit einer Route, um die in den vorherigen Schritten erstellte Funktion mit der Endpunkt- und JWT-Validierung zu erreichen. In diesem Beispiel hat das Deployment den Namen my_jwt_test
.
my_jwt_test
des API-Gateway-Deployments prüfen.
REST-Aufruf für Endpunkt testen
Um den neuen Endpunkt-REST-Aufruf zu testen, können Sie das Feature "Neues Zugriffstoken abrufen" von Postman verwenden.
Wenn Sie das generierte Token in den folgenden Schritten verwenden, können Sie Oracle Fusion Applications Cloud Service-Endpunkte nicht direkt erreichen, da das Token mit der Oracle Identity Cloud Service-App aus Oracle Visual Builder generiert wurde. Es ist jedoch nur möglich, Oracle Functions mit der aktuellen Konfiguration für die Bereiche zu erreichen, die Sie vorher eingerichtet haben. Wenn Sie zum Generieren des Tokens eine andere Oracle Identity Cloud Service-Anwendung verwenden und diese Anwendung nicht die Berechtigung zum Erreichen des Oracle Functions-Ressourcengeltungsbereichs besitzt, lässt API-Gateway die Anforderung nicht zu (sie gibt einen 401 Fehler zurück), da Sie die Zielgruppe der Oracle Functions Oracle Identity Cloud Service-Ressource hinzugefügt haben. Wenn Sie Claims Client-ID-Prüfungen hinzugefügt haben, stellt API-Gateway sicher, dass die Token nur mit den angegebenen Oracle Identity Cloud Service Apps client_ids übereinstimmen.
Verwenden Sie die folgenden Parameter zum Testen:
- Berechtigungstyp: Kennwortzugangsdaten - Dieser Berechtigungstyp stellt sicher, dass der angegebene Benutzername dem Subject im generierten Token entspricht.
- Zugriffstoken-URL: Ihre OAuth-URL der Oracle Identity Cloud Service-Instanz. Beispiel:
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
. - Benutzername: Ein Benutzer, der sowohl in Oracle Identity Cloud Service als auch in Oracle Fusion Applications Cloud Service mit den entsprechenden Berechtigungen in beiden Benutzern vorhanden ist.
- Kennwort: Geben Sie das Kennwort für diesen Benutzer ein.
- ClientId: Die ID der Oracle Identity Cloud Service Client Oracle Functions-Ressource, die mit Oracle Visual Builder verknüpft ist.
- ClientSecret: Das Client Secret der Oracle Identity Cloud Service App Client Oracle Functions-Ressource, die mit Oracle Visual Builder verknüpft ist
- Geltungsbereich: Dieser Geltungsbereich muss mit den angegebenen Ressourcen der Oracle Functions Oracle Identity Cloud Service-Anwendung übereinstimmen. Beispiel:
https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension
{
"principal": "mary.jane",
"gotPrincipalFrom": "BEARER",
"statusCode": "200",
"response": {
"items": [],
"count": 0,
"hasMore": false,
"limit": 25,
"offset": 0,
"links": [
{
"rel": "self",
"href": "https://myfusionservice.fa.dc1.oraclecloud.com:443/fscmRestApi/resources/11.13.18.05/expenses",
"name": "expenses",
"kind": "collection"
}
]
}
}
Optional API-Gateway-Deployment mit benutzerdefinierter Authentifizierung erstellen
Verwenden Sie diese Lösung, wenn Sie eine benutzerdefinierte Authentifizierungsfunktion verwenden möchten, um das Bearer-Token für eingehende Aufrufe an API-Gateway-Endpunkte zu validieren.
Dies ist die optionale Funktion, die Sie definiert haben, wenn Sie über den Abschnitt "Authentifizierungsfunktion in Oracle Cloud Infrastructure definieren" über die Schritte verfügen.
Das folgende Code-Snippet ist ein Beispiel für eine JSON-Datei der Oracle Cloud Infrastructure API-Deployment-Spezifikation, mit der Sie bereitstellen können, anstatt den Assistenten zu verwenden. Innerhalb dieser Datei wird Folgendes angezeigt:
- Zeilen 1bis8: Eine Authentifizierungsanforderungs-Policy. Diese Definition gibt an, dass für eine Anforderung in diesem Deployment zuerst diese Funktion (functionId) aufgerufen wird, tokenHeader übergeben wird und wenn "true" zurückgegeben wird, dann können Sie andernfalls mit einer nicht autorisierten HTTP-Nachricht antworten.
- Positionen 9-17: Eine CORS-Definition zur Verwaltung und Kontrolle des Cross-Origin Resource Sharing.
- Zeilen 18-43: Zwei URL-Einstiegspunkte/VERBs zu einzelnen Funktionen in FaaS.
{
"requestPolicies": {
"authentication": {
"type": "CUSTOM_AUTHENTICATION",
"isAnonymousAccessAllowed": true,
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx",
"tokenHeader": "Authorization"
}
"cors":{
"allowedOrigins": [<list-of-origins>],
"allowedMethods": [<list-of-methods>],
"allowedHeaders": [<list-of-implicit-headers>],
"exposedHeaders": [<list-of-exposed-headers>],
"isAllowCredentialsEnabled": <true|false>,
"maxAgeInSeconds": <seconds>
}
},
"routes": [
{
"path": "/opportunities",
"methods": [
"GET"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
},
{
"path": "/opportunities/{optyid}",
"methods": [
"PATCH"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
}
]
}
</seconds></true|false></list-of-exposed-headers></list-of-implicit-headers></list-of-methods></list-of-origins>