Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Puoi configurare la convalida della chiave API per un'API collegando un criterio di tipo Verifica chiave API. L'unica impostazione richiesta per una norma VerifyAPIKey� è la posizione prevista della chiave API nella richiesta client. Il proxy API controllerà la posizione specificata ed estrarrà la chiave API. Se la chiave API non è presente nella posizione prevista, viene generato un errore e la richiesta viene rifiutata. Le chiavi API possono essere inserite in un parametro di query, in un parametro del modulo o in un'intestazione HTTP.
Ad esempio, la configurazione della policy riportata di seguito definisce la posizione della chiave prevista come parametro di query
denominato apikey
. Una richiesta riuscita deve presentare la chiave API come parametro di query
aggiunto alla richiesta, ad esempio ?apikey=Y7yeiuhcbKJHD790
.
Per verificare le chiavi API, crea la seguente policy:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Questo criterio può essere collegato a qualsiasi API che devi proteggere.
La documentazione completa di questo tipo di criterio è disponibile nell'argomento di riferimento dei criteri, Criterio VerifyAPIKey.
I proxy API trasmettono automaticamente tutte le intestazioni HTTP e parametri di ricerca presenti nella richiesta. Pertanto, dopo la verifica della chiave API, è consigliabile rimuoverla dal messaggio in modo che non venga inviata al servizio di backend. Puoi farlo
utilizzando un criterio di tipo AssignMessage
come segue:
<AssignMessage name="StripApiKey"> <DisplayName>Remove Query Param</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"></AssignTo> </AssignMessage>
Allegato delle norme
Le policy devono essere associate a un flusso proxy API come passaggi di elaborazione. Se applichi il criterio
alla richiesta PreFlow
, le chiavi API vengono verificate a ogni richiesta ricevuta dal proxy API da un'app client. Dopo la verifica, la chiave API viene rimossa dalla richiesta in uscita.
Collega i criteri a ProxyEndpoint del proxy API da proteggere nel seguente modo:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
Dopo aver collegato la policy, esegui il deployment del proxy API.
Invio di una richiesta con una chiave API valida
In qualità di amministratore della tua organizzazione, puoi recuperare la chiave API di qualsiasi app nel seguente modo:
curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -H "Authorization: Bearer $TOKEN"
Dove $TOKEN
è impostato sul tuo token di accesso OAuth 2.0, come descritto in
Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl
utilizzate in questo esempio, consulta la sezione
Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta
Impostazione
delle variabili di ambiente per le richieste API Apigee.
Il profilo dell'app restituito per questa chiamata fornisce la chiave utente (chiave API) e il secret. Il valore della chiave consumer è il valore che utilizzi per la chiave API nella richiesta all'API protetta.
Ad esempio, una richiesta che non include una chiave API genera un errore di autorizzazione.
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282
Il messaggio di errore indica che il criterio ha cercato una chiave API, ma non ne ha trovata una valida:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
Quando la chiave consumer per l'app è inclusa come parametro di query, il risultato previsto è l'autorizzazione riuscita:
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
Il risultato previsto è una risposta positiva dal servizio meteo.
La modifica del valore della chiave API nella richiesta comporta un errore di autorizzazione:
curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
Risultati in:
OAuth Failure : Consumer Key is Invalid