Questa pagina descrive come inviare una richiesta autenticata da un'applicazione JavaScript in esecuzione localmente a un'API REST creata utilizzando Cloud Endpoints Frameworks. L'applicazione JavaScript mostra come utilizzare Accedi con Google e come inviare un token ID Google nella richiesta per autenticare l'utente. Quando l'applicazione JavaScript invia la richiesta, Endpoints Frameworks autentica l'utente prima di trasmettere la richiesta al codice di backend in esecuzione nell'ambiente standard di App Engine.
Prerequisiti
Per eseguire l'applicazione JavaScript di esempio:
- Devi aver eseguito il deployment dell'API di esempio da Guida introduttiva agli endpoint per Python. Assicurati di ottenere una risposta corretta quando invii una richiesta all'API, come descritto nella sezione Inviare una richiesta all'API.
Trova l'ID progetto Google Cloud che hai creato per l'API di esempio perché devi aggiungerlo al codice JavaScript di esempio. Se hai bisogno di aiuto per trovare il tuo ID progetto, consulta Elencare i progetti.
Per pubblicare il file
index.html
di esempio contenente il codice JavaScript devi avere un server web sul computer locale. Questa pagina include i passaggi per eseguire un server semplice utilizzando Python, ma puoi utilizzare qualsiasi server web.
Scarica il codice client JavaScript di esempio
Clona il campione sul tuo computer locale:
git clone https://github.com/GoogleCloudPlatform/web-docs-samples
Passa alla directory che contiene il client JavaScript:
cd web-docs-samples/endpoints-frameworks
Creazione di ID client OAuth 2.0
Per configurare l'autenticazione di esempio per il modello, devi configurare un ID client OAuth 2.0 nel codice JavaScript di esempio e nel codice di backend. L'app JavaScript utilizza l'ID client per ottenere un token ID Google dal server OAuth 2.0 di Google e invia il token ID di Google nella richiesta. Endpoints Frameworks utilizza l'ID client per autenticare il token ID inviato dall'app JavaScript nella richiesta.
Per creare un ID client:
In Google Cloud Console, vai alla pagina Credenziali.
Dall'elenco dei progetti, seleziona il progetto creato per l'API di esempio.
Fai clic sul pulsante Crea credenziali, quindi seleziona ID client OAuth. Se è la prima volta che crei un ID client in questo progetto, utilizza i passaggi secondari per impostare il nome di un prodotto nella schermata di consenso; in caso contrario, vai al passaggio successivo.
- Fai clic sul pulsante Configura schermata di consenso.
- Inserisci un nome nel campo Nome applicazione.
- Fai clic su Salva.
In Application type (Tipo di applicazione), fai clic su Web application (Applicazione web).
Nel campo Origini JavaScript autorizzate, inserisci quanto segue:
http://localhost:8080
Fai clic su Crea.
Copia il tuo ID client. L'ID client completo è simile al seguente, ma è univoco per l'applicazione web nel progetto.
271473851874-mtll5dk2vultovbtilt31hakqbinpuvd.apps.googleusercontent.com
Per saperne di più sulla creazione degli ID client, consulta la sezione Configurare OAuth 2.0.
Configurazione del codice di backend e riesecuzione del deployment
Affinché Cloud Endpoints Frameworks possa autenticare la richiesta inviata dall'applicazione JavaScript, devi aggiungere al codice di esempio l'ID client appena creato e ripetere il deployment di un documento OpenAPI aggiornato e del codice di backend dell'applicazione.
La procedura seguente presuppone che tu abbia già eseguito il deployment dell'API di esempio da Guida introduttiva agli endpoint Frameworks for Python. Prima di avviare la procedura seguente, assicurati di ottenere una risposta corretta quando invii una richiesta all'API, come descritto nella sezione Inviare una richiesta all'API.Per configurare il codice di backend e ripetere il deployment:
Nella directory in cui hai clonato il repository di
python-docs-samples
, passa alla directory che contiene l'esempio di Python:cd YOUR_WORKING_DIRECTORY/python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Apri il file
main.py
in un editor di testo.Nella funzione di decorazione della funzione
get_user_email
, sostituisciyour-oauth-client-id.com
con l'ID client appena creato.Salva il file
main.py
.Assicurati di essere nella directory principale di esempio:
python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
Rigenera il documento OpenAPI in modo che contenga l'ID client. Nel comando seguente, sostituisci
YOUR_PROJECT_ID
con il progetto che hai creato per l'API di esempio.python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \ --hostname YOUR_PROJECT_ID.appspot.com
Al termine, verrà visualizzato il seguente messaggio:
OpenAPI spec written to ./echov1openapi.json
Assicurati che l'interfaccia a riga di comando di Google Cloud (
gcloud
) sia autorizzata ad accedere ai tuoi dati e servizi su Google Cloud:gcloud auth login
Imposta il progetto predefinito per l'interfaccia a riga di comando di Google Cloud. Sostituisci
YOUR_PROJECT_ID
con il progetto che hai creato per l'API di esempio:gcloud config set project YOUR_PROJECT_ID
Esegui il deployment del documento OpenAPI aggiornato:
gcloud endpoints services deploy echov1openapi.json
Al termine, il comando restituisce una riga simile alla seguente:
Service Configuration [2018-02-13r2] uploaded for service [example-project-12345.appspot.com]
Copia il nuovo ID di configurazione del servizio.
Apri il file
app.yaml
nel testo. Sostituisci il valore del campoENDPOINTS_SERVICE_VERSION
con il nuovo ID di configurazione del servizio. Ad esempio:ENDPOINTS_SERVICE_NAME: example-project-12345.appspot.com ENDPOINTS_SERVICE_VERSION: 2018-02-13r2
Salva il file
app.yaml
.Esegui di nuovo il deployment del codice di backend:
gcloud app deploy
Configurazione del codice JavaScript
Per configurare il codice JavaScript:
- Nella directory
web-docs-samples/endpoints-frameworks
, apri il filemain.js
in un editor di testo. Nella funzione
initGoogleAuth
, sostituisci YOUR_CLIENT_ID con l'ID client che hai creato.Nella funzione
sendSampleRequest
, sostituisci YOUR_PROJECT_ID con l'ID progetto che hai creato per l'API di esempio.
Invio di una richiesta autenticata
Nella directory in cui hai clonato il repository di
web-docs-samples
, passa alla directory che contiene l'esempio di JavaScript:cd YOUR_WORKING_DIRECTORY/web-docs-samples/endpoints-frameworks
Avvia il tuo server web sulla base della porta
index.html
sulla porta8080
. L'esempio seguente utilizza il server semplice di Python.python -m http.server 8080
Nel browser, inserisci
localhost:8080
.L'applicazione JavaScript mostra due pulsanti.
Fai clic su Sign In (Accedi). Viene visualizzata la pagina Accedi con Google.
Dopo aver eseguito l'accesso, fai clic sul pulsante Invia richiesta di esempio. La prima volta che invii una richiesta, potresti riscontrare un ritardo di circa 20 secondi all'avvio di App Engine. Endpoints Frameworks intercetta le richieste e utilizza l'ID client configurato nel codice di backend per autenticare la richiesta. Se l'autenticazione è riuscita:
Endpoints Frameworks trasmette la richiesta al backend di esempio in esecuzione su App Engine.
Nel codice di backend, il metodo
get_user_email
restituisce l'indirizzo email dell'account utente utilizzato per accedere.Il client JavaScript mostra una finestra di dialogo con l'indirizzo email.
Panoramica del client JavaScript
Il client JavaScript utilizza l'opzione Accedi con Google, che gestisce il flusso OAuth 2.0. Questa sezione fornisce una breve panoramica del codice client JavaScript.
Configurazione di Auth
Carica la libreria Google Platform Platform per creare l'oggetto
gapi
:Dopo il caricamento della libreria Google Platform Platform, carica la libreria
auth2
:Inizializza l'oggetto
GoogleAuth
:
Quando inizializzi l'oggetto GoogleAuth
, devi configurare l'oggetto con il tuo ID client OAuth 2.0 e le eventuali opzioni aggiuntive che vuoi specificare. In genere,
specifichi l'ambito dell'accesso. Gli ambiti consentono all'applicazione di richiedere l'accesso solo alle risorse necessarie, consentendo al tempo stesso agli utenti di controllare il livello di accesso da loro concesso all'applicazione. Prima di iniziare a implementare l'autorizzazione OAuth 2.0, ti consigliamo di identificare gli ambiti a cui la tua applicazione ha bisogno dell'autorizzazione. In questo esempio viene richiesto l'accesso all'ambito https://www.googleapis.com/auth/userinfo.email
, che concede l'accesso per visualizzare l'indirizzo email dell'utente.
Accedi
Dopo aver inizializzato l'oggetto GoogleAuth
, puoi chiedere all'utente di accedere chiamando la funzione signIn
dell'oggetto GoogleAuth
:
Fai una richiesta con il token ID
Quando l'utente completa l'accesso, invia una richiesta con un'intestazione Authorization con il token ID dell'utente:
Passaggi successivi
- Per maggiori informazioni su Accedi con Google, consulta la pagina di riferimento sul client per l'opzione Accedi con Google.