Utilizzo di Okta per autenticare gli utenti
In questa pagina viene descritto come supportare l'autenticazione utente in API Gateway.
Per autenticare un utente, un'applicazione client deve inviare all'API di backend un token web JSON (JWT) nell'intestazione di autorizzazione della richiesta HTTP. API Gateway convalida il token per conto dell'API, così non devi aggiungere alcun codice all'API per elaborare l'autenticazione. Tuttavia, devi configurare la configurazione API per il gateway in modo da supportare i metodi di autenticazione scelti.
API Gateway convalida un JWT a prestazioni elevate utilizzando il JSON Web Key Set (JWKS) dell'emittente JWT. La località del JWKS è specificata nel campo x-google-jwks_uri
della configurazione API del gateway. API Gateway memorizza nella cache il JWKS per cinque minuti e lo aggiorna ogni cinque minuti.
Prima di iniziare
- Aggiungi il codice di autenticazione all'applicazione client, seguendo la guida all'integrazione con Okta per Google Cloud Endpoints.
-
Quando l'applicazione client invia una richiesta HTTP, l'intestazione di autorizzazione nella richiesta deve contenere le seguenti attestazioni JWT:
iss
(emittente)sub
(oggetto)aud
(pubblico)iat
(emesso in data)exp
(data di scadenza)
Configurazione di API Gateway per supportare l'autenticazione client
Devi avere un oggetto requisito di sicurezza e un oggetto definizioni di sicurezza nella configurazione API per API Gateway per convalidare le attestazioni nel JWT firmato.
Come spiegato nella guida all'integrazione di Okta per Google Cloud Endpoints, apporti le seguenti modifiche al documento OpenAPI:
Aggiungi quanto segue alla definizione di sicurezza nella configurazione API, che segue lo schema di sicurezza OpenAPI 2.0. Sostituisci
YOUR_OKTA_TENANT_NAME
con il nome del tenant Okta eYOUR_OKTA_CLIENT_ID
con l'ID client che hai creato nel tenant Okta.securityDefinitions: okta_jwt: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "https://YOUR_OKTA_TENANT_NAME.com" x-google-jwks_uri: "https://YOUR_OKTA_TENANT_NAME.com/oauth2/v1/keys" x-google-audiences: "YOUR_OKTA_CLIENT_ID"
Aggiungi una sezione sulla sicurezza a livello di API da applicare all'intera API o a livello di metodo per applicarla a un metodo specifico.
security: - okta_jwt: []
Puoi definire più definizioni di sicurezza nella configurazione API, ma ogni definizione deve avere un emittente diverso. Se utilizzi sezioni di sicurezza sia a livello di API che a livello di metodo, le impostazioni a livello di metodo hanno la precedenza su quelle a livello di API.
Il campo x-google-audiences
non è obbligatorio. API Gateway accetta tutti i JWT con il nome del servizio di backend sotto forma di https://SERVICE_NAME
nell'attestazione aud
.
Per consentire a ulteriori ID client di accedere al servizio di backend, puoi specificare gli ID client consentiti nel campo x-google-audiences
utilizzando valori separati da virgole. API Gateway accetta quindi i JWT con uno qualsiasi degli ID client specificati nella attestazione aud
.
Esecuzione di una chiamata autenticata a un'API API Gateway
Quando invii una richiesta utilizzando un token di autenticazione, ti consigliamo di inserirlo nell'intestazione Authorization:Bearer
. Ad esempio:
curl --request POST \ --header "Authorization: Bearer ${TOKEN}" \ "${GATEWAY_URL}/echo"
Qui, GATEWAY_URL
e TOKEN
sono variabili di ambiente contenenti, rispettivamente, l'URL del gateway di cui è stato eseguito il deployment e il token di autenticazione. Consulta
Esecuzione di una richiesta autenticata a un'API API Gateway per il codice campione che invia una richiesta utilizzando l'intestazione Authorization:Bearer
.
Se non puoi utilizzare l'intestazione per l'invio della richiesta, puoi inserire il token di autenticazione in un parametro di query chiamato access_token
. Ad esempio:
curl "${GATEWAY_URL}/echo?access_token=${TOKEN}"
Ricezione di risultati autenticati nella tua API
API Gateway in genere inoltra tutte le intestazioni che riceve. Tuttavia, sostituisce l'intestazione Authorization
originale quando l'indirizzo di backend è specificato da x-google-backend
nella configurazione API.
API Gateway invierà il risultato dell'autenticazione in X-Apigateway-Api-Userinfo
all'API di backend. Si consiglia di utilizzare questa intestazione anziché l'intestazione Authorization
originale. Questa intestazione è codificata in base64url
e contiene il payload JWT.