

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

# Trigger Lambda di pre-generazione del token
<a name="user-pool-lambda-pre-token-generation"></a>

Poiché Amazon Cognito richiama questo trigger prima della generazione di token, puoi personalizzare le richieste di token dei pool di utenti. Con le **funzionalità di base** dell'evento di attivazione della versione 1 o `V1_0` precedente alla generazione del token, puoi personalizzare il token di identità (ID). Nei pool di utenti con il piano di funzionalità Essentials o Plus, è possibile generare la versione due o l'evento `V2_0` trigger con personalizzazione del token di accesso e la versione tre o l'evento `V3_0` trigger con personalizzazione del token di accesso per la concessione di credenziali client machine-to-machine (M2M).

Amazon Cognito invia un evento `V1_0` come richiesta alla funzione con dati che scriverebbe sul token ID. Un `V3_0` evento `V2_0` or è una singola richiesta con i dati che Amazon Cognito scriverebbe sia sull'identità che sui token di accesso. Per personalizzare entrambi i token, devi aggiornare la funzione per utilizzare la versione due o tre del trigger e inviare i dati per entrambi i token nella stessa risposta.

Amazon Cognito applica le risposte agli eventi della seconda versione ai token di accesso dall'autenticazione utente, in cui un utente umano ha presentato le credenziali al tuo pool di utenti. Le risposte agli eventi della versione tre si applicano ai token di accesso derivanti dall'autenticazione utente e dall'autenticazione automatica, in cui i sistemi automatici autorizzano le richieste di token di accesso con i segreti del client dell'app. A parte le circostanze dei token di accesso risultanti, gli eventi della versione due e tre sono identici.

Questo trigger Lambda può aggiungere, rimuovere e modificare alcune richieste nei token di identità e accesso prima che Amazon Cognito le invii all'app. Per usare questa funzionalità, puoi associare una funzione Lambda dalla console del pool di utenti di Amazon Cognito o aggiornare il pool di utenti `LambdaConfig` tramite la AWS Command Line Interface (AWS CLI).

## Versioni degli eventi
<a name="user-pool-lambda-pre-token-generation-event-versions"></a>

Il tuo pool di utenti può fornire diverse versioni di un evento di attivazione precedente alla generazione di token alla tua funzione Lambda. Un `V1_0` trigger fornisce i parametri per la modifica dei token ID. Un `V3_0` trigger `V2_0` or fornisce i parametri per quanto segue.

1. Le funzioni di un `V1_0` trigger.

1. La possibilità di personalizzare i token di accesso.

1. La possibilità di passare tipi di dati complessi a ID e accedere ai valori delle richieste di token:
   + Stringa
   + Numero
   + Booleano
   + Matrice di stringhe, numeri, valori booleani o una combinazione di questi
   + JSON

**Nota**  
Nel token ID, è possibile compilare oggetti complessi in base ai valori delle attestazioni ad eccezione di`phone_number_verified`,, `email_verified` e. `updated_at` `address`

