Configurazione della convalida delle chiavi API

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

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 di verifica chiave API è 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 essere inserite in un parametro di ricerca, in un parametro modulo o in un'intestazione HTTP.

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

Per verificare le chiavi API, crea il seguente criterio:

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

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

Una documentazione completa di questo tipo di criterio è disponibile nell'argomento di riferimento dei criteri Verificare il criterio della chiave API.

I proxy API trasmettono automaticamente tutte le intestazioni HTTP e i parametri di query presenti nella richiesta. Pertanto, una volta verificata la chiave API, è consigliabile rimuoverla dal messaggio in modo che non venga inviata tramite cavo al servizio di backend. A tale scopo, utilizza un criterio di tipo AssegnaMessage nel seguente modo:

<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 alle norme

I criteri devono essere collegati a un flusso proxy API come passaggi di elaborazione. Se applichi il criterio al PreFlow della richiesta, 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 al 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.

Inviare 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://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

Il profilo dell'app restituito per questa chiamata fornisce la chiave utente (chiave API) e il secret. Il valore della chiave utente è 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://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Il messaggio di errore indica che il criterio ha controllato una chiave API, ma non ha trovato una chiave valida:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Quando la chiave utente dell'app viene inclusa come parametro di query, il risultato previsto è l'autorizzazione riuscita:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Il risultato previsto è una risposta corretta da parte del servizio meteo.

La modifica del valore del valore della chiave API nella richiesta comporta un errore di autorizzazione:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Risultati in:

OAuth Failure : Consumer Key is Invalid

Tieni presente che, in qualità di amministratore della tua organizzazione, puoi recuperare la chiave utente per qualsiasi app registrata nell'organizzazione:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password