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 distinzione tra questi due è:
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 esegue 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 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 in genere hanno due scopi:
Autenticazione utente : verifica in modo sicuro che l'utente chiamante sia chi dichiara di essere.
Autorizzazione utente : verifica se l'utente deve avere l'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 abbia l'autorizzazione per chiamare un'API. In base a questa autenticazione, il server API decide se autorizzare una richiesta.
Se hai bisogno della possibilità di identificare l'utente che effettua la chiamata, consulta Autenticare gli 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 client, il che rende facile per chiunque rubare una chiave API. Una volta rubata, la chiave non ha una scadenza, quindi può essere utilizzata a tempo indeterminato, 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, consulta Autenticare gli utenti.
Quando utilizzare le chiavi API
Un'API può limitare alcuni o tutti i suoi metodi per richiedere le chiavi API. È opportuno 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 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 dell'applicazione in API e servizi.
Vuoi filtrare i log in base alla chiave API.
Le chiavi API non possono essere utilizzate per:
Identificare i 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.