Limitazione dell'accesso alle API con le chiavi API

Puoi utilizzare le chiavi API per limitare l'accesso a metodi API specifici o a tutti i metodi in un'API. In questa pagina viene descritto come limitare l'accesso API ai client che hanno una chiave API e viene inoltre mostrato come creare una chiave API.

Se imposti un requisito della chiave API nella tua API, le richieste al metodo, alla classe o all'API protetti vengono rifiutate a meno che non abbiano una chiave generata nel tuo progetto o all'interno di altri progetti appartenenti agli sviluppatori con cui hai concesso l'accesso per abilitare la tua API. Il progetto in cui è stata creata la chiave API non viene registrato e non viene aggiunto all'intestazione della richiesta. Tuttavia, puoi visualizzare il progetto Google Cloud a cui è associato un client nella pagina Servizi endpoint, come descritto in Filtro per progetto consumer specifico.

Per informazioni sul progetto Google Cloud in cui creare una chiave API, consulta Condivisione di API protette da una chiave API.

Limitazione dell'accesso a tutti i metodi dell'API

Per richiedere una chiave API per tutte le chiamate nell'API, aggiungi api_key_required=True al decoratore API. Ad esempio:

@endpoints.api(name='echo', version='v1', api_key_required=True)
class EchoApi(remote.Service):
#...

Limitare l'accesso a metodi API specifici

Per richiedere una chiave API per tutte le chiamate a un metodo API specifico, aggiungi api_key_required=True al decoratore del metodo API. Ad esempio:

endpoints.method(
  # This method takes an Echo message.
  ECHO_RESOURCE,
  # This method returns an Echo message.
  EchoResponse,
  path='echo',
  http_method='POST',
  name='echo_api_key',
  api_key_required=True)
def echo_api_key(self, request):
  output_content = '\n'.join([request.content] * request.n)
  return EchoResponse(content=output_content)

Rimozione della limitazione della chiave API per un metodo

Per disattivare la convalida delle chiavi API per un metodo API o API, rimuovi api_key_required=True (Python) o apiKeyRequired = AnnotationBoolean.TRUE (Java) dall'annotazione o dal decorator dell'API o del metodo. Poi ricompila ed esegui nuovamente il deployment.

Chiamata a un'API mediante una chiave API

Se un metodo API o API richiede una chiave API, fornisci la chiave utilizzando un parametro di query denominato key, come mostrato in questo esempio di cURL:

curl \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{"message": "echo"}' \
    "${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}"

dove HOST e API_KEY sono variabili contenenti rispettivamente il nome host dell'API e la chiave API. Sostituisci echo con il nome dell'API e v1 con la versione dell'API.

Condivisione di API protette dalla chiave API

Le chiavi API sono associate al progetto Google Cloud in cui sono state create. Se hai deciso di richiedere una chiave API per la tua API, il progetto Google Cloud in cui viene creata la chiave API dipende dalle risposte alle seguenti domande:

  • Devi distinguere tra i chiamanti della tua API in modo da poter utilizzare le funzionalità di Endpoints come le quotas?
  • Tutti i chiamanti della tua API hanno i propri progetti Google Cloud?
  • Devi impostare diverse limitazioni relative alle chiavi API?

Puoi utilizzare il seguente albero decisionale come guida per decidere in quale progetto Google Cloud creare la chiave API.

Struttura decisionale della chiave API

Concedi l'autorizzazione per abilitare l'API

Se devi distinguere tra i chiamanti della tua API e ogni chiamante ha un proprio progetto Google Cloud, puoi concedere alle entità l'autorizzazione per abilitare l'API nel proprio progetto Google Cloud. In questo modo, gli utenti della tua API possono creare la propria chiave API da utilizzare con l'API.

Ad esempio, supponi che il tuo team abbia creato un'API per uso interno da parte di vari programmi client della tua azienda e che ogni programma client abbia un proprio progetto Google Cloud. Per distinguere i chiamanti della tua API, la chiave API per ogni chiamante deve essere creata in un progetto Google Cloud diverso. Puoi concedere ai tuoi colleghi l'autorizzazione per abilitare l'API nel progetto Google Cloud a cui è associato il programma client.

Per consentire agli utenti di creare la propria chiave API:

  1. Nel progetto Google Cloud in cui è configurata l'API, concedi a ogni utente l'autorizzazione per abilitare l'API.
  2. Contatta gli utenti e chiedi loro che possono abilitare la tua API nel loro progetto Google Cloud e creare una chiave API.

Creare un progetto Google Cloud separato per ogni chiamante

Se devi distinguere tra i chiamanti della tua API e non tutti i chiamanti dispongono di progetti Google Cloud, puoi creare un progetto Google Cloud e una chiave API separati per ogni chiamante. Prima di creare i progetti, pensa ai nomi dei progetti in modo da poter identificare facilmente il chiamante associato al progetto.

Ad esempio, supponi di avere clienti esterni della tua API e di non sapere come sono stati creati i programmi client che chiamano l'API. Forse alcuni client utilizzano i servizi Google Cloud e hanno un progetto Google Cloud; forse altri no. Per distinguere tra i chiamanti, devi creare un progetto Google Cloud e una chiave API separati per ogni chiamante.

Per creare un progetto Google Cloud e una chiave API separati per ogni chiamante:

  1. Creare un progetto separato per ogni chiamante.
  2. In ogni progetto, abilita l'API e crea una chiave API.
  3. Fornisci la chiave API a ogni chiamante.

Creare una chiave API per ogni chiamante

Se non devi distinguere tra i chiamanti della tua API, ma vuoi aggiungere limitazioni delle chiavi API, puoi creare una chiave API separata per ogni chiamante nello stesso progetto.

Per creare una chiave API per ogni chiamante nello stesso progetto:

  1. Nel progetto in cui è configurata l'API o in un progetto in cui è abilitata l'API, crea una chiave API per ogni cliente che presenta le limitazioni relative alla chiave API di cui hai bisogno.
  2. Fornisci la chiave API a ogni chiamante.

Crea una chiave API per tutti i chiamanti

Se non devi distinguere tra i chiamanti della tua API e non devi aggiungere limitazioni dell'API, ma vuoi comunque richiedere una chiave API (ad esempio per impedire l'accesso anonimo), puoi creare una chiave API utilizzabile da tutti i chiamanti.

Per creare una chiave API per tutti i chiamanti:
  1. Nel progetto in cui è configurata l'API o in un progetto in cui è abilitata l'API, crea una chiave API per tutti i chiamanti.
  2. Assegna la stessa chiave API a tutti i chiamanti.

Passaggi successivi