Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la 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 richieda una chiave API.
- Crea un prodotto API, uno sviluppatore e un'app sviluppatore.
- Chiama l'API con una chiave API.
È importante proteggere la tua API da accessi non autorizzati. Un modo per farlo è tramite le chiavi API.
Quando un'app effettua una richiesta a un proxy API configurato per verificare una chiave API, l'app deve fornire una chiave valida. In fase di runtime, il criterio Verifica chiave API controlla che la chiave API fornita:
- È valido
- Non sia stata revocata
- Corrisponde alla chiave API per il prodotto API che espone le risorse richieste
Se la chiave è valida, la richiesta viene consentita. Se la chiave non è valida, la richiesta genera un errore di autorizzazione.
Crea il proxy API
Apigee nella console Cloud
Nella console Google Cloud , vai alla pagina Sviluppo proxy > Proxy API.
- Seleziona la tua organizzazione dal selettore di progetti nel riquadro Google Cloud. Il nome dell'organizzazione è uguale al nome del tuo progetto Google Cloud.
- Fai clic su + Crea.
- Nel riquadro Crea un proxy, in Modello di proxy, seleziona Proxy inverso (il più comune). Un proxy inverso instrada il traffico in entrata a un servizio di backend.
- Configura il proxy come segue:
Nome Valore Nome proxy helloworld_apikey
Base Path /helloapikey
Il percorso di base del progetto fa parte dell'URL utilizzato per inviare richieste al proxy API.
Descrizione hello world protected by API key
Destinazione (API esistente) http://mocktarget.apigee.net
Definisce l'URL di destinazione richiamato da Apigee in una richiesta al proxy API. Questo target restituisce una semplice risposta:
Hello, Guest!
. - Fai clic su Avanti.
- (Facoltativo) Esegui il deployment. Lascia vuoti questi campi.
- Fai clic su Crea.
- Apigee crea il nuovo proxy e mostra il riepilogo dei dettagli del proxy nel riquadro Riepilogo proxy.
UI classica
- Vai alla UI Apigee e accedi.
- Seleziona la tua organizzazione utilizzando il menu a discesa nell'angolo in alto a sinistra dell'interfaccia utente.
-
Fai clic su Sviluppa > Proxy API per visualizzare l'elenco dei proxy API.
- Fai clic su Crea nuovo.
- Nella procedura guidata Crea un proxy, seleziona Reverse proxy (più comune).
- Configura il proxy come segue:
In questo campo Fai questo Nome proxy Inserisci: helloworld_apikey
Project Base Path Cambia con:
/helloapikey
Il percorso di base del progetto fa parte dell'URL utilizzato per effettuare richieste al proxy API.
Descrizione Inserisci: hello world protected by API key
Destinazione (API esistente) Inserisci:
http://mocktarget.apigee.net
Definisce l'URL di destinazione richiamato da Apigee in una richiesta al proxy API. Questo target restituisce una semplice risposta:
Hello, Guest!
. - Fai clic su Avanti.
- Nella pagina Norme comuni, seleziona Chiave API. Questa opzione aggiunge automaticamente due criteri al proxy API e crea un prodotto API necessario per generare la chiave API.
- Fai clic su Avanti.
- Nella pagina Riepilogo, assicurati che sia selezionato un ambiente di deployment e fai clic su Crea ed esegui il deployment.
- Fai clic su Modifica proxy per visualizzare la pagina Panoramica del proxy API.
Visualizza le norme
Apigee nella console Cloud
- Nel riquadro Riepilogo proxy per il proxy helloworld_apikey, fai clic sulla scheda Sviluppa.
- Nel menu Policy, fai clic su Aggiungi policy.
- Nel riquadro Crea criterio, in Sicurezza, seleziona Verifica chiave API.
- Nel riquadro Verifica chiave API, completa i campi obbligatori nelle sezioni
Nome e Nome visualizzato utilizzando i seguenti valori:
- Nome: inserisci un nome per la policy. Ad esempio,
VerifyAPIKey
. - Nome visualizzato: inserisci il nome della policy da utilizzare nell'interfaccia utente. Ad esempio,
Verify API Key
.
- Nome: inserisci un nome per la policy. Ad esempio,
- Fai clic su Crea.
- Fai clic su per aggiungere un'altra policy.
- Nel riquadro Crea criterio, seleziona Assegna messaggio nella sezione Mediazione.
- Nel riquadro Assegna messaggio, compila i campi obbligatori nelle sezioni Nome e Nome visualizzato utilizzando i seguenti valori:
- Nome: inserisci un nome per la policy. Ad esempio,
AssignMessage
. - Nome visualizzato: inserisci il nome della policy da utilizzare nell'interfaccia utente. Ad esempio,
Assign Message
.
- Nome: inserisci un nome per la policy. Ad esempio,
- Fai clic su Crea.
- L'elemento
<APIKey>
nel codice XML riportato di seguito specifica la posizione della chiave API all'interno della richiesta in entrata. Per impostazione predefinita, il criterio recupera la chiave da un parametro di ricerca denominatoapikey
nella richiesta HTTP.<APIKey ref="request.queryparam.apikey" />
Il nome
apikey
è arbitrario e può essere qualsiasi proprietà che contenga la chiave API. - Aggiorna i contenuti della norma Assegna messaggio con i seguenti:
- Aggiungi le policy
VerifyApiKey
eRemove Query Param apikey
.- Nel menu Endpoint proxy, fai clic su Preflow.
- Nel riquadro Richiesta dell'editor visivo, fai clic su Aggiungi passaggio criterio.
- Nel riquadro Passaggio Aggiungi criterio, seleziona Verifica chiave API.
- Fai clic su Aggiungi.
- Nel riquadro Richiesta dell'editor visivo, fai clic su Aggiungi passaggio criterio.
- Nel riquadro Aggiungi passaggio criterio, seleziona Rimuovi parametro di query apikey.
- Fai clic su Aggiungi.
- Fai clic su Salva.
- Esegui il deployment del proxy in un ambiente:
- Fai clic su Esegui il deployment.
- Seleziona una revisione e un ambiente.
- Fai clic su Esegui il deployment.
- Testa le modifiche chiamando l'API come descritto in Prova a chiamare l'API.
<AssignMessage async="false" continueOnError="false" enabled="true" name="remove-query-param-apikey"> <DisplayName>Remove Query Param apikey</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
UI classica
- Nell'editor proxy API, fai clic sulla scheda Sviluppa. Vedrai che sono state aggiunte due
norme al flusso di richieste del proxy API:
- Verifica chiave API: controlla la chiamata API per assicurarsi che sia presente una chiave API valida (inviata come parametro di query).
- Remove Query Param apikey: una policy Assign Message che rimuove la chiave API dopo che è stata controllata, in modo che non venga passata e esposta inutilmente.
-
Fai clic sull'icona del criterio Verifica chiave API nella visualizzazione del flusso e guarda la configurazione XML del criterio nella visualizzazione del codice in basso. L'elemento
<APIKey>
indica alla policy dove cercare la chiave API quando viene effettuata la chiamata. Per impostazione predefinita, cerca la chiave come parametro di query chiamatoapikey
nella richiesta HTTP:<APIKey ref="request.queryparam.apikey" />
Il nome
apikey
è arbitrario e può essere qualsiasi proprietà che contenga la chiave API.
Prova a chiamare l'API
In questo passaggio, effettuerai una chiamata API riuscita direttamente al servizio di destinazione, quindi effettuerai una chiamata non riuscita al proxy API per vedere come viene protetto dai criteri.
-
Operazione riuscita
In un browser web, vai al seguente indirizzo. Questo è il servizio di destinazione a cui il proxy API è configurato per inoltrare la richiesta, ma per ora lo raggiungerai direttamente:
http://mocktarget.apigee.net
Dovresti ricevere questa risposta di esito positivo:
Hello, Guest!
-
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 Trovare il nome host del gruppo di ambienti.Senza il criterio Verifica chiave API, questa chiamata restituirebbe la stessa risposta della chiamata precedente. In questo caso, 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 parametro di query).
Nei passaggi successivi otterrai la chiave API richiesta.
Aggiunta di un prodotto API
Apigee nella console Cloud
Per aggiungere un prodotto API utilizzando l'interfaccia utente Apigee:
Nella console Google Cloud , vai alla pagina Distribuzione > Prodotti API:
- Fai clic su +Crea.
- Inserisci i dettagli del prodotto per il tuo prodotto API.
Campo Descrizione Nome Nome interno del prodotto API. Non specificare caratteri speciali nel nome.
Nota:non puoi modificare il nome una volta creato il prodotto API.Nome visualizzato Nome visualizzato per il prodotto API. Il nome visualizzato viene utilizzato nell'interfaccia utente e puoi modificarlo in qualsiasi momento. Se non specificato, viene utilizzato il valore Name. Questo campo viene compilato automaticamente utilizzando il valore Nome; puoi modificare o eliminare i suoi contenuti. Il nome visualizzato può includere caratteri speciali. Descrizione Descrizione del prodotto API. Ambiente Gli ambienti a cui il prodotto API consentirà l'accesso. Ad esempio, test
oprod
.Accesso Seleziona Public (Pubbliche). Approvare 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. - Nella sezione Operazioni, fai clic su Aggiungi un'operazione.
- Nel campo Proxy API, seleziona il proxy API che hai appena creato.
- Nel campo Percorso, inserisci "/". Ignora gli altri campi.
- Fai clic su Salva per salvare l'operazione.
- Fai clic su Salva per salvare il prodotto API.
Per saperne di più sull'aggiunta di un prodotto API, consulta Crea un prodotto API.
UI classica
Per aggiungere un prodotto API utilizzando l'interfaccia utente Apigee:
- Seleziona Pubblica > Prodotti API.
- Fai clic su +Crea.
- Inserisci i dettagli del prodotto per il tuo prodotto API.
Campo Descrizione Nome Nome interno del prodotto API. Non specificare caratteri speciali nel nome.
Nota:non puoi modificare il nome una volta creato il prodotto API.Nome visualizzato Nome visualizzato per il prodotto API. Il nome visualizzato viene utilizzato nell'interfaccia utente e puoi modificarlo in qualsiasi momento. Se non specificato, verrà utilizzato il valore Nome. Questo campo viene compilato automaticamente utilizzando il valore Nome. Puoi modificare o eliminare i contenuti. Il nome visualizzato può includere caratteri speciali. Descrizione Descrizione del prodotto API. Ambiente Gli ambienti a cui il prodotto API consentirà l'accesso. Ad esempio, test
oprod
.Accesso Seleziona Public (Pubbliche). Approvare 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. - Nella sezione Operazioni, fai clic su AGGIUNGI UN'OPERAZIONE.
- Nel campo Proxy API, seleziona il proxy API appena creato.
- Nel campo Percorso, inserisci "/". Ignora gli altri campi.
- Fai clic su Salva per salvare l'operazione.
- Fai clic su Salva per salvare il prodotto API.
Aggiungere uno sviluppatore e un'app alla tua organizzazione
Successivamente, 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, in qualità di fornitore di API, avrai un controllo più granulare sull'accesso alle tue API e report più granulari sul traffico API per app.
Creare uno sviluppatore
Apigee nella console Cloud
Per creare uno sviluppatore:
-
Nella console Google Cloud , vai alla pagina Distribuzione > Sviluppatori:
- Fai clic su + Crea.
- Inserisci quanto segue nella finestra Aggiungi sviluppatore:
Campo Valore Nome Keyser
Cognome Soze
Email keyser@example.com
Nome utente keyser
- Fai clic su Aggiungi.
Per ulteriori informazioni sulla creazione di uno sviluppatore, vedi Registrazione degli sviluppatori di app.
UI classica
Per creare uno sviluppatore:
- Seleziona Pubblica > Sviluppatori nel menu.
Nota: se ti trovi ancora nella schermata Sviluppa, fai clic su "<" accanto a SVILUPPA per visualizzare il menu e seleziona Pubblica > Sviluppatori. - Fai clic su + Sviluppatore.
- Nella finestra Nuovo sviluppatore, inserisci quanto segue:
In questo campo invio Nome Keyser
Cognome Soze
Nome utente keyser
Email keyser@example.com
- Fai clic su Crea.
Registrare un'app
Apigee nella console Cloud
-
Nella console Google Cloud , vai alla pagina Distribuzione > App:
- Fai clic su + Crea.
- Nella finestra Crea app, inserisci quanto segue:
Campo Valore Nome applicazione Inserisci: keyser_app
Nome visualizzato Inserisci: keyser_app
Developer Seleziona: Keyser Soze (keyser@example.com)
URL di callback Lascia vuoto Note Lascia vuoto - Nella sezione Credenziali, fai clic su Aggiungi credenziale.
- Seleziona Mai. Le credenziali per questa app non scadranno mai.
- Fai clic su Aggiungi prodotti.
- Seleziona il prodotto appena creato.
- Fai clic su Aggiungi.
- Fai clic su Crea.
Per saperne di più sulla registrazione di un'app, vedi Registrazione di un'app.
UI classica
Per registrare un'app per sviluppatori:
- Seleziona Pubblica > App.
- Fai clic su + App.
- Nella finestra Nuova app per sviluppatori, inserisci quanto segue:
Campo Valore Nome e Nome visualizzato Inserisci: keyser_app
Developer Seleziona: Keyser Soze (keyser@example.com)
URL di callback e Note Lascia vuoto - Nella sezione Credenziali, seleziona Mai. Le credenziali per questa app non scadranno mai.
- Fai clic su Aggiungi prodotto.
- Seleziona il prodotto appena creato.
- Fai clic su Crea.
Recuperare la chiave API
Apigee nella console Cloud
Per ottenere la chiave API:
Nella console Google Cloud , vai alla pagina Distribuzione > App.
- Seleziona l'app che ti interessa dall'elenco.
- Nella pagina Visualizza app, in Credenziali, fai clic su accanto al campo Chiave. Tieni presente che la chiave è associata al prodotto che hai creato.
- Fai clic su Copia. Utilizzerai questa chiave nel passaggio successivo.
UI classica
Per ottenere la chiave API:
- Nella pagina App (Pubblica > App), fai clic su keyser_app.
- 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.
- Seleziona e copia la chiave. Lo utilizzerai nel passaggio successivo.
Chiamare l'API con una chiave
Ora che hai una chiave API, puoi utilizzarla per chiamare il proxy API. Incolla la chiave API come mostrato, come parametro di query. Assicurati che non ci siano spazi 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 che nella chiamata sia inclusa una chiave API valida.
Tieni presente che in generale non è consigliabile passare una chiave API come parametro di query. Ti consigliamo di passarlo nell'intestazione HTTP.
Best practice: passare la chiave nell'intestazione HTTP
In questo passaggio, modificherai il proxy in modo che cerchi la chiave API in un'intestazione denominata x-apikey
.
Apigee nella console Cloud
- Nella console Google Cloud , vai alla pagina Sviluppo proxy > Proxy API.
- Seleziona il proxy richiesto dall'elenco.
- Nella pagina Dettagli proxy, fai clic su Sviluppa.
- Modifica il file XML del criterio per indicare al criterio di cercare nell'intestazione anziché nel parametro di ricerca:
- Fai clic su Salva per salvare le modifiche.
- Fai clic su Esegui il deployment.
- Seleziona una revisione e un ambiente.
- Fai clic su Esegui il deployment.
-
Effettua la seguente chiamata API utilizzando cURL per passare la chiave API come intestazione chiamata
x-apikey
. Non dimenticare di sostituire il nome dell'organizzazione.curl -v -H "x-apikey: YOUR_API_KEY" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey
<APIKey ref="request.header.x-apikey"/>
Tieni presente che, per completare la modifica, devi anche configurare il criterio Assegna messaggio per rimuovere l'intestazione anziché il parametro di query. Ad esempio:
<Remove> <Headers> <Header name="x-apikey"/> </Headers> </Remove>
UI classica
- Modifica il proxy API. Seleziona Sviluppa > Proxy API > helloworld_apikey e vai alla visualizzazione Sviluppa.
-
Seleziona la policy Verifica chiave API e modifica l'XML della policy in modo che cerchi in
header
anziché inqueryparam
:<APIKey ref="request.header.x-apikey"/>
- Salva il proxy API e utilizza Esegui il deployment per eseguirne il deployment.
-
Effettua la seguente chiamata API utilizzando cURL per passare la chiave API come intestazione chiamata
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, devi anche configurare il criterio 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 a prodotti e chiavi API:
- Gestione dei prodotti API
- Chiavi API
- Registrazione degli sviluppatori di app
- Registrare le app e gestire le chiavi API
- Norme relative alla verifica della chiave API
La protezione delle API spesso comporta misure di sicurezza aggiuntive come OAuth, un protocollo aperto che scambia le credenziali (come nome utente e password) con token di accesso. I token di accesso sono stringhe lunghe e casuali che possono essere trasmesse tramite una pipeline di messaggi, anche da app ad app, senza compromettere le credenziali originali.
Per una panoramica degli argomenti relativi alla sicurezza, vedi Proteggere un proxy.