Questa pagina descrive come aggiungere il supporto nell'API per l'autenticazione utente dalle applicazioni client utilizzando i framework Cloud Endpoints. Tieni presente che al momento sono supportati i client Android e JavaScript.
Endpoints Frameworks supporta l'autenticazione utente dalle applicazioni client che utilizzano una delle seguenti metodologie:
Indipendentemente dal metodo di autenticazione utilizzato, in ogni metodo API in cui vuoi
verificare l'autenticazione corretta, devi verificare la presenza di un User valido come
descritto nelle sezioni seguenti:
Prerequisiti
Questa pagina presuppone che tu abbia già:
Ha creato un Google Cloud progetto.
- Se utilizzi JWT nel client per inviare richieste autenticate all'API,
il JWT deve essere nell'intestazione di autorizzazione di una richiesta HTTP. Il JWT deve
avere le seguenti rivendicazioni obbligatorie:
-
iss -
sub -
aud -
iat -
exp
-
Autenticazione con Firebase Auth
Per supportare le chiamate dai clienti che utilizzano Firebase Auth:
Importa l'API App Engine Cloud Endpoints nella classe API:
import endpointsAggiungi un oggetto emittente Firebase per ogni client al decorator API. Ad esempio:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'firebase': endpoints.Issuer( 'https://securetoken.google.com/YOUR_PROJECT_ID, 'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})- Sostituisci
YOUR_API_NAMEcon il nome della tua API. - Sostituisci
VERSION_NUMBERcon la versione dell'API, ad esempiov1. - Sostituisci code>YOUR_PROJECT_ID con l'ID progetto del cliente. Google Cloud
- Sostituisci
In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un
Uservalido e generaerror 401se non è presente, come mostrato in questa definizione di metodo di esempio:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.Esegui il deployment dell'API Endpoints. Devi eseguire di nuovo il deployment dell'API Endpoints ogni volta che aggiungi nuovi client.
Aggiunta dell'autenticazione Firebase a un client
Puoi aggiungere l'autenticazione Firebase al tuo codice come descritto nella documentazione di Firebase. Il client deve avere un progetto Google Cloud associato e l'ID progetto deve essere elencato nella configurazione dell'emittente Firebase dell'API.
Autenticazione con Auth0
Per supportare le chiamate dei clienti che utilizzano Auth0:
Importa l'API App Engine Endpoints nella classe API:
import endpointsAggiungi un oggetto emittente Auth0 per ogni client al decoratore API. Ad esempio:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'auth0': endpoints.Issuer( 'https://YOUR_ACCOUNT_NAME.auth0.com', 'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})- Sostituisci
YOUR_API_NAMEcon il nome della tua API. - Sostituisci
VERSION_NUMBERcon la versione dell'API, ad esempiov1. - Sostituisci
YOUR_ACCOUNT_NAMEcon il nome dell'account Auth0 utilizzato per il cliente.
- Sostituisci
In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un
Uservalido e generaerror 401se non è presente, come mostrato in questa definizione di metodo di esempio:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.Distribuisci l'API . Devi ridistribuire l'API ogni volta che aggiungi nuovi client.
Aggiunta dell'autenticazione Auth0 a un client
Puoi aggiungere l'autenticazione Auth0 al tuo codice come descritto nella documentazione di Auth0. Il client deve essere elencato nella configurazione dell'emittente Auth0 dell'API.
Autenticazione con i token ID Google
Per supportare le chiamate dei client che eseguono l'autenticazione utilizzando i token ID Google:
Ottieni un ID client OAuth 2 per ogni applicazione client. Il proprietario dell'applicazione client deve generare l'ID client dalla console Google Cloud . Per istruzioni, vedi Creare ID client.
Importa l'API App Engine Endpoints nella classe API:
import endpointsSpecifica tutti gli ID client a cui vuoi concedere l'accesso alla tua API nel campo
allowed_client_idse specifica anche gli ID client appartenenti a client Android nel campoaudiencesnel decoratore API. Ad esempio:@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', allowed_client_ids=ALLOWED_CLIENT_IDS, audiences=[ANDROID_AUDIENCE]) class AuthedGreetingApi(remote.Service): # ...Sostituisci
ALLOWED_CLIENT_IDScon l'elenco degli ID client OAuth 2 generati da ogni progetto del client e sostituisciANDROID_AUDIENCEcon l'elenco degli ID client web Android. L'ID client web è l'ID client con.apps.googleusercontent.comaggiunto, ad esempio:YOUR_CLIENT_ID.apps.googleusercontent.com.In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un
Uservalido e generaerror 401se non è presente, come mostrato in questa definizione di metodo di esempio:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.Esegui il deployment dell'API Endpoints. Devi eseguire di nuovo il deployment dell'API Endpoints ogni volta che aggiungi nuovi client.
Aggiunta dell'autenticazione con token ID Google a un client
Per informazioni sull'aggiunta del codice di autenticazione ai client, consulta quanto segue:
Passaggi successivi
Per informazioni di base sull'autenticazione utente e su come si differenzia dall'autorizzazione della chiave API, consulta Quando e perché utilizzare le chiavi API.