Configurazione della convalida delle chiavi API

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Puoi configurare la convalida delle chiavi API per un'API collegando una policy di tipo Verifica chiave API. L' unica impostazione obbligatoria per una policy 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 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>

Questa policy può essere collegata a qualsiasi API che devi proteggere.

La documentazione completa di questo tipo di policy è disponibile nell'argomento di riferimento della policy, Policy Verifica chiave API policy.

I proxy API passano automaticamente tutte le intestazioni HTTP e i parametri di query presenti nella richiesta. Pertanto, dopo aver verificato la chiave API, è consigliabile rimuoverla da messaggio in modo che la chiave API non venga inviata tramite la rete al servizio di backend. Puoi farlo utilizzando una policy 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>

Collegamento della policy

Le policy devono essere collegate a un flusso di proxy API come passaggi di elaborazione. Applicando la policy al PreFlow della richiesta, 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 le policy 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 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 come segue:

$ 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 failure.

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

Il messaggio di errore indica che la policy ha cercato una chiave API, ma non ne ha trovata una valida chiave:

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

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

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

Il risultato previsto è una risposta riuscita dal servizio meteo.

La modifica del valore della chiave API nella richiesta genera 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

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

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