Questa pagina fornisce informazioni di base su chiavi API e autenticazione: come vengono utilizzate ciascuna di queste, le differenze tra loro e gli scenari in cui è consigliabile utilizzare le 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 distinzione tra questi due elementi è:
Le chiavi API identificano il progetto chiamante, ovvero 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 del progetto
Per decidere quale schema è più appropriato, è importante capire cosa possono fornire 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 come i token di autenticazione (vedi Sicurezza delle chiavi API), ma identificano l'applicazione o il progetto che chiama un'API. Vengono generate nel progetto che effettua la chiamata e puoi limitarne l'utilizzo a un ambiente come un intervallo di indirizzi IP o un'app 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 a Cloud Endpoints Frameworks 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 in genere hanno due scopi:
Autenticazione utente: verifica in modo sicuro che l'utente chiamante sia chi afferma di essere.
Autorizzazione utente: verifica se l'utente deve avere accesso per effettuare questa richiesta.
Gli schemi di autenticazione forniscono un modo sicuro per identificare l'utente chiamante. Endpoints controlla anche il token di autenticazione per verificare che disponga dell'autorizzazione per chiamare un'API. In base a questa autenticazione, il server API decide di autorizzare una richiesta.
Se hai bisogno 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 la sezione Autenticazione tra servizi.
Sicurezza delle chiavi API
Le chiavi API non sono generalmente considerate sicure; sono in genere accessibili ai client, il che rende facile il furto di una chiave API. Una volta rubata, la chiave non ha scadenza, quindi può essere utilizzata per un tempo illimitato, a meno che il proprietario del progetto non la revochi o la rigeneri. Sebbene le limitazioni che puoi impostare su una chiave API mitighino questo problema, esistono approcci migliori per l'autorizzazione.
Per esempi, vedi Autenticazione degli utenti.
Quando utilizzare le chiavi API
Un'API può limitare alcuni o tutti i suoi metodi per richiedere chiavi API. Ha senso 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.
Identificare i creator di un progetto.
Service Infrastructure non fornisce un metodo per cercare direttamente i progetti dalle chiavi API.