Questa pagina fornisce informazioni di base sulle chiavi API e sull'autenticazione: come vengono utilizzate ciascuna di queste chiavi, le differenze tra le due 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 distinzione tra questi due è:
Le chiavi API identificano il progetto chiamante, l'applicazione o il sito, effettuando la chiamata a un'API.
I token di autenticazione identificano l'utente, ovvero la persona, che utilizza l'app o il sito.
Le chiavi API forniscono l'autorizzazione dei progetti
Per decidere quale schema è il più appropriato, è importante capire quali chiavi API e autenticazione possono fornire.
Le chiavi API forniscono
Identificazione del progetto: identifica l'applicazione o il progetto che sta effettuando una chiamata a questa API
Autorizzazione del progetto: verifica se all'applicazione chiamante è stato concesso l'accesso per chiamare l'API e se ha abilitato l'API 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 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 al progetto. Le chiavi API consentono a Extensible Service Proxy (ESP) di rifiutare le chiamate provenienti da progetti a cui non è stato concesso l'accesso o che 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 chiamante sia chi dichiara di essere.
Autorizzazione utente: verifica se l'utente deve disporre dell'accesso per effettuare questa richiesta.
Gli schemi di autenticazione forniscono un modo sicuro per identificare l'utente chiamante. Inoltre, Endpoints controlla 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 poter 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 sta effettuando la chiamata, ma non l'identità della persona che la utilizza.
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 client, semplificando il furto di 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. Anche se le restrizioni che puoi impostare su una chiave API mitigano questo problema, esistono approcci migliori per l'autorizzazione.
Ad esempio, consulta la sezione Autenticazione degli utenti.
Quando utilizzare le chiavi API
Un'API potrebbe limitare alcuni o tutti i suoi metodi per richiedere le chiavi API. È consigliabile farlo se:
Vuoi bloccare il traffico anonimo. Le chiavi API identificano il traffico di un'applicazione per il producer di API nel caso in cui lo sviluppatore dell'applicazione debba collaborare con quest'ultimo per eseguire il debug di un problema o mostrare l'utilizzo dell'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 delle applicazioni 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 gli autori di un progetto.
Service Infrastructure non fornisce un metodo per cercare direttamente i progetti dalle chiavi API.