Questa pagina fornisce informazioni di base sulle chiavi API e sull'autenticazione: come vengono utilizzate, le differenze tra loro e gli scenari in cui dovresti prendere in considerazione l'utilizzo delle chiavi API.
Le chiavi API sono per i progetti, l'autenticazione è per gli utenti
Cloud Endpoints gestisce sia le chiavi API sia gli schemi di autenticazione, come Firebase o Auth0. La principale differenza tra le due è:
Le chiavi API identificano il progetto chiamante (l'applicazione o il sito) che esegue la chiamata a un'API.
I token di autenticazione identificano un utente, ovvero la persona che utilizza l'app o il sito.
Le chiavi API forniscono l'autorizzazione per il progetto
Per decidere quale schema è più appropriato, è importante capire cosa possono offrire le chiavi API e l'autenticazione.
Le chiavi API forniscono
Identificazione del progetto: identifica l'applicazione o il progetto che esegue una chiamata a questa API
Autorizzazione del progetto: verifica se all'applicazione chiamante è stato concesso l'accesso per chiamare l'API e se l'API è stata abilitata nel progetto
Le chiavi API non sono sicure quanto i token di autenticazione (consulta Sicurezza delle chiavi API), ma identificano l'applicazione o il progetto che chiama un'API. Vengono generati nel progetto che effettua la chiamata e puoi limitarne l'utilizzo a un ambiente, ad esempio un intervallo di indirizzi IP o un'app per Android o iOS.
Identificando il progetto chiamante, puoi utilizzare le chiavi API per associare le informazioni sull'utilizzo a quel progetto. Le chiavi API consentono al proxy di servizio Extensible (ESP) di rifiutare le chiamate provenienti da progetti a cui non è stato concesso l'accesso o non sono stati abilitati nell' API.Autenticazione degli utenti
Al contrario, gli schemi di autenticazione hanno in genere due scopi:
Autenticazione utente: verifica in modo sicuro che l'utente che chiama sia chi dice di essere.
Autorizzazione utente: verifica se l'utente deve avere accesso per effettuare questa richiesta.
I schemi di autenticazione forniscono un modo sicuro per identificare l'utente che chiama. Endpoints controlla anche il token di autenticazione per verificare che abbia l'autorizzazione per chiamare un'API. In base a questa autenticazione, il server API decide se autorizzare una richiesta.
Se devi essere in grado di identificare l'utente che effettua la chiamata, consulta Autenticazione degli utenti.
Sebbene le chiavi API identifichino il progetto chiamante, non identificano l'utente chiamante. Ad esempio, se hai creato un'applicazione che chiama un'API, una chiave API può identificare l'applicazione che effettua la chiamata, ma non l'identità della persona che utilizza l'applicazione.
Se hai bisogno di un modo più sicuro per limitare i progetti o i servizi che possono chiamare la tua API, consulta Autenticazione tra servizi.
Sicurezza delle chiavi API
In genere, le chiavi API non sono considerate sicure; in genere sono accessibili ai clienti, il che rende facile per qualcuno rubare una chiave API. Una volta rubata, la chiave non ha scadenza, quindi può essere utilizzata a tempo indeterminato, a meno che il proprietario del progetto non la revochi o la rigeneri. Sebbene le restrizioni che puoi impostare su una chiave API riducano questo problema, esistono approcci migliori per l'autorizzazione.
Per esempi, consulta Autenticazione degli utenti.
Quando utilizzare le chiavi API
Un'API può limitare alcuni o tutti i suoi metodi a richiedere chiavi API. È consigliabile farlo se:
Vuoi bloccare il traffico anonimo. Le chiavi API identificano il traffico di un'applicazione per il produttore dell'API, nel caso in cui lo sviluppatore dell'applicazione debba collaborare con il produttore dell'API per eseguire il debug di un problema o mostrare l'utilizzo della propria applicazione.
Vuoi controllare il numero di chiamate effettuate alla tua API.
Vuoi identificare i pattern di utilizzo nel traffico della tua API. Puoi visualizzare l'utilizzo dell'applicazione in API e servizi.
Vuoi filtrare i log in base alla chiave API.
Le chiavi API non possono essere utilizzate per:
Identificazione dei singoli utenti: le chiavi API non identificano gli utenti, ma i progetti.
Autorizzazione sicura.
Identificazione dei creator di un progetto.
Infrastruttura di servizio non fornisce un metodo per cercare direttamente i progetti dalle chiavi API.