Proteggi un'API richiedendo chiavi API

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Cosa imparerai a fare

Tramite questo tutorial imparerai a:

  • Crea un proxy API che richiede una chiave API.
  • Aggiungi un prodotto API.
  • Aggiungi uno sviluppatore e registra un'app.
  • Chiamare l'API con una chiave API.

È importante proteggere l'API da accessi non autorizzati. Sola andata puoi farlo con le chiavi API (chiamate anche chiavi pubbliche, consumer o chiavi delle app).

Quando un'app invia una richiesta al tuo API, l'app deve fornire una chiave valida. In fase di runtime, il criterio "Verify API Key" (Verifica chiave API) verifica che la chiave API fornita:

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

Se la chiave è valida, la richiesta è consentita. Se la chiave non è valida, il valore causa un errore di autorizzazione.

In questo tutorial imparerai a creare un proxy API che richiede un'API valida chiave per accedervi.

Che cosa ti serve

  • Un account Apigee Edge. Se non ne hai ancora uno, puoi registrarti con le indicazioni stradali Creazione di un account Apigee Edge in corso...
  • Un browser web per effettuare una chiamata API.
  • (Non è obbligatorio aggiungere la sezione relativa al credito aggiuntivo) cURL installato su della macchina per effettuare chiamate API dalla riga di comando.

Crea il proxy API

Informazioni sul "mocktarget"

Il servizio mocktarget è ospitato su Apigee e restituisce semplici e i dati di Google Cloud. Non richiede chiavi API o token di accesso. Infatti, puoi accedervi in un browser web. Provalo facendo clic di seguito:

http://mocktarget.apigee.net

Il target restituisce Hello, Guest!. Utilizza la /help per ottenere una pagina di assistenza relativa ad altre risorse API disponibili

  1. Vai a https://apigee.com/edge e accedi.
  2. Passa all'organizzazione che ti interessa facendo clic sul tuo nome utente nella parte superiore della barra di navigazione laterale per visualizzare il menu del profilo dell'utente, quindi selezionando l'organizzazione dall'elenco.

    seleziona l'organizzazione nel menu del profilo utente
  3. Fai clic su Proxy API nella pagina di destinazione per visualizzare l'API. dall'elenco dei proxy.

    Menu API Edge
  4. Fai clic su + Proxy.
    Pulsante Crea proxy
  5. Nella pagina Crea proxy, seleziona Inverti proxy (più comune).
  6. Nella pagina Dettagli proxy, 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 creare richieste al proxy API.

    Nota: per i suggerimenti di Apigee sul controllo delle versioni delle API, vedi Controllo delle versioni in Web API Design: The Missing Link all'ebook.

    API esistente

    Inserisci: http://mocktarget.apigee.net

    Definisce l'URL di destinazione richiamato da Apigee Edge richiesta al proxy API.

    Descrizione Inserisci: hello world protected by API key
  7. Fai clic su Avanti.
  8. Nella pagina Criteri comuni, per Sicurezza: Autorizzazione, seleziona Chiave API e fai clic su Avanti. Questo aggiungerà due criteri al proxy API.
  9. Nella pagina Host virtuali, seleziona predefinita e secure, quindi fai clic su Avanti. Se selezioni predefinita, di chiamare l'API con http://. Selezionando protetto, ti consente di chiamare la tua API con https://.
  10. Nella pagina Riepilogo, assicurati che il deployment test nell'ambiente di rete, quindi fai clic su Crea ed esegui il deployment.
  11. Vedrai una conferma che il nuovo proxy API e l'API sono stati creati correttamente ed è stato eseguito il deployment del proxy API il tuo ambiente di test.
  12. Fai clic su Modifica proxy per visualizzare la pagina Panoramica relativa allo proxy API.

Visualizza i criteri

  1. Nell'editor del proxy API, fai clic sulla scheda Sviluppo. Puoi vedere che al flusso di richieste del proxy API sono stati aggiunti due criteri:
    • Verifica chiave API: controlla la chiamata API per verificare che sia Chiave API presente (inviata come parametro di query).
    • Rimuovi apikey del parametro di query: un criterio AssegnaMessage che rimuove la chiave API dopo averla controllata, in modo che non venga passata intorno ed esposti inutilmente.
  2. Fai clic sull'icona di verifica della chiave API nella visualizzazione del flusso e configurazione XML del criterio nella visualizzazione codice inferiore. La L'elemento <APIKey> indica al criterio dove deve essere cerca la chiave API quando viene effettuata la chiamata. Per impostazione predefinita, cerca come parametro di query denominato apikey nelle richieste HTTP richiesta:

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

    Il nome apikey è arbitrario e può essere qualsiasi proprietà che contiene la chiave API.

Prova a chiamare l'API

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

  1. Operazione riuscita

    In un browser web, vai al seguente indirizzo. Questo è il servizio di destinazione che il proxy 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:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    sostituendo ORG_NAME con il nome del tuo Organizzazione perimetrale.

    Senza il criterio Verify API Key, questa chiamata ti produrrà lo stesso come la chiamata precedente. Ma in questo caso, dovresti ottenere 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 un parametro di query).

