Questa pagina descrive come aggiungere il supporto nell'API per l'autenticazione utente dalle applicazioni client utilizzando Cloud Endpoints Frameworks. Tieni presente che i client Android e JavaScript sono attualmente supportati.
Endpoints Frameworks supporta l'autenticazione degli utenti da applicazioni client che utilizzano una qualsiasi 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 seguenti sezioni:
Prerequisiti
Questa pagina presuppone che tu abbia già:
È stato creato un progetto Google Cloud.
- Se utilizzi JWT nel client per inviare richieste autenticate all'API, il JWT deve trovarsi nell'intestazione di autorizzazione di una richiesta HTTP. Il JWT deve avere le seguenti dichiarazioni obbligatorie:
-
iss
-
sub
-
aud
-
iat
-
exp
-
Autenticazione con Firebase Auth
Per supportare le chiamate dai clienti che utilizzano Firebase Auth:
Importa l'API Cloud Endpoints di App Engine nella tua classe API:
import endpoints
Aggiungi un oggetto emittente Firebase per ciascun client al decoratore 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_NAME
con il nome della tua API. - Sostituisci
VERSION_NUMBER
con la versione dell'API, ad esempiov1
. - Sostituisci code>YOUR_PROJECT_ID con l'ID progetto Google Cloud del client.
- Sostituisci
In ogni metodo API in cui vuoi verificare l'autenticazione corretta, verifica la presenza di un valore
User
valido e, se non è presente, generaerror 401
, come mostrato nella definizione di questo 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 nuovamente 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. Al client deve essere associato un progetto Google Cloud e l'ID progetto deve essere elencato nella configurazione dell'emittente Firebase dell'API.
Autenticazione con Auth0
Per supportare le chiamate da client che utilizzano Auth0:
Importa l'API App Engine Endpoints nella classe API:
import endpoints
Aggiungi 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_NAME
con il nome della tua API. - Sostituisci
VERSION_NUMBER
con la versione dell'API, ad esempiov1
. - Sostituisci
YOUR_ACCOUNT_NAME
con il nome dell'account Auth0 utilizzato per il client.
- Sostituisci
In ogni metodo API in cui vuoi verificare l'autenticazione corretta, verifica la presenza di un valore
User
valido e, se non è presente, generaerror 401
, come mostrato nella definizione di questo 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 eseguire nuovamente il deployment dell'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 dai client che eseguono l'autenticazione mediante 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 le istruzioni, consulta Creazione degli ID client.
Importa l'API App Engine Endpoints nella classe API:
import endpoints
Specifica tutti gli ID client a cui vuoi concedere l'accesso alla tua API in
allowed_client_ids
e specifica anche gli ID client appartenenti ai client Android nel campoaudiences
del 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_IDS
con l'elenco degli ID client OAuth 2 generati da ciascun progetto client e sostituisciANDROID_AUDIENCE
con l'elenco di ID client web Android. L'ID client web è l'ID client con.apps.googleusercontent.com
aggiunto, ad esempio:YOUR_CLIENT_ID.apps.googleusercontent.com
.In ogni metodo API in cui vuoi verificare l'autenticazione corretta, verifica la presenza di un valore
User
valido e, se non è presente, generaerror 401
, come mostrato nella definizione di questo 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 nuovamente il deployment dell'API Endpoints ogni volta che aggiungi nuovi client.
Aggiunta dell'autenticazione tramite token ID Google a un client
Per informazioni sull'aggiunta del codice di autenticazione ai client, vedi quanto segue:
Passaggi successivi
Per informazioni di base sull'autenticazione utente e su come si differenzia dall'autorizzazione delle chiavi API, consulta Quando e perché utilizzare le chiavi API.