

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

# Comprendere il token di accesso
<a name="amazon-cognito-user-pools-using-the-access-token"></a>

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](https://www.rfc-editor.org/rfc/rfc6749#section-3.3) 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](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) del pool di utenti.

Con il [piano di funzionalità](cognito-sign-in-feature-plans.md) 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](user-pool-lambda-pre-token-generation.md).

Il token di accesso di un utente con lo `openid` scopo è l'autorizzazione a richiedere ulteriori informazioni sugli attributi dell'utente al. [Endpoint UserInfo](userinfo-endpoint.md) La quantità di informazioni dall'`userInfo`endpoint 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 read/write autorizzazioni degli attributi che assegnate al client dell'app.

Il token di accesso è un [token Web JSON (JWT)](https://www.rfc-editor.org/rfc/rfc7519). 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](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). È 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
<a name="user-pool-access-token-header"></a>

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)](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.5).

**`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)](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.4).

## Payload predefinito del token di accesso
<a name="user-pool-access-token-payload"></a>

Questo è un esempio di payload di un token di accesso. Per ulteriori informazioni, consultare la sezione relativa alle [attestazioni JWT](https://tools.ietf.org/html/rfc7519#section-4). Puoi aggiungere rivendicazioni personalizzate con un[Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md).

```
{{<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",
   "aud": "https://api.example.com",
   "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](cognito-terms.md#terms-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.

**aud**  
L'URL dell'API per cui il token di accesso è destinato ad autorizzare. Presente solo se l'applicazione ha richiesto un'[associazione di risorse](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding) dal server di autorizzazione.

**`origin_jti`**  
Un identificatore di revoca del token associato al token di aggiornamento dell'utente. Amazon Cognito fa riferimento all'`origin_jti`affermazione quando verifica se hai revocato il token dell'utente con l'operazione [Endpoint Revoke](revocation-endpoint.md) o l'[RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API. 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](token-endpoint.md) 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.

**Altre risorse**
+ [Come personalizzare i token di accesso nei pool di utenti di Amazon Cognito](https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/)

## Firma del token di accesso
<a name="user-pool-access-token-signature"></a>

La firma del token di accesso, firmata con la chiave pubblicizzata sull'`.well-known/jwks.json`endpoint, 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](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).