Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza documentazione di Apigee Edge.
Questo tutorial mostra come proteggere un proxy API utilizzando un token di accesso OAuth 2.0.
Prima di iniziare
Per completare questo tutorial, devi avere accesso a un'organizzazione Apigee in cui hai l'autorizzazione per:
- Crea ed esegui il deployment dei proxy API
- Creare prodotti API
- Creare app per sviluppatori
Devi inoltre disporre di un nome host del gruppo di ambienti configurato correttamente con cui poter effettuare chiamate proxy API Apigee. Se hai dubbi su quale nome host del gruppo di ambienti utilizzare, rivolgiti all'amministratore di Apigee.
Esegui il deployment del proxy OAuth 2.0
Su GitHub forniamo un proxy API, configurato per generare token di accesso OAuth 2.0. Segui questi passaggi per scaricare e implementare questo proxy API nel tuo ambiente:
-
Scarica il proxy API di esempio
oauth
in una directory del tuo file system. - Vai all'UI di Apigee e accedi, quindi seleziona la tua organizzazione Apigee.
- Seleziona Sviluppo > Proxy API nella barra di navigazione a sinistra.
- Fai clic su Crea nuovo.
- Nella procedura guidata Crea proxy, seleziona Carica bundle di proxy.
- Scegli il file oauth.zip che hai scaricato e fai clic su Avanti.
- Fai clic su Crea.
- Al termine della build, fai clic su Modifica proxy per visualizzare il nuovo proxy. nell'editor proxy API.
- Fai clic su Esegui il deployment.
- Seleziona la revisione e l'ambiente in cui eseguire il deployment. Puoi lasciare vuoto il campo Account di servizio.
- Fai clic su Esegui il deployment.
Hai scaricato ed eseguito il deployment di un'API per la generazione di token di accesso proxy alla tua organizzazione Apigee.
Visualizza il flusso e i criteri di OAuth 2.0
Esamina la configurazione dei criteri OAuth 2.0.
Nuovo editor proxy
Successivamente, esaminerai più da vicino i contenuti del proxy API.
- Nell'editor del proxy API, fai clic sulla scheda Sviluppo.
Nella parte sinistra vedrai due criteri. Nella sezione Endpoint proxy vedrai anche due flussi POST.
- Fai clic su AccessTokenClientCredential in Proxy Endpoints.
L'editor di testo mostra il codice XML per il flusso condizionale
AccessTokenClientCredential:
<Flow name="AccessTokenClientCredential"> <Description/> <Request> <Step> <Name>GenerateAccessTokenClient</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition> </Flow>
Un flusso è un passaggio di elaborazione in un proxy API. In questo caso, il flusso viene attivato una determinata condizione è soddisfatta (chiamato "flusso condizionale"). La condizione, definita nell'elemento
<Condition>
, indica che se la chiamata del proxy API viene eseguita alla risorsa/accesstoken
e il verbo della richiesta èPOST
, allora viene eseguito il criterioGenerateAccessTokenClient
, che genera il token di accesso. - Ora diamo un'occhiata al criterio che verrà attivato dal flusso condizionale. Fai clic sull' Criterio GenerateAccessTokenClient nel riquadro Request (Richiesta):
Editor proxy classico
Successivamente, esaminerai più da vicino i contenuti del proxy API.
- Nell'editor del proxy API, fai clic sulla scheda Sviluppa. Nel riquadro di navigazione a sinistra vedrai due criteri. Nella sezione Endpoint proxy vedrai anche due flussi POST.
-
Fai clic su AccessTokenClientCredential in Endpoint proxy.
Nella visualizzazione Codice XML, vedrai un
Flow
chiamatoAccessTokenClientCredential
:<Flow name="AccessTokenClientCredential"> <Description/> <Request> <Step> <Name>GenerateAccessTokenClient</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition> </Flow>
Un flusso è un passaggio di elaborazione in un proxy API. In questo caso, il flusso viene attivato quando viene soddisfatta una determinata condizione. La condizione, definita in l'elemento
<Condition>
, è che se la chiamata proxy API viene effettuata la risorsa/accesstoken
e il verbo di richiesta èPOST
, quindi eseguire il criterioGenerateAccessTokenClient
, che genera l'accesso di accesso. -
Ora vediamo il criterio che verrà attivato dal flusso condizionale. Fai clic sull'icona del criterio GenerateAccessTokenClient nel diagramma di flusso.
Viene visualizzata la seguente configurazione XML:
<OAuthV2 name="GenerateAccessTokenClient"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in milliseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <!-- This part is very important: most real OAuth 2.0 apps will want to use other grant types. In this case it is important to NOT include the "client_credentials" type because it allows a client to get access to a token with no user authentication --> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
La configurazione include quanto segue:
<Operation>
, che può essere uno dei vari valori predefiniti, cosa farà il criterio. In questo caso, genererà un accesso di accesso.- Il token scadrà 1 ora (3600000 millisecondi) dopo essere stato generato.
- In
<SupportedGrantTypes>
, il protocollo OAuth 2.0 Il valore di<GrantType>
dovrebbe essere utilizzato (client_credentials
) (scambio di una chiave utente e di un segreto con un token OAuth 2.0). - Il secondo elemento
<GrantType>
indica al criterio dove cercare il parametro del tipo di concessione nella chiamata API, come richiesto dalla specifica OAuth 2.0. (lo vedrai nella chiamata all'API più avanti). Il tipo di concessione può essere inviato anche nell'intestazione HTTP (request.header.grant_type
) o come parametro del modulo (request.formparam.grant_type
).
Al momento non devi fare altro con il proxy API. Nei passaggi successivi, utilizzerai questo proxy API per generare un token di accesso OAuth 2.0. Ma prima devi eseguire alcune altre cose:
- Crea il proxy API che vuoi proteggere con OAuth 2.0.
- Crea altri elementi che daranno la chiave consumer e il segreto consumer da scambiare per un token di accesso.
Creare un proxy API protetto
Ora creerai il proxy API da proteggere. Questa è la chiamata API che restituisce ciò che vuoi. In questo caso, il proxy API chiamerà il servizio mocktarget di Apigee per restituire il tuo indirizzo IP. MA, potrai vederlo solo se passi un accesso OAuth 2.0 valido. con la tua chiamata API.
Il proxy API che crei qui includerà un criterio che verifica la presenza di un token OAuth 2.0 nel richiesta.
- Seleziona Sviluppo > Proxy API nella barra di navigazione a sinistra.
- Fai clic su Crea nuovo.
- Nella procedura guidata Crea un proxy, seleziona Proxy inverso (il più comune).
- Configura il proxy con quanto segue:
In questo campo fai questo Nome proxy Inserisci: helloworld_oauth2
Project Base Path Modifica in:
/hellooauth2
Il percorso di base del progetto fa parte dell'URL utilizzato per effettuare richieste all'API proxy.
API esistente Inserisci:
https://mocktarget.apigee.net/ip
Questo definisce l'URL di destinazione che Apigee richiama su una richiesta al proxy API.
Descrizione Inserisci: hello world protected by OAuth 2.0
- Fai clic su Avanti.
- Nella pagina Norme comuni:
In questo campo Fai così Sicurezza: autorizzazione Seleziona: - OAuth 2.0
Queste opzioni sono molto utili. per aggiungere automaticamente due criteri al tuo proxy API e creare un prodotto API.
- Fai clic su Avanti.
- Nella pagina Riepilogo, in Deployment facoltativo, seleziona un ambiente e fai clic su Crea ed esegui il deployment.
- Fai clic su Modifica proxy per visualizzare la pagina Panoramica del proxy API.
Il deployment del proxy API viene eseguito automaticamente. (Potrebbero essere necessari alcuni minuti il deployment.)
Visualizza le norme
Diamo un'occhiata più da vicino a ciò che hai creato.
Nuovo editor proxy
- Nell'editor del proxy API, fai clic sulla scheda Sviluppo. Puoi vedere che due
criteri sono stati aggiunti al flusso di richiesta del proxy API:
- Verify OAuth v2.0 Access Token (Verifica token di accesso OAuth v2.0): controlla la chiamata API da effettuare che sia presente un token OAuth 2.0 valido.
- Rimuovi autorizzazione intestazione: un criterio Assegna messaggio che rimuove il token di accesso dopo averlo controllato, in modo che non venga passato al servizio di destinazione. Se il servizio di destinazione necessitasse del token di accesso OAuth 2.0, non dovresti utilizzare queste norme).
-
Fai clic sull'icona Verifica token di accesso OAuth 2.0 nel riquadro a destra e controlla il codice XML sottostante nell'editor di testo.
Editor proxy classico
- Nell'editor del proxy API, fai clic sulla scheda Sviluppa. Puoi vedere che due
criteri sono stati aggiunti al flusso di richiesta del proxy API:
- Verify OAuth v2.0 Access Token (Verifica token di accesso OAuth v2.0): controlla la chiamata API da effettuare che sia presente un token OAuth 2.0 valido.
- Rimuovi autorizzazione intestazione: un criterio Assegna messaggio che rimuove il token di accesso dopo averlo controllato, in modo che non venga passato al servizio di destinazione. Se il servizio di destinazione necessitasse del token di accesso OAuth 2.0, non dovresti utilizzare queste norme).
-
Fai clic sull'icona Verify OAuth v2.0 Access Token (Verifica token di accesso OAuth v2.0) nella visualizzazione del flusso e guarda il codice XML sottostante nel riquadro del codice.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="verify-oauth-v2-access-token"> <DisplayName>Verify OAuth v2.0 Access Token</DisplayName> <Operation>VerifyAccessToken</Operation> </OAuthV2>
Nota che <Operation>
è VerifyAccessToken
. L'operazione
definisce cosa deve fare il criterio. In questo caso, viene controllato
se nella richiesta è presente un token OAuth 2.0 valido.
Aggiungi un prodotto API
Per ottenere un token di accesso OAuth 2.0, devi creare tre entità Apigee: un prodotto API, uno sviluppatore e un'app per sviluppatori. Innanzitutto, crea il prodotto API:
- Seleziona Pubblica > Prodotti API.
- Fai clic su +Crea.
- Inserisci i dettagli del prodotto API.
Campo Descrizione Nome Nome interno del prodotto API. Non specificare caratteri speciali nel nome.
Nota: non puoi modificare il nome dopo aver creato il prodotto API.Nome visualizzato Nome visualizzato per il prodotto API. Il nome visualizzato viene utilizzato nell'interfaccia utente e puoi modificarlo in qualsiasi momento. Se non specificato, verrà utilizzato il valore Name (Nome). Questo campo viene compilato automaticamente utilizzando il valore Nome. Puoi modificare o eliminare i relativi contenuti. Il nome visualizzato può includere caratteri speciali. Descrizione Descrizione del prodotto API. Ambiente Ambienti a cui il prodotto API consentirà l'accesso. Seleziona l'ambiente in cui hai eseguito il deployment del proxy API. Accesso Seleziona Public (Pubbliche). Approva automaticamente le richieste di accesso Attiva l'approvazione automatica delle richieste di chiavi per questo prodotto API da qualsiasi app. Quota Ignora per questo tutorial. Ambiti OAuth 2.0 consentiti Ignora per questo tutorial. - Nella sezione Operazioni, fai clic su Aggiungi un'operazione.
- Nel campo Proxy API, seleziona il proxy API appena creato.
- Nel campo Percorso, inserisci "/". Ignora gli altri campi.
- Fai clic su Salva per salvare l'operazione.
- Fai clic su Salva per salvare il prodotto API.
Aggiungere uno sviluppatore e un'app alla tua organizzazione
Successivamente, simulerai il flusso di lavoro di uno sviluppatore che si registra per utilizzare le tue API. Idealmente, gli sviluppatori dovrebbero registrare se stessi e le loro app tramite il tuo portale per gli sviluppatori. In questo passaggio, però, aggiungerai uno sviluppatore e un'app come amministratore.
Uno sviluppatore avrà una o più app che chiamano le tue API e a ogni app viene assegnato un chiave e segreto utente. Questa chiave/questo segreto per app offre anche al fornitore di API un controllo più granulare sull'accesso alle API e report di analisi più granulari sul traffico delle API, perché Apigee sa a quale sviluppatore e a quale app appartiene ciascun token OAuth 2.0.
Creare uno sviluppatore
Creiamo uno sviluppatore di nome Nigel Tufnel.
- Seleziona Pubblica > Sviluppatori nel menu.
- Fai clic su + Sviluppatore.
- Inserisci quanto segue nella finestra Nuovo sviluppatore:
In questo campo Invio Nome Nigel
Cognome Tufnel
Nome utente nigel
Email nigel@example.com
- Fai clic su Salva.
Registra un'app
Creiamo un'app per Nigel.
- Seleziona Pubblica > App.
- Fai clic su + App.
- Inserisci quanto segue nella finestra Nuova app:
In questo campo Fai così Nome e Nome visualizzato Inserisci: nigel_app
Developer Fai clic su Sviluppatore e seleziona: Nigel Tufnel (nigel@example.com)
Callback URL (URL di callback) e Notes Lascia vuoto - In Prodotti, fai clic su Aggiungi prodotto.
- Aggiungi il prodotto API che hai appena creato.
- Fai clic su Crea.
Recupera la chiave utente e il secret consumer
Ora riceverai la chiave utente e il segreto utente che verranno scambiati con OAuth 2.0 token di accesso.
- Assicurati che venga visualizzata la pagina nigel_app. In caso contrario, nella pagina delle app (Pubblica > App), fai clic su nigel_app.
-
Nella pagina nigel_app, fai clic su Mostra nella sezione Chiave. e Secret. Nota che la chiave/segreta sono associata al prodotto API che hai creato in precedenza.
- Seleziona e copia la chiave e il secret. Incollali in modo temporaneo di testo. Le utilizzerai in un passaggio successivo, quando chiamerai il proxy API che scambierà queste credenziali con un token di accesso OAuth 2.0.
Prova a chiamare l'API per ottenere il tuo indirizzo IP (errore!)
Prova a chiamare il proxy API protetto che hai appena creato. Tieni presente che non stai passando un token di accesso OAuth 2.0 nella chiamata.
dove YOUR ENV_GROUP_HOSTNAME
è il nome host del gruppo di ambienti. Consulta:
Trova il nome host del gruppo di ambienti.
Poiché il proxy API ha il criterio Verify OAuth v2.0 Access Token (Verifica token di accesso OAuth v2.0) verificando la presenza di un token OAuth 2.0 valido nella richiesta, la chiamata dovrebbe avere esito negativo con il seguente messaggio:
{"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}
In questo caso, l'errore è positivo. Ciò significa che il tuo proxy API è molto più sicuro. Solo le app attendibili con un token di accesso OAuth 2.0 valido possono chiamare correttamente questa API.
Ottenere un token di accesso OAuth 2.0
Quindi, utilizzerai la chiave e il segreto copiati e incollati in un file di testo per scambiarli con un token di accesso OAuth 2.0. Ora sei effettuerai una chiamata API al proxy API campione che hai importato, oauth, genererà un token di accesso all'API.
Utilizzando la chiave e il secret, effettua la seguente chiamata cURL (tieni presente che il protocollo
https
):
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \ "https://YOUR ENV_GROUP_HOSTNAME/oauth/client_credential/accesstoken?grant_type=client_credentials" \ -d "client_id=CLIENT_KEY&client_secret=CLIENT_SECRET"
Tieni presente che se utilizzi un client come Postman per effettuare la chiamata,
client_id
e client_secret
si trovano nel corpo dell'
e deve essere x-www-form-urlencoded
.
Dovresti ricevere una risposta simile alla seguente:
{ "issued_at" : "1466025769306", "application_name" : "716bbe61-f14a-4d85-9b56-a62ff8e0d347", "scope" : "", "status" : "approved", "api_product_list" : "[helloworld_oauth2-Product]", "expires_in" : "3599", //--in seconds "developer.email" : "nigel@example.com", "token_type" : "BearerToken", "client_id" : "xNnREu1DNGfiwzQZ5HUN8IAUwZSW1GZW", "access_token" : "GTPY9VUHCqKVMRB0cHxnmAp0RXc0", "organization_name" : "myOrg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Hai ottenuto il token di accesso OAuth 2.0. Copia il valore access_token
(senza le virgolette) e
incollalo nel tuo file di testo. Lo utilizzerai a breve.
Cosa è successo?
Ricordi quando hai esaminato il "flusso condizionale" nel proxy oauth, quello che diceva che se l'URI della risorsa è /accesstoken
e il verbo della richiesta è POST
, devi eseguire il criterio OAuth 2.0 GenerateAccessTokenClient
che genera un token di accesso? Il comando cURL
ha soddisfatto queste condizioni, pertanto il criterio OAuth 2.0 è stato eseguito. Ha verificato la tua chiave utente
e segreto utente e li ha scambiati con un token OAuth 2.0 che scade dopo un'ora.
Chiama l'API con un token di accesso (operazione riuscita)
Ora che hai un token di accesso, puoi utilizzarlo per chiamare il proxy API. Esegui la seguente chiamata cURL. Sostituisci il nome della tua organizzazione Apigee e il token di accesso.
curl https://YOUR ENV_GROUP_HOSTNAME/hellooauth2 -H "Authorization: Bearer TOKEN"
A questo punto dovresti ricevere una chiamata riuscita al proxy API che restituisce il tuo indirizzo IP. Ad esempio:
{"ip":"::ffff:192.168.14.136"}
Puoi ripetere la chiamata API per quasi un'ora, dopodiché il token di accesso scade. Per effettuare la chiamata dopo un'ora, devi generare un nuovo token di accesso utilizzando passaggi precedenti.
Complimenti! Hai creato un proxy API e lo hai protetto richiedendo che nella chiamata sia incluso un token di accesso OAuth 2.0 valido.
Argomenti correlati
- Home page di OAuth 2.0
- Criteri OAuthV2
- Scarica proxy API (che mostra come raggruppare un proxy API in un file ZIP come quello scaricato)