Nei passaggi successivi, aggiungerai un prodotto API.

Aggiungi un prodotto API

Per aggiungere un prodotto API utilizzando la UI di Apigee:

  1. Seleziona Pubblica > Prodotti basati su API.
  2. Fai clic su + Prodotto API.
  3. Inserisci i dettagli del prodotto per il tuo prodotto API.

    Campo Descrizione
    Nome Nome interno del prodotto API. Azioni sconsigliate e specificare caratteri speciali nel nome.
    Nota: tu non può modificare il nome dopo la creazione del prodotto API. Per ad esempio helloworld_apikey-Product.
    Nome visualizzato Nome visualizzato del prodotto API. Il nome visualizzato viene utilizzato in dell'interfaccia utente e potrai modificarla in qualsiasi momento. Se non specificato, il parametro Verrà utilizzato il valore del nome. Questo campo viene compilato automaticamente utilizzando Nome valore; puoi modificarne o eliminarne i contenuti. Il display può contenere caratteri speciali. Ad esempio: helloworld_apikey-Product.
    Descrizione Descrizione del prodotto API. Ad esempio, Test product for tutorial.
    Ambiente Ambienti a cui il prodotto API consentirà l'accesso. Ad esempio, test o prod.
    Accesso Seleziona Pubblico.
    Approva automaticamente le richieste di accesso Abilita l'approvazione automatica delle richieste di chiavi per questa API prodotto da qualsiasi app.
    Quota Ignora per questo tutorial.
    Ambiti OAuth consentiti Ignora per questo tutorial.
  4. Nella sezione Risorse API, seleziona il proxy API è stato creato. Ad esempio, helloworld_apikey.
  5. Fai clic su Aggiungi.
  6. Nella sezione Percorsi, aggiungi il percorso "/".
  7. Fai clic su Aggiungi.
  8. Fai clic su Salva.

Nei passaggi successivi, riceverai la chiave API richiesta.

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. Uno sviluppatore avrà una o più app che chiamano le tue API, e ogni app riceve una chiave API univoca. In questo modo, il provider API, un controllo granulare sull'accesso alle tue API e un reporting più granulare sulle Traffico API per app.

Crea uno sviluppatore

Per creare uno sviluppatore:

  1. Seleziona Pubblica > Sviluppatori nel menu.
  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:

    p
    In questo campo fai questo
    Nome e Nome visualizzato Inserisci: keyser_app
    Società / sviluppatore Seleziona: Developer
    Developer Seleziona: Keyser Soze (keyser@example.com)
    Callback URL (URL di callback) e Notes Lascia vuoto
  4. Nella sezione Credenziali, seleziona Mai dal Menu Scadenza. Le credenziali per questa app non scadranno mai.
  5. In Prodotti, fai clic su Aggiungi prodotto.
  6. Seleziona helloworld_apikey-Product.
  7. Fai clic su Aggiungi.
  8. Fai clic su Crea in alto a destra di Dettagli sull'app per salvare il lavoro.

Recuperare la chiave API

Per ottenere la chiave API:

  1. Nella pagina App (Pubblica > App), fai clic su keyser_app.
  2. Nella pagina keyser_app, fai clic su Mostra accanto a Chiave nella sezione Credenziali. Nella sezione Prodotto, nota che la chiave è associata a helloworld_apikey

    di Google.
  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. Invio nel browser web. Sostituisci il nome dell'organizzazione Edge per ORG_NAME e la chiave API per API_KEY di seguito. Assicurati che non ci siano spazi aggiuntivi nel parametro di query.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

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

Complimenti Hai creato un proxy API e lo hai protetto tramite Richiedere l'inclusione di una chiave API valida nella chiamata.

Tieni presente che, in generale, non è buona pratica passare una chiave API come parametro di query. Dovresti prendere in considerazione passandolo nell'intestazione HTTP.

Best practice: passaggio della chiave nell'intestazione HTTP

In questo passaggio modificherai il proxy per cercare la chiave API in un 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 per eseguire il deployment della modifica.
  4. Effettua la seguente chiamata API utilizzando cURL per passare la chiave API come denominata x-apikey. Non dimenticare di sostituire nome dell'organizzazione.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

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

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

Argomenti correlati

Ecco alcuni argomenti direttamente correlati a questo tutorial:

Andando un po' più a fondo, la protezione delle API con le chiavi API è solo una parte dell'argomento. Spesso La protezione delle API comporta una maggiore sicurezza, ad esempio OAuth.

OAuth è un protocollo aperto che, in breve, scambia credenziali (come nome utente e password) con di accesso ai token di accesso. I token di accesso sono lunghe stringhe casuali che possono essere trasmesse intorno a un messaggio anche da un'app all'altra, senza compromettere le credenziali originali. Accesso di token hanno spesso una vita breve, per cui ne vengono sempre generati di nuovi.