Configurazione della convalida delle chiavi API

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza la documentazione di Apigee Edge.

Puoi configurare la convalida delle chiavi API per un'API allegando un criterio di tipo Verifica chiave API. L'unica impostazione obbligatoria per un criterio VerifyAPIKey è la posizione prevista della chiave API nella richiesta del 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 trovarsi in un parametro di query, in un parametro di un modulo o in un'intestazione HTTP.

Ad esempio, la configurazione del criterio riportata di seguito definisce la posizione della chiave prevista come parametro di query denominato apikey. Una richiesta andata a buon fine deve presentare la chiave API come parametro query aggiunto alla richiesta, ad esempio ?apikey=Y7yeiuhcbKJHD790.

Per verificare le chiavi API, crea il criterio seguente:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Questo criterio può essere associato a qualsiasi API che devi proteggere.

La documentazione completa di questo tipo di criterio è disponibile nell'argomento di riferimento relativo ai criteri, Criterio VerifyAPIKey.

I proxy API trasmettono automaticamente tutte le intestazioni HTTP e i parametri di query presenti nella richiesta. Pertanto, dopo aver verificato la chiave API, ti consigliamo di rimuoverla il messaggio in modo che la chiave API non venga inviata tramite cavo 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 criterio

I criteri devono essere collegati a un flusso proxy API come passaggi di elaborazione. Se applichi il criterio alla richiesta PreFlow, le chiavi API vengono verificate su 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 come segue:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

Dopo aver collegato il criterio, 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, vedi Con curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste dell'API Apigee.

Il profilo dell'app restituito per questa chiamata fornisce la chiave consumer (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'autorizzazione errore.

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 utente per l'app viene inclusa come parametro di query, il risultato previsto è autorizzazione:

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Il risultato previsto è una risposta positiva del servizio meteo.

La modifica del valore del valore della chiave API nella richiesta genera un'autorizzazione errore:

curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Risultati in:

OAuth Failure : Consumer Key is Invalid