In questa pagina viene descritto come supportare l'autenticazione utente in Cloud Endpoints.
Per autenticare un utente, un'applicazione client deve inviare un JSON Web Token (JWT) nell'intestazione di autorizzazione del file HTTP all'API backend. La Extensible Service Proxy (ESP) convalida il token per conto dell'API, quindi non è necessario aggiungere alcun codice l'API per elaborare l'autenticazione. Tuttavia, devi configurare il tuo Documento OpenAPI per supportare i metodi di autenticazione scelti.
ESP convalida un JWT in modo efficace utilizzando il linguaggio le chiavi pubbliche dell'emittente. ESP memorizza nella cache le chiavi pubbliche per minuti. Inoltre, ESP memorizza nella cache JWT convalidati per cinque minuti o fino alla scadenza di JWT, a seconda dell'evento che si verifica per primo.
Prima di iniziare
- Aggiungi un codice di autenticazione all'applicazione client per consentire agli utenti di autenticati accedendo con un Account Google.
-
Quando l'applicazione client invia una richiesta HTTP, l'intestazione di autorizzazione
la richiesta deve contenere le seguenti attestazioni JWT:
iss
(emittente)sub
(oggetto)aud
(pubblico)iat
(emissione:)exp
(tempo di scadenza)
Configurazione di ESP per supportare l'autenticazione client
Devi disporre di un requisito e un oggetto definizioni nel documento OpenAPI affinché ESP le attestazioni nel JWT firmato.
Per supportare l'autenticazione utilizzando un token ID Google:
Aggiungi quanto segue alla definizione di sicurezza in OpenAPI documento:
securityDefinitions: google_id_token: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "https://accounts.google.com" x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs" # Optional. Replace YOUR-CLIENT-ID with your client ID x-google-audiences: "YOUR-CLIENT-ID"
Aggiungi una sezione di sicurezza a livello di API per applicarla all'intera API o a livello di metodo per applicarla a un metodo specifico.
security: - google_id_token: []
Puoi definire più definizioni di sicurezza nel documento OpenAPI, ma ogni deve avere un emittente diverso. Se utilizzi le sezioni di sicurezza in a livello di API, mentre le impostazioni a livello di metodo hanno la precedenza Impostazioni a livello di API.
Il campo x-google-audiences
non è obbligatorio. ESP
accetta tutti i JWT con il nome del servizio di backend sotto forma di
https://SERVICE_NAME
nella rivendicazione aud
. A
consentire a ID client aggiuntivi di accedere al servizio di backend, puoi specificare
ID cliente consentiti nel campo x-google-audiences
utilizzando
separati da virgole. ESP accetta quindi i JWT con qualsiasi
ID cliente specificati nella rivendicazione aud
.
Puoi anche personalizzare le località JWT aggiungendo x-google-extensions
. Per maggiori dettagli, vedi Estensioni openAPI.
Chiamata autenticata a un'API Endpoints
Per motivi di sicurezza, quando invii una richiesta utilizzando un token di autenticazione,
ti consigliamo di inserire il token nell'intestazione Authorization:Bearer
. Per
esempio:
curl -H "Authorization: Bearer ${TOKEN}" "${ENDPOINTS_HOST}/echo"
In questo caso, ENDPOINTS_HOST
e TOKEN
sono variabili di ambiente contenenti
rispettivamente nome host e token di autenticazione dell'API. Consulta
Eseguire una richiesta autenticata a un'API Endpoints.
per il codice di esempio che invia una richiesta utilizzando l'intestazione Authorization:Bearer
.
Se non puoi utilizzare l'intestazione quando invii la richiesta, puoi inserire il
in un parametro di query chiamato access_token
. Ad esempio:
curl "${ENDPOINTS_HOST}/echo?access_token=${TOKEN}"
Ricevere i risultati dell'autenticazione nell'API
ESP di solito inoltra tutte le intestazioni che riceve. Tuttavia, sostituisce il
l'intestazione Authorization
originale quando l'indirizzo di backend è specificato da
x-google-backend
nella specifica OpenAPI o BackendRule
nella configurazione del servizio gRPC.
L'ESP invierà il risultato dell'autenticazione in X-Endpoint-API-UserInfo
all'API di backend. Ti consigliamo di utilizzare questa intestazione anziché l'originale
Intestazione Authorization
. Questa intestazione è una stringa codificata da base64url
un oggetto JSON. Il formato degli oggetti JSON è diverso tra ESPv2 ed ESP.
Per ESPv2, l'oggetto JSON è esattamente il payload JWT originale. Per ESP,
l'oggetto JSON utilizza nomi di campo diversi e inserisce il payload JWT originale nel campo claims
.
Consulta Gestire i JWT nel servizio di backend
per ulteriori informazioni sul formato.
Passaggi successivi