Utilizzo 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à.

Utilizzo 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, determinato dagli ambiti personalizzati che aggiungi al 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.

Il token di accesso dell'utente è l'autorizzazione a richiedere ulteriori informazioni sugli attributi dell'utente all'Endpoint UserInfo. Inoltre, è anche l'autorizzazione a leggere e scrivere gli attributi dell'utente. Il livello di accesso agli attributi autorizzato dal token di accesso dipende dalle autorizzazioni assegnate al client dell'app e dagli ambiti forniti nel token.

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 di un JSON Web Token. È 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 ID e di accesso non specificare un valore minimo inferiore a un'ora se utilizzi l'interfaccia utente ospitata. Amazon Cognito HostedUI utilizza cookie validi per un'ora. Inserendo un minimo di meno di un'ora, non si otterrà un tempo di scadenza inferiore.

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 gli ID delle chiavi di firma del pool di utenti nell'endpoint 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 bacini d'utenza utilizzano un algoritmo crittografico RS256, ovvero 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

L'identificatore univoco (UUID), o soggetto, dell'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.<Region>.amazonaws.com/<your user pool ID>

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 invalida tutti 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 che definiscono l'accesso fornito dal token. 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 nel pool di utenti.

Firma del token di accesso

La firma del token di accesso viene calcolata in base all'intestazione e al payload del token JWT. Se utilizzi il token al di fuori di un'applicazione nelle API Web, devi verificare sempre questa firma prima di accettare il token. Per ulteriori informazioni, consulta Verifica di un JSON Web Token.