Comprensione del token di accesso - Amazon Cognito

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprensione del token di accesso

Il token di accesso al bacino d'utenza contiene attestazioni relative all'utente autenticato, un elenco dei gruppi dell'utente e un elenco di ambiti. Lo scopo del token di accesso è autorizzare le operazioni API. Il pool di utenti accetta i token di accesso per autorizzare le operazioni self-service degli utenti. Ad esempio, puoi utilizzare il token di accesso per consentire agli utenti di accedere per aggiornare, modificare o eliminare gli attributi utente.

Con gli ambiti OAuth 2.0 in un token di accesso, derivati dagli ambiti personalizzati che aggiungi al tuo pool di utenti, puoi autorizzare l'utente a recuperare informazioni da un'API. Gateway Amazon API, ad esempio, supporta l'autorizzazione con token di accesso di Amazon Cognito. Puoi compilare un'autorizzazione REST API con le informazioni del pool di utenti o utilizzare Amazon Cognito come un'autorizzazione token web JSON per un'API HTTP. Per generare un token di accesso con ambiti personalizzati, è necessario effettuare la richiesta tramite gli endpoint pubblici del pool di utenti.

Con il piano di funzionalità Essentials o Plus, puoi anche implementare un trigger Lambda prima della generazione di token che aggiunge ambiti ai token di accesso in fase di esecuzione. Per ulteriori informazioni, consulta Trigger Lambda di pre-generazione del token.

Il token di accesso di un utente con lo openid scopo è l'autorizzazione a richiedere ulteriori informazioni sugli attributi dell'utente al. Endpoint UserInfo La quantità di informazioni dall'userInfoendpoint deriva dagli ambiti aggiuntivi del token di accesso: ad esempio, per tutti i dati dell'utente, profile per il relativo indirizzo email e-mail.

Il token di accesso di un utente con lo aws.cognito.signin.user.admin scopo è l'autorizzazione a leggere e scrivere gli attributi utente, elencare i fattori di autenticazione, configurare le preferenze di autenticazione a più fattori (MFA) e gestire i dispositivi ricordati. Il livello di accesso agli attributi che il token di accesso concede a questo ambito corrisponde alle autorizzazioni di lettura/scrittura degli attributi che assegni al client dell'app.

Il token di accesso è un token Web JSON (JWT). L'intestazione per il token di accesso ha la stessa struttura del token ID. Amazon Cognito firma i token di accesso con una chiave diversa da quella usata per la firma dei token ID. Il valore di un'attestazione ID chiave di accesso (kid) non corrisponde al valore dell'attestazione kid di un token ID nella stessa sessione utente. Verifica nel codice dell'app i token ID e di accesso in modo indipendente. Non considerare attendibili le attestazioni contenute in un token di accesso finché non verifichi la firma. Per ulteriori informazioni, consulta Verifica dei token web JSON. È possibile configurare il periodo di scadenza del token di accesso su qualsiasi valore compreso tra 5 minuti e 1 giorno. Puoi configurare questo valore per il client dell'app.

Importante

Per i token di accesso e ID, non specificare un periodo minimo inferiore a un'ora se utilizzi l'accesso gestito. L'accesso gestito imposta i cookie del browser che sono validi per un'ora. Se si configura una durata del token di accesso inferiore a un'ora, ciò non ha alcun effetto sulla validità del cookie di accesso gestito e sulla capacità degli utenti di riautenticarsi senza credenziali aggiuntive per un'ora dopo l'accesso iniziale.

Intestazione del token di accesso

L'intestazione contiene due informazioni: l'ID della chiave (kid) e l'algoritmo (alg).

{ "kid" : "1234example=" "alg" : "RS256", }
kid

L'ID della chiave . Il valore indica quale chiave è utilizzata per proteggere la firma JWS (JSON Web Signature) del token. È possibile visualizzare la chiave di firma del pool di utenti sull'endpoint. IDs jwks_uri

Per ulteriori informazioni sul kid parametro, consulta la sezione parametro di intestazione dell'ID della chiave (kid).

alg

L'algoritmo di crittografia utilizzato da Amazon Cognito per proteggere il token di accesso. I pool di utenti utilizzano un algoritmo RS256 crittografico, che è una firma RSA con SHA-256.

Per ulteriori informazioni sul alg parametro, consultare la sezione relativa al parametro di intestazione dell'algoritmo (alg).

Payload predefinito del token di accesso

Questo è un esempio di payload di un token di accesso. Per ulteriori informazioni, consultare la sezione relativa alle attestazioni JWT. Puoi aggiungere rivendicazioni personalizzate con unTrigger Lambda di pre-generazione del token.

<header>. { "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups":[ "testgroup" ], "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "version":2, "client_id":"xxxxxxxxxxxxexample", "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use":"access", "scope":"phone openid profile resourceserver.1/appclient2 email", "auth_time":1676313851, "exp":1676317451, "iat":1676313851, "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "username":"my-test-user" } .<token signature>
sub

Un identificatore univoco (UUID), o oggetto, per l'utente autenticato. Il nome utente potrebbe non essere univoco nel pool di utenti. l'attestazione sub è il modo migliore per identificare un determinato utente.

cognito:groups

Una serie di nomi di gruppi del pool di utenti che includono l'utente come membro.

iss

Il provider di identità che ha emesso il token. L'attestazione ha il seguente formato.

https://cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE

client_id

Il client dell'app del pool di utenti che ha autenticato l'utente. Amazon Cognito restituisce lo stesso valore nell'attestazione aud del token ID.

origin_jti

Un identificatore di revoca del token associato al token di aggiornamento dell'utente. Amazon Cognito fa riferimento all'origin_jtiaffermazione quando verifica se hai revocato il token dell'utente con l'operazione Endpoint Revoke o l'RevokeTokenAPI. Quando revochi un token, Amazon Cognito non convalida più i token di accesso e ID con lo stesso valore. origin_jti

token_use

Lo scopo previsto del token. In un token di accesso, il valore è access.

scope

Un elenco di ambiti OAuth 2.0 rilasciato all'utente che ha effettuato l'accesso. Gli ambiti definiscono l'accesso che il token fornisce alle operazioni self-service esterne APIs degli utenti e ai dati degli utenti sull'endpoint. userInfo Un token dell'Endpoint Token può contenere tutti gli ambiti supportati dal client dell'app. Un token dell'accesso API di Amazon Cognito contiene solo l'ambito aws.cognito.signin.user.admin.

auth_time

L'ora di fine dell'autenticazione dell'utente, in formato Unix.

exp

L'ora di scadenza del token dell'utente, in formato Unix.

iat

L'ora di emissione del token dell'utente da parte di Amazon Cognito, in formato Unix.

jti

L'identificatore univoco del JWT.

username

Il nome utente dell'utente nel pool di utenti.

Firma del token di accesso

La firma del token di accesso, firmata con la chiave pubblicizzata sull'.well-known/jwks.jsonendpoint, convalida l'integrità dell'intestazione e del payload del token. Quando utilizzi i token di accesso per autorizzare l'accesso a utenti esterni APIs, configura sempre l'autorizzatore dell'API per verificare questa firma rispetto alla chiave che l'ha firmata. Per ulteriori informazioni, consulta Verifica dei token web JSON.