I pool di utenti forniscono `V1_0` eventi per impostazione predefinita. Per configurare il tuo pool di utenti per inviare un `V2_0` evento, scegli una **versione evento Trigger** delle **funzionalità di base \$1 personalizzazione del token di accesso per le identità degli utenti** quando configuri il trigger nella console Amazon Cognito. Per creare `V3_0` eventi, scegli ****Funzionalità di base \$1 personalizzazione dei token di accesso per le identità di utenti**** e macchine. Puoi anche impostare il valore di `LambdaVersion` nei [LambdaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-LambdaConfig)parametri in una richiesta [UpdateUserPool ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)o [CreateUserPool ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API. Le versioni degli eventi uno, due e tre sono disponibili nei piani di funzionalità **Essentials** e **Plus**. Le operazioni M2M per gli eventi della versione tre hanno una struttura tariffaria separata dalla formula degli utenti attivi mensili (MAU). Per ulteriori informazioni, consultare [Prezzi di Amazon Cognito](https://aws.amazon.com/cognito/pricing/).

**Nota**  
I pool di utenti che erano operativi con l'opzione **Funzioni di sicurezza avanzate** prima del 22 novembre 2024 alle 18:00 GMT e che rimangono nel livello di funzionalità **Lite** hanno accesso alle versioni 1 e 2 degli eventi del trigger precedente alla generazione di token. I pool di utenti di questo livello legacy *senza* funzionalità di sicurezza avanzate hanno accesso alla versione 1 dell'evento. La versione tre è disponibile *solo* in Essentials e Plus.

## Riferimento a rivendicazioni e ambiti
<a name="user-pool-lambda-pre-token-generation-excluded-claims"></a>

Amazon Cognito limita le attestazioni e gli ambiti che puoi aggiungere, modificare o sopprimere nei token di accesso e identità. La tabella seguente descrive le attestazioni che la funzione Lambda può e non può modificare e i parametri degli eventi di attivazione che influiscono sulla presenza o sul valore dell'attestazione.


| Richiedi | Tipo di token predefinito | Può aggiungere? | Può modificare? | Può sopprimere? | Parametro dell'evento: aggiungi o modifica | Parametro dell'evento: sopprimi | Tipo di identità | Versione dell'evento | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Qualsiasi reclamo non incluso nello schema del token del pool di utenti | Nessuno | Sì  | Sì | N/D | claimsToAddOrOverride | claimsToSuppress | Utente, macchina [1](#cognito-pretoken-machine-ids-tier-note) | Tutto [2](#cognito-pretoken-id-access-versions-note) | 
| scope | Accesso | Sì  | Sì | Sì | scopesToAdd | scopesToSuppress | Utente, macchina [1](#cognito-pretoken-machine-ids-tier-note) | v2\$10, v3\$10 | 
| cognito:groups | ID, accesso | Sì  | Sì | Sì | groupsToOverride | claimsToSuppress | Utente | Tutti [2](#cognito-pretoken-id-access-versions-note) | 
| cognito:preferred\$1role | ID | Sì  | Sì | Sì | preferredRole | claimsToSuppress[3](#cognito-pretoken-suppress-groups-note) | Utente | Tutti | 
| cognito:roles | ID | Sì  | Sì | Sì | iamRolesToOverride | claimsToSuppress[3](#cognito-pretoken-suppress-groups-note) | Utente | Tutti | 
| cognito:username | ID | No | No | No | N/D | N/D | Utente | N/D | 
| Qualsiasi altra affermazione con un cognito: prefisso | Nessuno | No | No | No | N/D | N/D | N/D | N/D | 
| username | Accesso | No | No | No | N/D | N/D | Utente | v2\$10, v3\$10 | 
| sub | ID, accesso | No | No | No | N/D | N/D | Utente | N/D | 
| attributo OIDC standard | ID | Sì  | Sì | Sì | claimsToAddOrOverride | claimsToSuppress | Utente | Tutti | 
| Attributo custom: | ID | Sì  | Sì | Sì | claimsToAddOrOverride | claimsToSuppress | Utente | Tutti | 
| Attributo dev: | ID | No | No | Sì | N/D | claimsToSuppress | Utente | Tutti | 
| identities | ID | No | No | No | N/D | N/D | Utente | N/D | 
| aud[4](#cognito-pretoken-aud-note) | ID | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| client\$1id | Accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| event\$1id | Accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| device\$1key | Accesso | No | No | No | N/D | N/D | Utente | N/D | 
| version | Accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| acr | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| amr | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| at\$1hash | ID | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| auth\$1time | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| azp | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| exp | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| iat | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| iss | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| jti | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| nbf | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| nonce | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| origin\$1jti | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 
| token\$1use | ID, accesso | No | No | No | N/D | N/D | Utente, macchina | N/D | 

1 I token di accesso per le identità delle macchine sono disponibili solo con l'evento `v3_0` di input del trigger. La versione 3 dell'evento è disponibile solo nei livelli di funzionalità **Essentials** e **Plus**. I pool di utenti del livello **Lite** possono ricevere `v1_0` eventi. I pool di utenti del livello **Lite** con funzionalità di sicurezza avanzate possono ricevere `v1_0` `v2_0` eventi.

2 Configura il trigger precedente alla generazione del token sulla versione evento solo `v1_0` per il token ID, `v2_0` per ID e token di accesso, per ID e token di accesso, `v3_0` per ID e token di accesso con funzionalità per le identità delle macchine.

3 Per eliminare le `cognito:roles` affermazioni `cognito:preferred_role` and, aggiungi `cognito:groups` a. `claimsToSuppress`

4 Puoi aggiungere un'`aud`affermazione ai token di accesso, ma il suo valore deve corrispondere all'ID client dell'app della sessione corrente. Puoi derivare l'ID del client nell'evento di richiesta da `event.callerContext.clientId`.

## Personalizzazione del token di identità
<a name="user-pool-lambda-pre-token-generation-idtoken"></a>

Con tutte le versioni evento del trigger Lambda precedente alla generazione del token, puoi personalizzare il contenuto di un token di identità (ID) dal tuo pool di utenti. Il token ID fornisce gli attributi utente da un'origine di identità affidabile per l'accesso a un'app web o per dispositivi mobili. Per ulteriori informazioni sui token ID, consulta [Comprensione del token di identità (ID)](amazon-cognito-user-pools-using-the-id-token.md).

Gli usi del trigger Lambda di pre-generazione di token con un token ID includono quanto segue.
+ Apportare una modifica in fase di runtime al ruolo IAM richiesto dall'utente da un pool di identità.
+ Aggiungere gli attributi utente da un'origine esterna.
+ Aggiungere o sostituire i valori degli attributi utente esistenti.
+ Sopprimere la divulgazione degli attributi utente che, a causa degli ambiti autorizzati dell'utente e dell'accesso in lettura agli attributi concesso al client dell'app, verrebbero altrimenti trasferiti all'app.

## Personalizzazione del token di accesso
<a name="user-pool-lambda-pre-token-generation-accesstoken"></a>

Con le versioni evento due e tre del trigger Lambda precedente alla generazione del token, puoi personalizzare il contenuto di un token di accesso dal tuo pool di utenti. Il token di accesso autorizza gli utenti a recuperare informazioni da risorse ad accesso protetto come operazioni API autorizzate da token Amazon Cognito e operazioni di terze parti. APIs Per l'autorizzazione machine-to-machine (M2M) con concessione di credenziali client, Amazon Cognito richiama il trigger precedente alla generazione del token solo quando il pool di utenti è configurato per un evento della versione tre (). `V3_0` Per ulteriori informazioni sui token di accesso, consulta [Comprendere il token di accesso](amazon-cognito-user-pools-using-the-access-token.md).

Gli usi del trigger Lambda di pre-generazione di token con un token di accesso includono i seguenti.
+ Aggiungi o sopprimi gli ambiti nel claim. `scope` Ad esempio, puoi aggiungere ambiti a un token di accesso ottenuto dall'autenticazione API dei pool di utenti di Amazon Cognito, che assegna solo l'ambito `aws.cognito.signin.user.admin`.
+ Modificare l'appartenenza di un utente ai gruppi di pool di utenti.
+ Aggiunta di richieste non ancora presenti in un token di accesso Amazon Cognito.
+ Bloccare la divulgazione di attestazioni che altrimenti verrebbero trasmesse all'app.

Per supportare la personalizzazione dell'accesso nel pool di utenti, è necessario configurare il pool di utenti per generare una versione aggiornata della richiesta di trigger. Aggiornare il pool di utenti come illustrato nella procedura seguente.

------
#### [ Console di gestione AWS ]

**Per supportare la personalizzazione del token di accesso in un trigger Lambda di pre-generazione di token**

1. Passa alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home) e scegli **User Pools** (Bacini d'utenza).

1. Scegli un bacino d'utenza esistente dall'elenco o [creane uno nuovo](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Scegli il menu **Estensioni** e individua i trigger **Lambda**.

1. Aggiungi o modifica un **Trigger di pre-generazione di token**.

1. Scegli una funzione Lambda in **Assegna la funzione Lambda**. 

1. Scegliete una **versione evento Trigger** di **Funzionalità di base \$1 personalizzazione del token di accesso per le identità utente** o **Funzionalità di base \$1 personalizzazione del token di accesso per** le identità di utenti e macchine. Questa impostazione aggiorna i parametri di richiesta inviati da Amazon Cognito alla funzione per includere campi per la personalizzazione del token di accesso.

------
#### [ User pools API ]

**Per supportare la personalizzazione del token di accesso in un trigger Lambda di pre-generazione di token**

Genera una [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)richiesta o API. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) È necessario specificare un valore per tutti i parametri che non si desidera impostare su un valore predefinito. Per ulteriori informazioni, consulta [Aggiornamento della configurazione del pool di utenti e del client dell'app](cognito-user-pool-updating.md).

Includi il seguente contenuto nel parametro `LambdaVersion` della richiesta. Un `LambdaVersion` valore di `V2_0` fa sì che il pool di utenti aggiunga parametri e applichi modifiche ai token di accesso. Un `LambdaVersion` valore di `V3_0` produce lo stesso evento`V2_0`, ma fa sì che il pool di utenti applichi le modifiche *anche* ai token di accesso M2M. Per richiamare una versione di funzione specifica, usa un ARN della funzione Lambda on una versione della funzione come valore di `LambdaArn`.

```
"PreTokenGenerationConfig": { 
   "LambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:MyFunction",
   "LambdaVersion": "V3_0"
},
```

------

**Metadati client per le credenziali del client machine-to-machine (M2M)**  
È possibile passare i [metadati dei client](cognito-user-pools-working-with-lambda-triggers.md#working-with-lambda-trigger-client-metadata) nelle richieste M2M. I metadati del client sono informazioni aggiuntive provenienti da un ambiente utente o applicativo che possono contribuire ai risultati di un. [Trigger Lambda di pre-generazione del token](#user-pool-lambda-pre-token-generation) Nelle operazioni di autenticazione con un user principal, è possibile passare i metadati del client al trigger precedente alla generazione del token nel corpo delle richieste API [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) Poiché le applicazioni gestiscono il flusso per la generazione di token di accesso per M2M con richieste dirette a[Endpoint Token](token-endpoint.md), hanno un modello diverso. Nel corpo POST delle richieste di token per le credenziali del client, passate un `aws_client_metadata` parametro con l'oggetto di metadati del client con codifica URL () a string. `x-www-form-urlencoded` Per una richiesta di esempio, consulta [Credenziali del client con autorizzazione di baseCredenziali del cliente con autorizzazione dell'ente POST](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body). Di seguito è riportato un parametro di esempio che passa le coppie chiave-valore. `{"environment": "dev", "language": "en-US"}`

```
aws_client_metadata=%7B%22environment%22%3A%20%22dev%22,%20%22language%22%3A%20%22en-US%22%7D
```

**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/)

**Topics**
+ [Versioni degli eventi](#user-pool-lambda-pre-token-generation-event-versions)
+ [Riferimento a rivendicazioni e ambiti](#user-pool-lambda-pre-token-generation-excluded-claims)
+ [Personalizzazione del token di identità](#user-pool-lambda-pre-token-generation-idtoken)
+ [Personalizzazione del token di accesso](#user-pool-lambda-pre-token-generation-accesstoken)
+ [Origini del trigger Lambda di pre-generazione del token](#user-pool-lambda-pre-token-generation-trigger-source)
+ [Parametri del trigger Lambda di pre-generazione del token](#cognito-user-pools-lambda-trigger-syntax-pre-token-generation)
+ [Esempio della versione due dell'evento trigger pre-token: aggiunta ed eliminazione di richieste, ambiti e gruppi](#aws-lambda-triggers-pre-token-generation-example-version-2-overview)
+ [Evento precedente alla generazione di token (versione due): aggiungere attestazioni con oggetti complessi](#aws-lambda-triggers-pre-token-generation-example-version-2-complex-objects)
+ [Esempio di evento versione 1 di generazione del pre-token: aggiunta di una nuova richiesta ed eliminazione di una richiesta esistente](#aws-lambda-triggers-pre-token-generation-version-1-add-claim)
+ [Esempio di evento versione 1 di generazione del pre-token: modifica dell'appartenenza al gruppo dell'utente](#aws-lambda-triggers-pre-token-generation-version-1-change-group)

## Origini del trigger Lambda di pre-generazione del token
<a name="user-pool-lambda-pre-token-generation-trigger-source"></a>


| Valore triggerSource | Event | 
| --- | --- | 
| TokenGeneration\$1HostedAuth | Chiamato durante l'autenticazione dalla pagina di accesso gestito di Amazon Cognito. | 
| TokenGeneration\$1Authentication | Chiamato dopo che i flussi di autenticazione degli utenti sono terminati. | 
| TokenGeneration\$1NewPasswordChallenge | Chiamato dopo che l'utente viene creato da un amministratore. Questo flusso viene chiamato quando l'utente deve cambiare una password temporanea. | 
| TokenGeneration\$1ClientCredentials | Chiamato dopo la concessione delle credenziali del client M2M. Il tuo pool di utenti invia questo evento solo quando la versione dell'evento è. V3\$10 | 
| TokenGeneration\$1AuthenticateDevice | Chiamato alla fine dell'autenticazione di un dispositivo dell'utente. | 
| TokenGeneration\$1RefreshTokens | Chiamato quando un utente cerca di aggiornare l'identità e i token di accesso. | 

## Parametri del trigger Lambda di pre-generazione del token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation"></a>

La richiesta passata da Amazon Cognito a questa funzione Lambda è una combinazione dei parametri seguenti e dei [parametri comuni](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) aggiunti da Amazon Cognito a tutte le richieste. Quando aggiungi un trigger Lambda di pre-generazione di token al pool di utenti, puoi scegliere una versione del trigger. Questa versione determina se Amazon Cognito passa una richiesta alla funzione Lambda con parametri aggiuntivi per la personalizzazione del token di accesso.

------
#### [ Version one ]

Il token della versione uno può impostare l'appartenenza al gruppo, i ruoli IAM e nuove attestazioni nei token ID. Le eccezioni relative all'appartenenza al gruppo si applicano anche alla `cognito:groups` dichiarazione contenuta nei token di accesso.

```
{
    "request": {
        "userAttributes": {"string": "string"},
        "groupConfiguration": {
                "groupsToOverride": [
                    "string",
                    "string"
                ],
                "iamRolesToOverride": [
                    "string",
                    "string"
                ],
                "preferredRole": "string"
        },
        "clientMetadata": {"string": "string"}
    },
    "response": {
        "claimsOverrideDetails": {
            "claimsToAddOrOverride": {"string": "string"},
            "claimsToSuppress": [
                "string",
                "string"
            ],
            "groupOverrideDetails": {
                "groupsToOverride": [
                    "string",
                    "string"
                ],
                "iamRolesToOverride": [
                    "string",
                    "string"
                ],
                "preferredRole": "string"
            }
        }
    }
}
```

------
#### [ Versions two and three ]

Le versioni due e tre richiedono eventi che aggiungono campi che personalizzano il token di accesso. I pool di utenti applicano le modifiche dagli eventi della versione tre ai token di accesso per le identità delle macchine. Queste versioni aggiungono anche il supporto per tipi di `claimsToOverride` dati complessi nell'oggetto di risposta. La tua funzione Lambda può restituire i seguenti tipi di dati nel valore di: `claimsToOverride`
+ Stringa
+ Numero
+ Booleano
+ Matrice di stringhe, numeri, valori booleani o una combinazione di questi
+ JSON

```
{
    "request": {
        "userAttributes": {
            "string": "string"
        },
        "scopes": ["string", "string"],
        "groupConfiguration": {
            "groupsToOverride": ["string", "string"],
            "iamRolesToOverride": ["string", "string"],
            "preferredRole": "string"
        },
        "clientMetadata": {
            "string": "string"
        }
    },
    "response": {
        "claimsAndScopeOverrideDetails": {
            "idTokenGeneration": {
                "claimsToAddOrOverride": {
                    "string": [accepted datatype]
                },
                "claimsToSuppress": ["string", "string"]
            },
            "accessTokenGeneration": {
                "claimsToAddOrOverride": {
                    "string": [accepted datatype]
                },
                "claimsToSuppress": ["string", "string"],
                "scopesToAdd": ["string", "string"],
                "scopesToSuppress": ["string", "string"]
            },
            "groupOverrideDetails": {
                "groupsToOverride": ["string", "string"],
                "iamRolesToOverride": ["string", "string"],
                "preferredRole": "string"
            }
        }
    }
}
```

------

### Parametri di richiesta di pre-generazione del token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation-request"></a>


| Nome | Description | Versione minima dell'evento di trigger | 
| --- |--- |--- |
| userAttributes |  Attributi del profilo utente nel pool di utenti.  | 1 | 
| groupConfiguration |  L'oggetto di input contenente l'attuale configurazione del gruppo. L'oggetto include `groupsToOverride`, `iamRolesToOverride` e`preferredRole`.  | 1 | 
| groupsToOverride |  I [gruppi di pool di utenti](cognito-user-pools-user-groups.md#cognito-user-pools-user-groups.title) di cui l'utente fa parte.  | 1 | 
| iamRolesToSostituisci |  È possibile associare un gruppo di pool di utenti a un ruolo AWS Identity and Access Management (IAM). Questo elemento è un elenco di tutti i ruoli IAM dei gruppi di cui l'utente è membro.  | 1 | 
| preferredRole |  Puoi impostare una [precedenza](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups.title) per i gruppi di pool di utenti. Questo elemento contiene il nome del ruolo IAM del gruppo con la precedenza più alta nell'elemento `groupsToOverride`.  | 1 | 
| clientMetadata |  Una o più coppie chiave-valore che è possibile specificare e fornire come input personalizzato alla funzione Lambda per il trigger di pre-generazione del token. Per passare questi dati alla funzione Lambda, usa il ClientMetadata parametro nelle operazioni [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)e [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API. Amazon Cognito non include i dati del `ClientMetadata` parametro [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)e le operazioni [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API nella richiesta che passa alla funzione di generazione precedente al token.  | 1 | 
| ambiti |  Ambiti dei token di accesso. Gli ambiti presenti in un token di accesso sono gli ambiti standard e personalizzati del pool di utenti richiesti dall'utente e che il client dell'app è autorizzato a emettere.  | 2 | 

### Parametri di risposta di pre-generazione del token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation-response"></a>


| Nome | Description | Versione minima dell'evento di trigger | 
| --- |--- |--- |
| claimsOverrideDetails | Un container per tutti gli elementi di un evento trigger V1\$10. | 1 | 
| claimsAndScopeOverrideDetails |  Un contenitore per tutti gli elementi di un evento `V2_0` o `V3_0` trigger.  | 2 | 
| idTokenGeneration |  Le attestazioni che desideri sostituire, aggiungere o sopprimere nel token di identità dell'utente. Questi valori di personalizzazione del token da genitore a ID vengono visualizzati solo nella versione 2 e successive dell'evento, ma gli elementi secondari compaiono negli eventi della versione 1.  | 2 | 
| accessTokenGeneration |  Le attestazioni e gli ambiti che desideri sostituire, aggiungere o sopprimere nel token di accesso dell'utente. Questo elemento principale per accedere ai valori di personalizzazione del token appare solo nella versione 2 e successive dell'evento.  | 2 | 
| claimsToAddOrOverride |  Una mappa di una o più attestazioni e dei relativi valori che desideri aggiungere o modificare. Per attestazioni relative ai gruppi, utilizza invece `groupOverrideDetails`. Nella versione 2 e successive, questo elemento appare sia sotto che `accessTokenGeneration` sotto. `idTokenGeneration`  | 1. [*](#cognito-pretoken-complex-objects-note) | 
| claimsToSuppress |  Un elenco delle attestazioni che desideri vengano soppresse da Amazon Cognito. Se la tua funzione sopprime e sostituisce un valore di attestazione, Amazon Cognito sopprime l'attestazione. Nella versione 2 e successive, questo elemento appare sotto entrambe le versioni `accessTokenGeneration` e`idTokenGeneration`.  | 1 | 
| groupOverrideDetails |  L'oggetto di output contenente l'attuale configurazione di gruppo. L'oggetto include `groupsToOverride`, `iamRolesToOverride` e `preferredRole`. La funzione sostituisce l'oggetto `groupOverrideDetails` con l'oggetto fornito. Se fornisci un oggetto vuoto o nullo nella risposta, Amazon Cognito sopprime i gruppi. Per mantenere la configurazione di un gruppo esistente così com'è, copia il valore dell'oggetto `groupConfiguration` della richiesta nell'oggetto `groupOverrideDetails` della risposta. Quindi ritrasmettilo al servizio. Amazon Cognito ID e i token di accesso contengono entrambi i token reclamo `cognito:groups`. L'oggetto `groupOverrideDetails` sostituirà l'attestazione `cognito:groups` nei token di accesso e nei token ID. Le sostituzioni di gruppo sono le uniche modifiche al token di accesso che gli eventi della versione 1 possono apportare.  | 1 | 
| scopesToAdd |  Un elenco di ambiti che desideri aggiungere all'`scope`attestazione nel token di accesso dell'utente. Non puoi aggiungere valori di ambito che contengono uno o più caratteri con spazi vuoti.  | 2 | 
| scopesToSuppress |  Un elenco di ambiti che desideri rimuovere dall'`scope`attestazione nel token di accesso dell'utente.  | 2 | 

\$1 Gli oggetti di risposta agli eventi della versione uno possono restituire stringhe. Gli oggetti di risposta agli eventi della versione due e tre possono restituire [oggetti complessi](#user-pool-lambda-pre-token-generation-event-versions).

## Esempio della versione due dell'evento trigger pre-token: aggiunta ed eliminazione di richieste, ambiti e gruppi
<a name="aws-lambda-triggers-pre-token-generation-example-version-2-overview"></a>

Questo esempio apporta le seguenti modifiche ai token di un utente.

1. Imposta i `family_name` valori come `Doe` nel token ID.

1. Impedisce la visualizzazione delle richieste `email` e `phone_number` nel token ID.

1. Imposta la richiesta `cognito:roles` del token ID su `"arn:aws:iam::123456789012:role\/sns_callerA","arn:aws:iam::123456789012:role\/sns_callerC","arn:aws:iam::123456789012:role\/sns_callerB"`.

1. Imposta la richiesta `cognito:preferred_role` del token ID su `arn:aws:iam::123456789012:role/sns_caller`.

1. Aggiunge gli ambiti `openid`, `email` e `solar-system-data/asteroids.add` al token di accesso.

1. Elimina l'ambito `phone_number` e `aws.cognito.signin.user.admin` dal token di accesso. La rimozione di `phone_number` impedisce il recupero del numero di telefono dell'utente da `userInfo`. La rimozione di `aws.cognito.signin.user.admin` impedisce alle richieste API da parte dell'utente di leggere e modificare il proprio profilo con l'API dei pool di utenti di Amazon Cognito.
**Nota**  
La rimozione di `phone_number` dagli ambiti impedisce solo il recupero del numero di telefono di un utente se gli ambiti rimanenti nel token di accesso includono `openid` e almeno un altro ambito standard. Per ulteriori informazioni, consulta [Informazioni sugli ambiti](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-scopes).

1. Imposta la richiesta `cognito:groups` del token ID e di accesso su `"new-group-A","new-group-B","new-group-C"`.

------
#### [ JavaScript ]

```
export const handler = function(event, context) {
  event.response = {
    "claimsAndScopeOverrideDetails": {
      "idTokenGeneration": {
        "claimsToAddOrOverride": {
          "family_name": "Doe"
        },
        "claimsToSuppress": [
          "email",
          "phone_number"
        ]
      },
      "accessTokenGeneration": {
        "scopesToAdd": [
          "openid",
          "email",
          "solar-system-data/asteroids.add"
        ],
        "scopesToSuppress": [
          "phone_number",
          "aws.cognito.signin.user.admin"
        ]
      },
      "groupOverrideDetails": {
        "groupsToOverride": [
          "new-group-A",
          "new-group-B",
          "new-group-C"
        ],
        "iamRolesToOverride": [
          "arn:aws:iam::123456789012:role/new_roleA",
          "arn:aws:iam::123456789012:role/new_roleB",
          "arn:aws:iam::123456789012:role/new_roleC"
        ],
        "preferredRole": "arn:aws:iam::123456789012:role/new_role",
      }
    }
  };
  // Return to Amazon Cognito
  context.done(null, event);
};
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:

------
#### [ JSON ]

```
{
    "version": "2",
    "triggerSource": "TokenGeneration_Authentication",
    "region": "us-east-1",
    "userPoolId": "us-east-1_EXAMPLE",
    "userName": "JaneDoe",
    "callerContext": {
        "awsSdkVersion": "aws-sdk-unknown-unknown",
        "clientId": "1example23456789"
    },
    "request": {
        "userAttributes": {
            "sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "cognito:user_status": "CONFIRMED",
            "email_verified": "true",
            "phone_number_verified": "true",
            "phone_number": "+12065551212",
            "family_name": "Zoe",
            "email": "Jane.Doe@example.com"
        },
        "groupConfiguration": {
            "groupsToOverride": ["group-1", "group-2", "group-3"],
            "iamRolesToOverride": ["arn:aws:iam::123456789012:role/sns_caller1", "arn:aws:iam::123456789012:role/sns_caller2", "arn:aws:iam::123456789012:role/sns_caller3"],
            "preferredRole": ["arn:aws:iam::123456789012:role/sns_caller"]
        },
        "scopes": [
            "aws.cognito.signin.user.admin", "openid", "email", "phone"
        ]
    },
    "response": {
        "claimsAndScopeOverrideDetails": []
    }
}
```

------

## Evento precedente alla generazione di token (versione due): aggiungere attestazioni con oggetti complessi
<a name="aws-lambda-triggers-pre-token-generation-example-version-2-complex-objects"></a>

Questo esempio apporta le seguenti modifiche ai token di un utente.

1. Aggiunge affermazioni di tipo number, string, booleano e JSON al token ID. Questa è l'unica modifica che gli eventi di attivazione della versione due rendono disponibile al token ID.

1. Aggiunge rivendicazioni di tipo number, string, boolean e JSON al token di accesso.

1. Aggiunge tre ambiti al token di accesso.

1. Elimina l'`email`affermazione nell'ID e nei token di accesso.

1. Elimina l'`aws.cognito.signin.user.admin`ambito nel token di accesso.

------
#### [ JavaScript ]

```
export const handler = function(event, context) {

    var scopes = ["MyAPI.read", "MyAPI.write", "MyAPI.admin"]
    var claims = {}
    claims["aud"]= event.callerContext.clientId;
    claims["booleanTest"] = false;
    claims["longTest"] = 9223372036854775807;
    claims["exponentTest"] = 1.7976931348623157E308;
    claims["ArrayTest"] = ["test", 9223372036854775807, 1.7976931348623157E308, true];
    claims["longStringTest"] = "\{\
        \"first_json_block\": \{\
            \"key_A\": \"value_A\",\
            \"key_B\": \"value_B\"\
        \},\
        \"second_json_block\": \{\
            \"key_C\": \{\
                \"subkey_D\": [\
                    \"value_D\",\
                    \"value_E\"\
                ],\
                \"subkey_F\": \"value_F\"\
            \},\
            \"key_G\": \"value_G\"\
        \}\
    \}";
    claims["jsonTest"] = {
    	"first_json_block": {
    		"key_A": "value_A",
    		"key_B": "value_B"
    	},
    	"second_json_block": {
    		"key_C": {
    			"subkey_D": [
    				"value_D",
    				"value_E"
    			],
    			"subkey_F": "value_F"
    		},
    		"key_G": "value_G"
    	}
    };
    event.response = {
        "claimsAndScopeOverrideDetails": {
            "idTokenGeneration": {
                "claimsToAddOrOverride": claims,
                "claimsToSuppress": ["email"]
            },
            "accessTokenGeneration": {
                "claimsToAddOrOverride": claims,
                "claimsToSuppress": ["email"],
                "scopesToAdd": scopes,
                "scopesToSuppress": ["aws.cognito.signin.user.admin"]
            }
        }
    };
    console.info("EVENT response\n" + JSON.stringify(event, (_, v) => typeof v === 'bigint' ? v.toString() : v, 2))
    console.info("EVENT response size\n" + JSON.stringify(event, (_, v) => typeof v === 'bigint' ? v.toString() : v).length)
    // Return to Amazon Cognito
    context.done(null, event);
};
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:

------
#### [ JSON ]

```
{
    "version": "2",
    "triggerSource": "TokenGeneration_HostedAuth",
    "region": "us-west-2",
    "userPoolId": "us-west-2_EXAMPLE",
    "userName": "JaneDoe",
    "callerContext": {
        "awsSdkVersion": "aws-sdk-unknown-unknown",
        "clientId": "1example23456789"
    },
    "request": {
        "userAttributes": {
            "sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "cognito:user_status": "CONFIRMED"
            "email_verified": "true",
            "phone_number_verified": "true",
            "phone_number": "+12065551212",
            "email": "Jane.Doe@example.com"
        },
        "groupConfiguration": {
            "groupsToOverride": ["group-1", "group-2", "group-3"],
            "iamRolesToOverride": ["arn:aws:iam::123456789012:role/sns_caller1"],
            "preferredRole": ["arn:aws:iam::123456789012:role/sns_caller1"]
        },
        "scopes": [
            "aws.cognito.signin.user.admin",
            "phone",
            "openid",
            "profile",
            "email"
        ]
    },
    "response": {
        "claimsAndScopeOverrideDetails": []
    }
}
```

------

## Esempio di evento versione 1 di generazione del pre-token: aggiunta di una nuova richiesta ed eliminazione di una richiesta esistente
<a name="aws-lambda-triggers-pre-token-generation-version-1-add-claim"></a>

Questo esempio usa un evento trigger versione 1 con una funzione Lambda di pre-generazione di token per aggiungere una nuova attestazione ed eliminarne una esistente.

------
#### [ Node.js ]

```
const handler = async (event) => {
  event.response = {
    claimsOverrideDetails: {
      claimsToAddOrOverride: {
        my_first_attribute: "first_value",
        my_second_attribute: "second_value",
      },
      claimsToSuppress: ["email"],
    },
  };

  return event;
};

export { handler };
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per il codice di esempio. Dal momento che il codice di esempio non elabora i parametri di richiesta, puoi utilizzare un evento di test con una richiesta vuota. Per ulteriori informazioni sui parametri di richiesta comuni, consulta [Evento trigger Lambda per il bacino d'utenza](cognito-user-pools-working-with-lambda-triggers.md#cognito-user-pools-lambda-trigger-event-parameter-shared).

------
#### [ JSON ]

```
{
  "request": {},
  "response": {}
}
```

------

## Esempio di evento versione 1 di generazione del pre-token: modifica dell'appartenenza al gruppo dell'utente
<a name="aws-lambda-triggers-pre-token-generation-version-1-change-group"></a>

Questo esempio usa un evento trigger versione 1 con una funzione Lambda di pre-generazione di token per modificare l'appartenenza ai gruppi dell'utente.

------
#### [ Node.js ]

```
const handler = async (event) => {
  event.response = {
    claimsOverrideDetails: {
      groupOverrideDetails: {
        groupsToOverride: ["group-A", "group-B", "group-C"],
        iamRolesToOverride: [
          "arn:aws:iam::XXXXXXXXXXXX:role/sns_callerA",
          "arn:aws:iam::XXXXXXXXX:role/sns_callerB",
          "arn:aws:iam::XXXXXXXXXX:role/sns_callerC",
        ],
        preferredRole: "arn:aws:iam::XXXXXXXXXXX:role/sns_caller",
      },
    },
  };

  return event;
};

export { handler };
```

------

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:

------
#### [ JSON ]

```
{
  "request": {},
  "response": {}
}
```

------