Crea distribuzioni gateway API
Grazie alle funzioni descritte, è possibile integrare e verificare il meccanismo di autenticazione nativo per la convalida JWT con Oracle Identity Cloud Service.
Crea distribuzione gateway API con convalida JWT nativa
Utilizzando la funzione di convalida JWT nativa del gateway Oracle Cloud Infrastructure, è possibile aggiungere un criterio di autenticazione basato su token Web Java (JWT) per la distribuzione.
Questo tipo JWT consente di specificare i dati richiesti per eseguire la convalida del token di accesso in entrata (tramite intestazione o parametro). Il criterio richiede le seguenti informazioni:
- Emittenti consentiti: istituti di emissione token. Vengono visualizzati diversi server OAuth, ma in questo caso verrà utilizzato
https://identity.oraclecloud.com/
. - Audience: le risorse a cui accedere per questo token.
- Chiavi pubbliche: il set di chiavi Web (JWKS) Json da utilizzare per convalidare il token, all'interno degli emittenti e delle audience. Sono consentiti due tipi di JWKS:
- Chiavi statiche: con questa opzione è necessario specificare manualmente JWKS utilizzando il formato JSON, che deve avere le proprietà richieste in base alla direttiva RFC 7517 Sezione 4.
- Chiavi remote: questa opzione consente di specificare un URL dal quale è possibile utilizzare JWKS mediante REST. Per limite di questa funzione si intende che l'URL specificato deve essere non protetto, poiché attualmente questa funzione non supporta la possibilità di leggere URL protetti per recuperare JWKS.
- Opzioni avanzate:
- Numero massimo di disallineamento, in secondi: se il gateway API e il provider di identità presentano alcune differenze nella tempificazione, questo valore consente di regolare il tempo della finestra di validità del token per tentare di allineare la tempificazione tra i due servizi.
- Richieste: per verificare le richieste di rimborso se è necessario il token in entrata. Ad esempio,
client_id
richiesta di rimborso ouser_id
.
Creare un nuovo nome di distribuzione nel gateway API con un instradamento per raggiungere la funzione creata nei passi precedenti utilizzando l'endpoint e la convalida JWT. In questo esempio, la distribuzione viene denominata my_jwt_test
.
my_jwt_test
di distribuzione del gateway API.
Test richiamo REST endpoint
Per verificare il nuovo richiamo REST dell'endpoint, è possibile utilizzare la funzione Ottieni nuovo token di accesso di Postman.
Tenere presente che se si utilizza il token generato nei passi riportati di seguito, non sarà possibile raggiungere direttamente gli endpoint Oracle Fusion Applications Cloud Service poiché il token è stato generato con l'applicazione Oracle Identity Cloud Service da Oracle Visual Builder e sarà possibile raggiungere Oracle Functions solo con la configurazione corrente, in base agli ambiti impostati in precedenza. Inoltre, se si utilizza un'applicazione Oracle Identity Cloud Service diversa per generare il token e tale applicazione non dispone dei privilegi per raggiungere l'ambito delle risorse Oracle Functions, il gateway API non consentirà la richiesta (restituisce un errore 401) perché è stato aggiunto l'audience della risorsa Oracle Identity Cloud Service di Oracle Functions. Se sono state aggiunte verifiche ID client delle richieste, il gateway API garantisce che i token corrispondano solo a quelli specificati da Oracle Identity Cloud Service Apps client_ids.
Utilizzare i seguenti parametri per eseguire il test:
- Tipo di autorizzazione: Credenziali password: questo tipo di autorizzazione viene utilizzato per garantire che il nome utente fornito sia l'oggetto nel token generato.
- URL token di accesso: l'URL OAuth dell'istanza di Oracle Identity Cloud Service. Ad esempio,
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
. - Nome utente: utente esistente sia in Oracle Identity Cloud Service che in Oracle Fusion Applications Cloud Service con privilegi appropriati in entrambi.
- Password: immettere la password per l'utente.
- ClientId: l'ID della risorsa Oracle Functions di Oracle Identity Cloud Service Client associata a Oracle Visual Builder.
- ClientSecret: il segreto client della risorsa Oracle Functions del client Oracle Identity Cloud Service App associata a Oracle Visual Builder.
- Ambito: questo ambito deve corrispondere alle risorse fornite dall'applicazione Oracle Identity Cloud Service Oracle Functions. Ad esempio,
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"
}
]
}
}
Crea una distribuzione del gateway API con l'autenticazione personalizzata
Utilizzare questo approccio se si sceglie di utilizzare una funzione di autenticazione personalizzata per convalidare il token Bearer per le chiamate in entrata agli endpoint del gateway API.
Si tratta della funzione facoltativa definita se si è seguiti i passi dalla sezione Se si desidera definire una funzione di autenticazione in Oracle Cloud Infrastructure.
Lo snippet di codice seguente è un esempio di file JSON della specifica di distribuzione dell'API Oracle Cloud Infrastructure che è possibile utilizzare per eseguire la distribuzione anziché utilizzare la procedura guidata. In questo file è possibile visualizzare:
- Righe 1-8: criterio di richiesta autenticazione. Questa è la definizione che indica che per qualsiasi richiesta in questa distribuzione deve richiamare prima questa funzione (functionId), passando tokenHeader e, se restituisce true, altrimenti rispondere con un messaggio non autorizzato HTTP.
- Righe 9-17: una definizione CORS per gestire e controllare la condivisione delle risorse tra origini.
- Righe 18-43: due punti di inserimento URL o oggetti finali per singole funzioni 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>