Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Abilita l'autenticazione OAuth2 nel gateway API OCI per chiamare i servizi OCI utilizzando OCI Functions e OCI SDK
Introduzione
Spesso abbiamo bisogno delle nostre applicazioni per utilizzare i servizi REST Oracle Cloud Infrastructure (OCI). Esistono diversi modi per garantire la sicurezza tra i componenti, garantendo che l'applicazione possa eseguire l'autenticazione in modo sicuro al servizio backend.
Questo task è nativo in Oracle Cloud, in quanto esistono diversi modi per proteggere la rete e accedere ai servizi esistenti. Solo alcune impostazioni e hai finito. Tuttavia, ci sono casi in cui l'applicazione può offrire ulteriori requisiti di sicurezza e connettività. Il caso d'uso di questo materiale soddisfa un'esigenza molto comune nello scenario ibrido o multi-cloud (on-premise connesso a Oracle Cloud o Oracle Cloud connesso a un altro cloud).
Presentiamo il seguente scenario:
-
Applicazione su una rete on premise connessa a Oracle Cloud tramite Fast-Connect/VPN.
-
L'applicazione deve utilizzare un servizio OCI Data Science.
-
Il servizio OCI non dispone di un meccanismo di autenticazione che soddisfi le possibilità del consumatore dell'applicazione.
-
L'applicazione deve eseguire l'autenticazione utilizzando OAuth2 per poter accedere al servizio in modo sicuro.
Pertanto, il tutorial fornisce le seguenti soluzioni:
-
Configurare il provider di identità del cloud di Oracle Identity Cloud Service per l'autenticazione tramite OAuth2.
-
Configurare OCI API Gateway per l'integrazione con Oracle Identity Cloud Service e l'autenticazione tramite un token ottenuto.
-
Assegna un codice a OCI Functions per chiamare un servizio OCI che consente l'uso del principal risorsa (nel nostro esempio, utilizzeremo il servizio Data Science Model Deployment).
-
Crea gruppi e criteri per limitare l'accesso alle risorse cloud.
-
Fornire un provider di identità che consenta di passare l'ID client e l'ID segreto e ottenere un token di autenticazione.
-
Offri un servizio REST OCI API Gateway funzionale che esegue l'autenticazione tramite il token ottenuto e fornisce il risultato del servizio Data Science.
Nota: è possibile scaricare Funzioni OCI da qui OAuthOCIService-fn.zip.
Obiettivi
-
Consente a un'applicazione esterna di utilizzare i servizi REST con l'autenticazione OAuth2.
-
Fornire un servizio di autenticazione OAuth2 su OCI.
-
Configura OCI API Gateway e OCI Functions per eseguire i servizi OCI tramite un token.
Prerequisiti
-
Un'istanza del gateway API OCI creata ed esposta a Internet. Vedere Creazione del primo gateway API in Oracle Cloud.
-
Connettività di rete tra il gateway API OCI, le funzioni OCI e la risorsa PaaS OCI.
-
VCN/subnet
-
Lista di sicurezza
-
Gateway NAT/gateway Internet
-
Reti pubbliche/private
-
-
Conoscenze con:
-
Funzioni OCI
-
API REST OCI per codificare una chiamata per il servizio OCI
-
Task 1: configurare OAuth2 con Oracle Identity Cloud Service
-
Ottenere i parametri del gateway API OCI: iniziamo a configurare il meccanismo OAuth2. È necessario integrare l'istanza del gateway API OCI in un provider di identità configurando Oracle Identity Cloud Service da Oracle Cloud come provider di identità.
Andare all'istanza del gateway API OCI e copiare il nome host. Queste informazioni verranno utilizzate nella configurazione del server delle risorse di Oracle Identity Cloud Service nel passo successivo.
-
Crea un'applicazione risorsa: è necessario creare un responsabile autorizzazioni OAuth2 per l'applicazione. Possiamo farlo con Oracle Identity Cloud Service in Oracle Cloud.
-
Nella console OCI, andare a Identità e sicurezza e selezionare Federazione.
-
Fare clic su OracleIdentityCloudSevice.
-
Fare clic sul collegamento per l'istanza di Oracle Identity Cloud Service.
-
Creeremo due applicazioni. Fare clic su Applicazioni e servizi.
-
Fare clic su Aggiungi in Applicazioni.
-
Selezionare Applicazione riservata per avviare la configurazione del server delle risorse.
-
Verrà configurata la prima applicazione. Immettere un Nome nell'applicazione del server delle risorse e fare clic su Successivo.
-
Fare clic su Salta per dopo. È necessario configurare solo la risorsa.
-
Immettere il nome host del gateway API OCI ottenuto nel passo 1.
-
Fare clic su Aggiungi ambito e immettere le informazioni sull'ambito.
-
Rivedere le informazioni sull'ambito, fare clic su Avanti due volte e fare clic su Fine.
-
Fare clic su Attiva per attivare l'applicazione.
-
-
Creazione di un'applicazione client.
-
In Applicazioni, fare clic su Aggiungi.
-
Selezionare Applicazione riservata per avviare la configurazione del server delle risorse.
-
Immettere un nome per l'applicazione e fare clic su Successivo.
-
Selezionare Configure the application as a client now per abilitare le configurazioni per l'applicazione client. Selezionare Credenziali client, Asserzione JWT e Per conto di.
-
Scorrere la schermata verso il basso e fare clic su Aggiungi ambito.
-
Trovare l'applicazione risorsa creata prima (
oauth_resource_server
in questo task) e fare clic su Aggiungi. -
È possibile visualizzare l'ambito aggiunto all'applicazione. Fare clic su Avanti.
Nota: conservare il valore dell'ambito, che sarà necessario utilizzare per richiedere un token.
-
Saltare le finestre Risorse e Criterio livello Web. In Autorizzazione, selezionare Applica privilegi come autorizzazione e fare clic su Fine.
-
Conservare le informazioni ID client e Segreto client. Avrai bisogno di questo per ottenere il tuo token.
-
Fare clic su Attiva per attivare l'applicazione e il responsabile autorizzazioni OAuth2 è pronto per il test.
-
-
Ottieni un token: ora è possibile eseguire il test del responsabile autorizzazioni OAuth2 per ottenere il token.
-
Comporre l'URL per il responsabile autorizzazioni. Per ottenere questo risultato, ottenere l'URL di Oracle Identity Cloud Service nel browser. Nell'URL di Oracle Identity Cloud Service è possibile visualizzare uno dei seguenti elementi:
https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole
. -
Sarà necessario il collegamento URL fino a
oraclecloud.com
, che è l'endpoint radice. Ad esempio,https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com
. -
È necessario aggiungere il percorso di autenticazione oAuth. Questo URL verrà eseguito come richiesta REST
POST
. Ad esempio,https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token
. È necessario immettere alcuni parametri per richiedere il token. -
Immettere le credenziali come Autenticazione di base, ID client e Segreto client.
-
Nel contenuto Corpo immettere i valori grant_type e ambito. Tenere presente che l'ambito è stato acquisito nella configurazione di Oracle Identity Cloud Service.
-
Fare clic su Invia ed eseguire la richiesta
POST
e visualizzare il token.
-
-
Creare la chiave Web JSON (JWK): nel browser immettere l'endpoint root di Oracle Identity Cloud Service aggiungendo
/admin/v1/SigningCert/jwk
per ottenere la chiave JWK:https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/jwk
Riceverai una stringa JWK come mostrato di seguito.
Dobbiamo lavorare su questa stringa JWK.
{"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"key_ops":["sig","encrypt"],"alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
Nota:
-
Questo JWK è stato redatto.
-
Se si riceve un messaggio di errore, è necessario fornire l'accesso in Oracle Identity Cloud Service.
Modifica importante nella stringa JWK: la stringa JWK non sarà utile nel gateway API OCI finché non verranno apportate alcune modifiche.
-
Trovare il segmento con "key_ops":["x","y","z"] e sostituirlo con "use" : "sig". Sarà come mostrato di seguito (confrontare le due stringhe).
{"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
-
Rimuovere la stringa
{"keys":[
dall'inizio e]}
dalla fine. La stringa finale sarà simile a quella mostrata di seguito. Ora puoi usarlo.{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["MIIDYTCCAkmgAwIBAgIGAXRBgoJkiaJk/IsZAEZFgNjb20xFjAUBgoJkiaJk/IsZAEZFgZvcmFjbGUxFTATBgoJkiaJk/IsZAEZFgVjEtMjAeFw0yMDA0MTcxMDU3NTRaFw0zMDA0MTcxMDU3NTRaMFYxEzARBgNVBAMTCnNzbERvbWFpbnMxDzGA1UEAxMlaWRjcy00ZmI0N2I5MTYxMzA0YjFkYTI2ZjZlZDE2MTlhNGUwOTCCASIwDQYJKoZIhvcNAQJIXyaojue8TJXIuJrb4qxBqA3z35bC1kHdxtGZEEJUCtkHK2kEUD5GqD/C6OijCgPtZldU8Rn3fUDMfTjZrUS/ESFr7dOeNxWnusD30aWniHIRe7JQ4OHIhCe/oHaQiSjFUHJ7IlgQzwqCAtccweymxiq1r2jwJscdYaDOHrYz8AcvIfybxzHwT8hgSz7+dIZsjepp07uO5QYcyMM3meB6mS4KznanQOokmawcUcxw4tSFqqI/OxWKc7ZBMnaBdC5iOKZbbLE8bHbS8jfh6/HzONNnLOyMCAwEAAaMyMDAwDwYDVR0PAQH/BAUDAwf4ADAdBgNVHQ4EFgQUd415wDQYJKoZIhvcNAQELBQADggEBAClHD810UCnRuvS7Rbtp5UFTzeRvexDe+Jk6/1FdcfW4COWLRVrgY45XHQr2GmhPWC1G2Yn8WczkIErpX+LAtyFSyOYxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhvGsA6gj55ZLAynSnzMtPs+2Ij4F3PgkgJG7zxHs9HOuyuZtCKJAldVv7IFaQYv6yMjH7llehQOMwp1YPh54kk8M4yk1IIgi/Hw4Tr/HbU7r2EJyaHfxFZgck1Cr9nBIspANy5BDlFYeAnTmKk3UAafbZdSMfeJFd/XwaPlhIzNEJYGW3T4Y5d8o=","MIIDazCCAlOgAwIBAgIIMdQl7kIMrv0wDQYJKoZIhvcNAQELBQAwWTETMBEGCgmSJomT8ixkARkWA2NvbTEWMBQGCgmSJomT8ixkARkWBm9yYWNsZTEVMBMGCgmSJomT8ixkARkWBWNsb3VkMRMwEQYDVQQDEwpDbG91ZDlDQS0yMCAXDTE2MDUyMTAyMTgwOVoYDzIxMTYwNDI3MDIxODA5WjBZMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGb3JhY2xlMRUwEwYKCZImiZPyLGQBGRYFY2xvdWQxEzARBgNVBAMTCkNsb3VkOUNBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPZn2VAoMsIfWmIJks9exzK+DXaX6qYyBc12dRqDrRpC48v3CBeBchV/GT2E+mjcDp8Hzq8oIpwr9W5kwMja4PU3SPd4/0LB6WKbtLfHOnJxLg9EaT992UpbUGHaHlEq4oRAuVvPgDLp5sSspLZYEBKUh4vJXOyLitE1qsXn7mJNXRKTJZvrJKdfbs1dyTge3V3wk1rwY/wCWMKVgkqCgSzzWCGju8EZWoOrnzlR6BHkA0qZqeV4F7jDW8ucdv+Y20pOlOiaEbIg/ZFYGrZd5VWjlNvgLfU8P4C/YJLSkkcPHgoet3w4jI0S26efu59rVzgU9VsKnKtnqbDL99t81vAgMBAAGjNTAzMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDMA8e55FI5kC12+guIE9xtcIXpFMA0GCSqGSIb3DQEBCwUAA4IBAQC45tOVeqHxA8Bo/Rnv1SHHpULge3HyTC1XV9nmUdrj6g/U6rmbA5hVJ5LshgQ77qopO/YsaNHj5Ru1u/+8VOlZWpbn+kt3CDOuBUCe89CKBZT/KWEDkvtNl2qu16gOkhFnuTQk8NsARvwZZ6KtyPDmsbW4Nc/I5fKwPhdTaMjCV6Lh9RCG4kU77lbdwY3SaXlCBXXQyfPWMouCi7z1thJaF3cNGW4tnsibMR5ej9fJ9j6UvShxNgAIgjNDoihPlC6k0kW3QDR3bBjCHJX47505aIhckojH/eKsP2Or0eE/Ma4WNbndj0IXPE2ae5AVmC8/GRtwAmnoZPnt3g/I2m5j"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}
-
Task 2: configurare un OCI Functions per chiamare l'API SDK OCI
-
Comprendere OCI Functions e API Gateway: è una best practice per esporre i servizi tramite un gateway API. È possibile eseguire molte autenticazioni ignorando le credenziali dal gateway API ai servizi backend, ma se l'autenticazione backend non è stata il metodo appropriato per l'applicazione client, è possibile eseguire alcune configurazioni a livello di gateway API.
In questo passo, analizziamo in che modo OCI API Gateway può aiutarci a integrare l'autenticazione OAuth2 e la richiesta per qualsiasi servizio OCI, come la previsione della distribuzione del modello di data science tramite le funzioni OCI.
Le funzioni OCI possono eseguire il job per ricevere la richiesta del corpo e passare al servizio OCI. Alcuni servizi nel servizio OCI non possono essere autenticati con il metodo OAuth2, quindi possiamo farlo con OCI Functions.
In questo esempio, il servizio di previsione Distribuzione modello può essere autenticato mediante la chiave privata OCI in IAM OCI. Può essere eseguita dal principal risorsa.
Se non si sa come creare e distribuire una funzioni OCI, vedere Avvio rapido delle funzioni OCI
-
Comprendere il codice: questo codice sarà pronto per essere utilizzato con OCI API Gateway. Nella distribuzione API, l'endpoint di distribuzione modello verrà configurato nel gateway API e verrà passato come parametro HEADER. È pertanto possibile utilizzare questa funzione per molte distribuzioni di modelli in ogni distribuzione del gateway API necessaria.
-
La libreria
oracle.ads
in Python verrà utilizzata per autorizzare mediante principal risorsa l'accesso di questa funzione all'istanza di distribuzione del modello (vedere il task 4).ads.set_auth('resource_principal')
-
Il contenuto del corpo può essere acquisito da questa riga.
body = json.loads(data.getvalue())
-
Verrà configurato un HEADER denominato model_deployment nel gateway API OCI. Questo HEADER contiene l'URL per la previsione di distribuzione del modello passata nella richiesta del gateway API.
endpoint = ctx.Headers()["model_deployment"]
-
Questa operazione eseguirà la richiesta POST dell'API REST e restituirà il risultato dalla distribuzione del modello nell'endpoint di Data Science.
return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
-
Questa è la libreria
requirements.txt
che dovrà essere caricata in questa funzione.requirements.txt --------------------- fdk>=0.1.54 requests oracle-ads
Distribuire le funzioni OCI e configurarle nel gateway API OCI.
-
Task 3: configurare un'autenticazione di distribuzione del gateway API
Nota: per ulteriori informazioni su come sviluppare un OCI Functions e chiamarlo in OCI API Gateway, vedere Chiama un OCI Functions utilizzando API Gateway.
-
Selezionare OAuth 2.0 / OpenID Connect e immettere la configurazione seguente. Questo è il modo predefinito per eseguire l'autenticazione tramite HEADER.
Token Location: Header JWT token header name: Authorization Authentication scheme: Bearer
-
Immettere la stringa Chiave Web JSON creata in precedenza, selezionare Chiavi statiche e immettere le informazioni riportate di seguito.
Key ID: SIGNING_KEY Key format: JSON web key JSON web key: <Your JWK string created previously>
-
Immettere gli emittenti come
https://identity.oraclecloud.com/
e le audience con il nome host OCI API Gateway ottenuto in precedenza.Configurare le funzioni OCI create nell'ultimo task.
-
Configurare il parametro HEADER
model_deployment
e fare clic su Mostra criteri di richiesta di instradamento. -
Nelle trasformazioni HEADER fare clic su Aggiungi.
-
È necessario disporre dell'URL di previsione per la distribuzione del modello Data Science. È possibile ottenere questo risultato qui: andare al menu Data Science, selezionare l'istanza di Data Science e la distribuzione del modello, quindi fare clic su Richiesta del modello.
Nota: salvare l'OCID di distribuzione modello qui. Sarà necessario configurare i criteri in un secondo momento.
URL di previsione della distribuzione del modello di data science.
-
Immettere il nome dell'intestazione come model_deployment e i valori come URL di previsione della distribuzione del modello Data Science.
Nota: dopo aver salvato la distribuzione del gateway API, ricordare l'endpoint di distribuzione API.
Task 4: configurare il gruppo e i criteri OCI
Creare un gruppo dinamico per concedere l'accesso da OCI Functions alla risorsa OCI. In questa esercitazione viene utilizzata la funzionalità Distribuzione del modello di Data Science. Per ulteriori informazioni su come utilizzare Resource Principal, vedere Resource Principal.
-
Ottenere l'OCID dell'istanza di distribuzione del modello. Immettere l'OCID nella stringa del gruppo dinamico.
ALL {resource.type = 'fnfunc', resource.id = 'ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
Nota:
resource.id
è l'OCID ottenuto in precedenza nella schermata della console Distribuzione modello. -
Creare un criterio per consentire il gruppo dinamico. Per ulteriori informazioni vedere Criteri di distribuzione del modello.
allow dynamic-group hoshikawa_datascience to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy allow dynamic-group hoshikawa_datascience to manage data-science-model-deployments in tenancy
Task 5: API di test
Ora simuliamo la richiesta OAuth2 dell'applicazione per il servizio di distribuzione dei modelli in OCI Data Science.
-
Ottenere il token passando l'ID client e il segreto client al provider di Oracle Identity Cloud Service.
-
Immettere l'endpoint di distribuzione del gateway API OCI e selezionare la richiesta REST
POST
. Copiare il valore access_token e passare alla distribuzione del gateway API OCI. Ricorda che il token ha una durata di un'ora.Ed ecco il risultato!
Collegamenti correlati
Conferme
- Autore - Cristiano Hoshikawa (Solution Engineer Oracle LAD A-Team)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Enable OAuth2 Authentication in OCI API Gateway to Call OCI Services using OCI Functions and OCI SDK
F90853-01
December 2023
Copyright © 2023, Oracle and/or its affiliates.