Proteggi un'API richiedendo chiavi API

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Video: guarda questo breve video per un'introduzione alla protezione dell'API.

Cosa imparerai a fare

Questo tutorial spiega come:

  • Crea un proxy API che richiede una chiave API.
  • Crea un prodotto API, uno sviluppatore e un'app per sviluppatori.
  • Chiamare l'API con una chiave API.

È importante proteggere l'API da accessi non autorizzati. Un modo per farlo è chiavi API.

Quando un'app invia una richiesta a un proxy API configurato per verificare un'API. l'app deve fornire una chiave valida. In fase di runtime, La verifica del criterio della chiave API controlla che la chiave API fornita:

  • È valido
  • Non è stato revocato
  • Corrisponde alla chiave API per il prodotto API che espone le risorse richieste

Se la chiave è valida, la richiesta è consentita. Se la chiave non è valida, la richiesta genera un errore di autorizzazione.

Crea il proxy API

  1. Vai all'UI di Apigee ed esegui l'accesso.
  2. Seleziona la tua organizzazione utilizzando il menu a discesa nell'angolo in alto a sinistra dell'interfaccia utente.
  3. Fai clic su Sviluppo > Proxy API per visualizzare l'API dall'elenco dei proxy.

  4. Fai clic su Crea nuovo.
    Pulsante Crea proxy
  5. Nella procedura guidata Crea un proxy, seleziona Inverti proxy (più comune).
  6. Configura il proxy come segue:
    In questo campo fai questo
    Nome proxy Inserisci: helloworld_apikey
    Percorso di base del progetto

    Cambia in: /helloapikey

    Il percorso di base del progetto fa parte dell'URL utilizzato per effettuare richieste all'API proxy.

    Descrizione Inserisci: hello world protected by API key
    Target (API esistente)

    Inserisci: http://mocktarget.apigee.net

    Definisce l'URL di destinazione che Apigee richiama su una richiesta all'API proxy. Questo target restituisce semplicemente una risposta semplice: Hello, Guest!.

  7. Fai clic su Avanti.
  8. Nella pagina Criteri comuni, seleziona Chiave API. Questa opzione consente di aggiungere automaticamente due criteri Proxy API e crea un prodotto API necessario per generare la chiave API.
  9. Fai clic su Avanti.
  10. Nella pagina Riepilogo, assicurati che l'ambiente di deployment sia selezionato e fai clic su Crea ed esegui il deployment.
  11. Fai clic su Modifica proxy per visualizzare Pagina Panoramica del proxy API.

Visualizza i criteri

  1. 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:
    • Verifica chiave API: controlla la chiamata API per verificare che sia Chiave API presente (inviata come parametro di query).
    • Rimuovi parametro di query apikey: un criterio Assegna messaggio che rimuove la chiave API dopo averla controllata, in modo che non venga trasmessa esposte inutilmente.
  2. Fai clic sull'icona del criterio Verify API Key nella visualizzazione del flusso e osserva il codice XML del criterio nella vista codice inferiore. L'elemento <APIKey> indica in cui deve cercare la chiave API quando viene effettuata la chiamata. Per impostazione predefinita, per la chiave come parametro di query denominato apikey nella richiesta HTTP:

    <APIKey ref="request.queryparam.apikey" />
    

    Il nome apikey è arbitrario e può essere qualsiasi proprietà contenente il chiave API.

Prova a chiamare l'API

In questo passaggio, effettuerai una chiamata API con esito positivo direttamente al servizio di destinazione, quindi effettuerai una chiamata non riuscita al proxy API per vedere come viene protetto criteri.

  1. Operazione riuscita

    In un browser web, vai al seguente indirizzo. Si tratta del servizio di destinazione che l'API è configurato per inoltrare la richiesta, ma per il momento farai clic direttamente:

    http://mocktarget.apigee.net
    

    Dovresti ricevere questa risposta positiva: Hello, Guest!

  2. Errore

    Ora prova a chiamare il proxy API:

    curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey

    dove YOUR ENV_GROUP_HOSTNAME è il nome host del gruppo di ambienti. Consulta Trova il nome host del gruppo di ambienti.

    Senza il criterio Verify API Key, questa chiamata ti darebbe la stessa risposta della chiamata precedente. In questo caso, però, dovresti ricevere la seguente risposta di errore:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    il che significa correttamente che non hai passato una chiave API valida (come query ).

Nei passaggi successivi, riceverai la chiave API richiesta.

Aggiunta di un prodotto API

