Limitazione dell'accesso all'API con le chiavi API

Puoi utilizzare chiavi API per limitare l'accesso a metodi API specifici o a tutti i metodi di un'API. Questa pagina descrive come limitare l'accesso alle API ai client che dispongono di una chiave API e mostra anche come crearne una.

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

Per informazioni sul progetto Google Cloud in cui deve essere creata una chiave API, consulta Condivisione delle API protette dalla chiave API.

Limitazione dell'accesso a tutti i metodi dell'API

Per richiedere una chiave API per tutte le chiamate all'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 tuo 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 restrizione relativa alla chiave API per un metodo

Per disattivare la convalida della chiave API per un'API o un metodo dell'API, rimuovi api_key_required=True (Python) o apiKeyRequired = AnnotationBoolean.TRUE (Java) dall'annotazione o dal decoratore dell'API o del metodo. Quindi, ricompila e reimplementa.

Chiamata a un'API mediante una chiave API

Se un metodo API o un'API richiede una chiave API, fornisci la chiave utilizzando una query parametro 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 dell'host API e la chiave API. Sostituisci echo con il nome dell'API e v1 con la versione dell'API.

Condivisione di API protette da chiave API

Le chiavi API sono associate al progetto Google Cloud in cui per cui sono stati creati. Se decidi di richiedere una chiave API per dell'API, il progetto Google Cloud in cui viene creata la chiave API dipende le risposte alle seguenti domande:

  • Hai bisogno di distinguere tra chi chiama per poter usare le funzionalità di Endpoints come quote di spazio?
  • Tutti gli utenti che chiamano la tua API hanno i propri progetti Google Cloud?
  • Occorre configurare diversi Chiave API limitazioni?

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

Albero decisionale chiave API

Concedi l'autorizzazione per abilitare l'API

Quando devi distinguere tra gli utenti che chiamano la tua API e ogni utente chiamante ha il proprio progetto Google Cloud, puoi concedere ai principali l'autorizzazione per attivare l'API nel proprio progetto Google Cloud. In questo modo, gli utenti della tua API possono creare la propria chiave API utilizzare con l'API.

Ad esempio, supponiamo che il tuo team abbia creato un'API per l'utilizzo interno da parte di vari programmi client della tua azienda e che ogni programma client abbia il 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 ciascun utente per abilitare le tue tramite Google Cloud.
  2. Contatta gli utenti e informali che possono abilitare la tua API nel proprio progetto Google Cloud e creare una chiave API.

Creare un progetto Google Cloud separato per ogni chiamante

Quando devi distinguere tra i chiamanti della tua API e non tutti hanno progetti Google Cloud, puoi creare un progetto Google Cloud separato Chiave API per ogni chiamante. Prima di creare i progetti, valuta attentamente i nomi in modo da poter identificare facilmente il chiamante associato al progetto.

Ad esempio, supponiamo che tu abbia clienti esterni della tua API e non hai idea di come sono stati creati i programmi client che chiamano la tua API. Forse alcuni dei clienti utilizzano i servizi Google Cloud e hanno un progetto Google Cloud, mentre altri no. Per distinguere tra i chiamanti, devi creare un'istanza Progetto Google Cloud e chiave API per ogni chiamante.

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

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

crea una chiave API per ogni chiamante

Se non devi distinguere tra gli utenti che chiamano la tua API, ma vuoi aggiungere limitazioni alle chiavi API, puoi creare una chiave API separata per ogni utente che chiama la tua API 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, crea una chiave API per ogni cliente con le limitazioni della chiave API di cui hai bisogno.
  2. Fornisci la chiave API a ciascun chiamante.

Crea una chiave API per tutti i chiamanti

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

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

Passaggi successivi