Per aggiungere un prodotto API utilizzando la UI di Apigee:

  1. Seleziona Pubblica > Prodotti basati su API.
  2. Fai clic su +Crea.
  3. 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 del 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 modificarne o eliminarne i contenuti. Il nome visualizzato può includere caratteri speciali.
    Descrizione Descrizione del prodotto API.
    Ambiente Ambienti a cui il prodotto API consentirà l'accesso. Ad esempio, test o prod.
    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 consentiti Ignora per questo tutorial.
  4. Nella sezione Operazioni, fai clic su AGGIUNGI UN'OPERAZIONE.
  5. Nel campo Proxy API, seleziona il proxy API appena creato.
  6. Nel campo Percorso, inserisci "/". Ignora gli altri campi.
  7. Fai clic su Salva per salvare l'operazione.
  8. Fai clic su Salva per salvare il prodotto API.

Aggiungi uno sviluppatore e un'app al tuo organizzazione

Quindi, simuleremo il flusso di lavoro di uno sviluppatore che si registra per utilizzare le tue API. R avrà una o più app che chiamano le tue API e ogni app riceverà una chiave API univoca. In questo modo, il provider dell'API ha a disposizione un controllo più granulare sull'accesso alle API e altro ancora. report granulari sul traffico API per app.

Crea uno sviluppatore

Per creare uno sviluppatore:

  1. Seleziona Pubblica > Sviluppatori nel menu.
    Nota: se sei ancora nella schermata Sviluppo, fai clic su "<" di SVILUPPO per visualizzare il menu e seleziona Pubblica > Sviluppatori
  2. Fai clic su + Sviluppatore.
  3. Inserisci quanto segue nella finestra Nuovo sviluppatore:
    In questo campo invio
    Nome Keyser
    Cognome Soze
    Nome utente keyser
    Email keyser@example.com
  4. Fai clic su Crea.

Registra un'app

Per registrare un'app sviluppatore:

  1. Seleziona Pubblica > App.
  2. Fai clic su + App.
  3. Inserisci quanto segue nella finestra Nuova app sviluppatore:
    In questo campo fai questo
    Nome e Nome visualizzato Inserisci: keyser_app
    Developer Seleziona: Keyser Soze (keyser@example.com)
    Callback URL (URL di callback) e Notes Lascia vuoto
  4. Nella sezione Credenziali, seleziona Mai. Le credenziali per questa app non scadranno mai.
  5. Fai clic su Aggiungi prodotto.
  6. Seleziona il prodotto appena creato.
  7. Fai clic su Crea.

Recuperare la chiave API

Per ottenere la chiave API:

  1. Nella pagina delle app (Pubblica > App), fai clic su keyser_app.
  2. Nella pagina keyser_app, fai clic su Mostra accanto a Chiave nella Sezione Credenziali. Tieni presente che la chiave è associata al prodotto che hai creato.
  3. Seleziona e copia la chiave. Lo utilizzerai nel passaggio successivo.

Chiama l'API con una chiave

Ora che disponi di una chiave API, puoi utilizzarla per chiamare il proxy API. Incolla la chiave API come come parametro di query. Assicurati che non ci siano costi aggiuntivi nel parametro di query.

curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=your_api_key

Ora, quando chiami il proxy API, dovresti ricevere questa risposta: Hello, Guest!

Complimenti! Hai creato un proxy API e lo hai protetto richiedendo l'invio di una richiesta La chiave API deve essere inclusa nella chiamata.

Tieni presente che, in generale, non è buona norma passare una chiave API come parametro di query. Tu dovresti prendere in considerazione di passarlo al prompt HTTP o l'intestazione.

Best practice: passaggio della chiave in HTTP intestazione

In questo passaggio modificherai il proxy in modo da cercare la chiave API in un'intestazione denominata x-apikey.

  1. Modifica il proxy API. Seleziona Sviluppo > Proxy API > helloworld_apikey e passare alla vista Sviluppo.
  2. Seleziona il criterio Verify API Key (Verifica chiave API) e modifica il file XML del criterio per comunicarlo. il criterio di ricerca in header anziché nella queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Salva il proxy API e utilizza Esegui il deployment per eseguirne il deployment.
  4. Effettua la seguente chiamata API utilizzando cURL per passare la chiave API sotto forma di intestazione denominata x-apikey. Non dimenticare di sostituire il nome dell'organizzazione.

    curl -v -H "x-apikey: {api_key_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey

Tieni presente che per completare la modifica dovrai anche configurare il campo Assegna messaggio per rimuovere l'intestazione anziché il parametro di query. Ad esempio:

<Remove>
  <Headers>
      <Header name="x-apikey"/>
  </Headers>
</Remove>
.

Argomenti correlati

Ecco alcuni argomenti relativi ai prodotti e alle chiavi API:

La protezione delle API spesso comporta ulteriori misure di sicurezza, come OAuth, un protocollo aperto che scambia le credenziali (come nome utente e password) per di accesso ai token di accesso. I token di accesso sono lunghe stringhe casuali che possono essere trasmesse attraverso un messaggio variegata, ad esempio da un'app all'altra, senza compromettere le credenziali originali.

Per una panoramica degli argomenti relativi alla sicurezza, consulta Protezione di un proxy.