

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Lambda-Auslöser für die Vorab-Generierung von Token
<a name="user-pool-lambda-pre-token-generation"></a>

Da Amazon Cognito diesen Auslöser aufruft, bevor Token generiert werden, können Sie die Ansprüche in Benutzerpool-Token anpassen. Mit den **grundlegenden Features** von Version 1 oder dem Auslöserereignis `V1_0` vor der Token-Generierung können Sie das Identitätstoken (ID) anpassen. In Benutzerpools mit dem Featureplan Essentials oder Plus können Sie Version zwei oder ein Trigger-Ereignis mit Anpassung des Zugriffstokens und das `V2_0` Trigger-Ereignis der Version drei oder `V3_0` das Trigger-Ereignis mit Anpassung des Zugriffstokens für (M2M) -Zugriffstoken für machine-to-machine (M2M) -Zugriffs-Zugangsdaten generieren.

Amazon Cognito sendet ein `V1_0`-Ereignis als Anfrage an Ihre Funktion mit Daten, die in das Identitätstoken geschrieben werden. Ein `V2_0` `V3_0` OR-Ereignis ist eine einzelne Anfrage mit den Daten, die Amazon Cognito sowohl in die Identitäts- als auch in die Zugriffstoken schreiben würde. Um beide Token anzupassen, müssen Sie Ihre Funktion so aktualisieren, dass sie die Trigger-Version zwei oder drei verwendet, und Daten für beide Token in derselben Antwort senden.

Amazon Cognito wendet Ereignisantworten der zweiten Version auf Zugriffstoken aus der Benutzerauthentifizierung an, bei der ein menschlicher Benutzer Anmeldeinformationen für Ihren Benutzerpool vorgelegt hat. Die Ereignisantworten der Version drei beziehen sich auf Zugriffstoken aus der Benutzerauthentifizierung und der Maschinenauthentifizierung, bei denen automatisierte Systeme Zugriffstoken-Anfragen mit App-Client-Geheimnissen autorisieren. Abgesehen von den Umständen der resultierenden Zugriffstoken sind die Ereignisse der Versionen zwei und drei identisch.

Dieser Lambda-Auslöser kann einige Ansprüche in Identitäts- und Zugriffstoken hinzufügen, entfernen und ändern, bevor Amazon Cognito sie an Ihre App ausgibt. Um dieses Feature zu verwenden, verknüpfen Sie eine Lambda-Funktion aus der Amazon-Cognito-Benutzerpool-Konsole oder aktualisieren Ihren Benutzerpool `LambdaConfig` über die AWS Command Line Interface (AWS CLI).

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

Ihr Benutzerpool kann verschiedene Versionen eines Trigger-Ereignisses vor der Token-Generierung an Ihre Lambda-Funktion liefern. Ein `V1_0` Trigger liefert die Parameter für die Änderung von ID-Token. Ein `V2_0` `V3_0` OR-Trigger liefert Parameter für Folgendes.

1. Die Funktionen eines `V1_0` Triggers.

1. Die Möglichkeit, Zugriffstoken anzupassen.

1. Die Fähigkeit, komplexe Datentypen an ID- und Zugriffstoken-Anspruchswerte zu übergeben:
   + Zeichenfolge
   + Zahl
   + Boolesch
   + Array aus Zeichenketten, Zahlen, Booleschen Werten oder einer Kombination aus diesen
   + JSON

**Anmerkung**  
Im ID-Token können Sie komplexe Objekte mit den Werten von Ansprüchen mit Ausnahme von`phone_number_verified`,`email_verified`, `updated_at` und auffüllen. `address`

Benutzerpools liefern standardmäßig `V1_0` Ereignisse. Um Ihren Benutzerpool für das Senden eines `V2_0` Ereignisses zu konfigurieren, wählen Sie bei der Konfiguration Ihres **Triggers in der Amazon Cognito Cognito-Konsole eine Trigger-Event-Version** von **Basisfunktionen \$1 Zugriffstoken-Anpassung für Benutzeridentitäten**. Um `V3_0` Ereignisse zu erzeugen, wählen Sie ****Grundlegende Funktionen \$1 Anpassung des Zugriffstokens für Benutzer- und Maschinenidentitäten****. Sie können den Wert von auch `LambdaVersion` in den [LambdaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-LambdaConfig)Parametern einer [UpdateUserPool ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)oder [CreateUserPool ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Anfrage festlegen. Die Event-Versionen eins, zwei und drei sind in den Featureplänen **Essentials** und **Plus** verfügbar. M2M-Operationen für Ereignisse der Version drei haben eine Preisstruktur, die sich von der Formel für monatlich aktive Benutzer (MAU) unterscheidet. Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing/).

**Anmerkung**  
Benutzerpools, die am oder vor dem 22. November 2024 um 18:00 Uhr GMT mit der Option **Erweiterte Sicherheitsfunktionen** betriebsbereit waren und weiterhin auf der **Lite-Funktionsebene** verbleiben, haben Zugriff auf die Eventversionen eins und zwei des Triggers vor der Token-Generierung. Benutzerpools in dieser älteren Stufe *ohne* erweiterte Sicherheitsfunktionen haben Zugriff auf Event Version 1. Version drei ist *nur* in Essentials und Plus verfügbar.

## Referenz zu Ansprüchen und Geltungsbereichen
<a name="user-pool-lambda-pre-token-generation-excluded-claims"></a>

Amazon Cognito schränkt die Ansprüche und Bereiche ein, die Sie in Zugriffs- und Identitäts-Token hinzufügen, ändern oder unterdrücken können. In der folgenden Tabelle werden die Ansprüche beschrieben, die Ihre Lambda-Funktion ändern kann und die nicht, sowie die Triggerereignisparameter, die sich auf das Vorhandensein oder den Wert des Anspruchs auswirken.


| Antrag | Standard-Tokentyp | Kann ich hinzufügen? | Kann modifizieren? | Kann unterdrücken? | Event-Parameter — hinzufügen oder ändern | Ereignisparameter — unterdrücken | Identitätstyp | Version des Ereignisses | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Jeder Anspruch, der nicht im Token-Schema des Benutzerpools enthalten ist | Keine | Ja | Ja | – | claimsToAddOrOverride | claimsToSuppress | Benutzer, Maschine [1](#cognito-pretoken-machine-ids-tier-note) | Alle [2](#cognito-pretoken-id-access-versions-note) | 
| scope | Zugriff | Ja | Ja | Ja | scopesToAdd | scopesToSuppress | Benutzer, Maschine [1](#cognito-pretoken-machine-ids-tier-note) | v2\$10, v3\$10 | 
| cognito:groups | ID, Zugang | Ja | Ja | Ja | groupsToOverride | claimsToSuppress | Benutzer | Alle [2](#cognito-pretoken-id-access-versions-note) | 
| cognito:preferred\$1role | ID (ID) | Ja | Ja | Ja | preferredRole | claimsToSuppress[3](#cognito-pretoken-suppress-groups-note) | Benutzer | Alle | 
| cognito:roles | ID (ID) | Ja | Ja | Ja | iamRolesToOverride | claimsToSuppress[3](#cognito-pretoken-suppress-groups-note) | Benutzer | Alle | 
| cognito:username | ID (ID) | Nein | Nein | Nein | – | – | Benutzer | – | 
| Jeder andere Anspruch mit einem cognito: Präfix | Keine | Nein | Nein | Nein | – | – | – | – | 
| username | Zugriff | Nein | Nein | Nein | – | – | Benutzer | v2\$10, v3\$10 | 
| sub | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer | – | 
| Standard-OIDC-Attribut | ID (ID) | Ja | Ja | Ja | claimsToAddOrOverride | claimsToSuppress | Benutzer | Alle | 
| custom: Attribut | ID (ID) | Ja | Ja | Ja | claimsToAddOrOverride | claimsToSuppress | Benutzer | Alle | 
| dev: Attribut | ID (ID) | Nein | Nein | Ja | – | claimsToSuppress | Benutzer | Alle | 
| identities | ID (ID) | Nein | Nein | Nein | – | – | Benutzer | – | 
| aud[4](#cognito-pretoken-aud-note) | ID (ID) | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| client\$1id | Zugriff | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| event\$1id | Zugriff | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| device\$1key | Zugriff | Nein | Nein | Nein | – | – | Benutzer | – | 
| version | Zugriff | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| acr | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| amr | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| at\$1hash | ID (ID) | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| auth\$1time | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| azp | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| exp | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| iat | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| iss | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| jti | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| nbf | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| nonce | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| origin\$1jti | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 
| token\$1use | ID, Zugang | Nein | Nein | Nein | – | – | Benutzer, Maschine | – | 

1 Zugriffstoken für Maschinenidentitäten sind nur mit dem `v3_0` Trigger-Eingabeereignis verfügbar. Event-Version drei ist nur in den Feature-Tarifen **Essentials** und **Plus** verfügbar. Benutzerpools auf der **Lite-Stufe** können `v1_0` Ereignisse empfangen. Benutzerpools der **Lite-Stufe** mit erweiterten Sicherheitsfunktionen können `v2_0` Ereignisse empfangen`v1_0`.

2 Konfigurieren Sie Ihren Trigger vor der Token-Generierung auf die Event-Version nur `v1_0` für ID-Token, `v2_0` für ID und Zugriffstoken, `v3_0` für ID und Zugriffstoken mit Funktionen für Maschinenidentitäten.

3 Um die `cognito:roles` Ansprüche `cognito:preferred_role` und zu unterdrücken, fügen Sie `cognito:groups` zu `claimsToSuppress` hinzu.

4 Sie können einen `aud` Anspruch auf Zugriffstoken hinzufügen, dessen Wert muss jedoch mit der App-Client-ID der aktuellen Sitzung übereinstimmen. Sie können die Client-ID im Anforderungsereignis von `event.callerContext.clientId` ableiten.

## Anpassen des Identitäts-Token
<a name="user-pool-lambda-pre-token-generation-idtoken"></a>

Bei allen Eventversionen des Lambda-Triggers vor der Token-Generierung können Sie den Inhalt eines Identitätstokens (ID) aus Ihrem Benutzerpool anpassen. Das ID-Token stellt Benutzerattribute aus einer vertrauenswürdigen Identitätsquelle für die Anmeldung bei einer Web- oder mobilen App bereit. Weitere Informationen zu ID-Token finden Sie unter [Grundlegendes zum Identitätstoken (ID)](amazon-cognito-user-pools-using-the-id-token.md).

Der Lambda-Trigger vor der Token-Generierung mit einem ID-Token kann unter anderem wie folgt verwendet werden.
+ Eine Änderung an der IAM-Rolle zur Laufzeit vornehmen, die Ihr Benutzer aus einem Identitätspool anfordert.
+ Benutzerattribute aus einer externen Quelle hinzufügen.
+ Vorhandene Benutzerattributwerte hinzufügen oder ersetzen.
+ Die Offenlegung von Benutzerattributen unterdrücken, die aufgrund der autorisierten Bereiche Ihres Benutzers und des Lesezugriffs auf Attribute, die Sie Ihrem App-Client gewährt haben, andernfalls an Ihre App weitergegeben würden.

## Anpassen des Zugriffs-Token
<a name="user-pool-lambda-pre-token-generation-accesstoken"></a>

Mit den Ereignisversionen zwei und drei des Lambda-Triggers vor der Token-Generierung können Sie den Inhalt eines Zugriffstokens aus Ihrem Benutzerpool anpassen. Das Zugriffstoken autorisiert Benutzer, Informationen aus zugriffsgeschützten Ressourcen wie Token-autorisierten Amazon Cognito Cognito-API-Vorgängen und Drittanbietern abzurufen. APIs Für die machine-to-machine (M2M-) Autorisierung mit einer Gewährung von Kundenanmeldedaten ruft Amazon Cognito den Trigger vor der Token-Generierung nur auf, wenn Ihr Benutzerpool für ein Ereignis der Version drei () `V3_0` konfiguriert ist. Weitere Informationen zu Zugriffs-Token finden Sie unter [Das Zugriffstoken verstehen](amazon-cognito-user-pools-using-the-access-token.md).

Der Lambda-Trigger vor der Token-Generierung mit einem Zugriffs-Token kann unter anderem wie folgt verwendet werden.
+ Bereiche im Anspruch hinzufügen oder ausblenden. `scope` Sie können beispielsweise Bereiche zu einem Zugriffs-Token hinzufügen, das aus der API-Authentifizierung von Amazon-Cognito-Benutzerpools resultiert, wodurch nur der Bereich `aws.cognito.signin.user.admin` zugewiesen wird.
+ Die Mitgliedschaft eines Benutzers in Benutzerpool-Gruppen ändern.
+ Fügen Sie Ansprüche hinzu, die noch nicht in einem Amazon-Cognito-Zugriffstoken enthalten sind.
+ Unterdrücken Sie die Offenlegung von Ansprüchen, die andernfalls an Ihre App weitergeleitet würden.

Sie müssen den Benutzerpool so konfigurieren, dass eine aktualisierte Version der Trigger-Anforderung generiert wird um Zugriffsanpassungen in Ihrem Benutzerpool zu unterstützen. Aktualisieren Sie Ihren Benutzerpool wie im folgenden Verfahren gezeigt.

------
#### [ AWS-Managementkonsole ]

**So unterstützen Sie die Anpassung von Zugriffs-Token in einem Lambda-Trigger vor der Token-Generierung**

1. Navigieren Sie zur [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) und wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder [erstellen Sie einen neuen Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das Menü **Erweiterungen** und suchen Sie nach **Lambda-Triggern**.

1. Fügen Sie einen **Trigger für die Pre-Token-Generierung** hinzu oder bearbeiten Sie ihn.

1. Wählen Sie unter **Zuweisen einer Lambda-Funktion** eine Lambda-Funktion aus. 

1. Wählen Sie eine **Trigger-Event-Version** von **Basisfunktionen \$1 Anpassung von Zugriffstoken für Benutzeridentitäten** oder **Basisfunktionen \$1 Zugriffstoken-Anpassung für Benutzer- und Maschinenidentitäten**. Diese Einstellung aktualisiert die Anforderungsparameter, die Amazon Cognito an Ihre Funktion sendet, damit sie Felder für die Anpassung von Zugriffs-Token enthalten.

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

**So unterstützen Sie die Anpassung von Zugriffs-Token in einem Lambda-Trigger für die Pre-Token-Generierung**

Generieren Sie eine [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)oder [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Anfrage. Sie müssen einen Wert für alle Parameter angeben, die nicht auf einen Standardwert festgelegt werden sollen. Weitere Informationen finden Sie unter [Aktualisierung der Benutzerpool- und App-Client-Konfiguration](cognito-user-pool-updating.md).

Nehmen Sie den folgenden Inhalt in den `LambdaVersion`-Parameter Ihrer Anfrage auf. Ein `LambdaVersion` Wert von `V2_0` veranlasst Ihren Benutzerpool, Parameter für Zugriffstoken hinzuzufügen und Änderungen an diesen vorzunehmen. Der `LambdaVersion` Wert von `V3_0` erzeugt dasselbe Ereignis wie`V2_0`, veranlasst Ihren Benutzerpool jedoch, *auch* Änderungen an M2M-Zugriffstoken vorzunehmen. Verwenden Sie einen Lambda-Funktions-ARN mit einer Funktionsversion als den Wert von `LambdaArn`, um eine bestimmte Funktionsversion aufzurufen.

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

------

**Client-Metadaten für machine-to-machine (M2M-) Client-Anmeldeinformationen**  
Sie können [Client-Metadaten](cognito-user-pools-working-with-lambda-triggers.md#working-with-lambda-trigger-client-metadata) in M2M-Anfragen übergeben. Client-Metadaten sind zusätzliche Informationen aus einer Benutzer- oder Anwendungsumgebung, die zu den Ergebnissen einer [Lambda-Auslöser für die Vorab-Generierung von Token](#user-pool-lambda-pre-token-generation) beitragen können. Bei Authentifizierungsvorgängen mit einem Benutzerprinzipal können Sie Client-Metadaten im Hauptteil von [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)und [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API-Anfragen an den Trigger vor der Token-Generierung übergeben. Da Anwendungen den Ablauf für die Generierung von Zugriffstoken für M2M mit direkten Anfragen an die durchführen[Token-Endpunkt](token-endpoint.md), haben sie ein anderes Modell. Übergeben Sie im POST-Hauptteil der Token-Anfragen für Client-Anmeldeinformationen einen `aws_client_metadata` Parameter mit dem Client-Metadatenobjekt URL-encoded () `x-www-form-urlencoded` an string. Eine Beispielanforderung finden Sie unter [Kundenanmeldedaten mit BasisautorisierungKundenanmeldedaten mit POST-Body-Autorisierung](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body). Im Folgenden finden Sie einen Beispielparameter, der die Schlüssel-Wert-Paare übergibt. `{"environment": "dev", "language": "en-US"}`

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

**Weitere -Quellen**
+ [So passen Sie Zugriffstoken in Amazon Cognito Cognito-Benutzerpools an](https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/)

**Topics**
+ [Ereignisversionen](#user-pool-lambda-pre-token-generation-event-versions)
+ [Referenz zu Ansprüchen und Geltungsbereichen](#user-pool-lambda-pre-token-generation-excluded-claims)
+ [Anpassen des Identitäts-Token](#user-pool-lambda-pre-token-generation-idtoken)
+ [Anpassen des Zugriffs-Token](#user-pool-lambda-pre-token-generation-accesstoken)
+ [Lambda-Auslöserquellen für die Vorab-Generierung von Token](#user-pool-lambda-pre-token-generation-trigger-source)
+ [Lambda-Auslöserparameter für die Vorab-Generierung von Token](#cognito-user-pools-lambda-trigger-syntax-pre-token-generation)
+ [Beispiel für ein Pre-Token-Auslöserereignis, Version 2: Ansprüche, Bereiche und Gruppen hinzufügen und unterdrücken](#aws-lambda-triggers-pre-token-generation-example-version-2-overview)
+ [Beispiel für das Ereignis vor der Token-Generierung, Version 2: Ansprüche mit komplexen Objekten hinzufügen](#aws-lambda-triggers-pre-token-generation-example-version-2-complex-objects)
+ [Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Hinzufügen eines neuen Anspruchs und Löschen eines vorhandenen Anspruchs](#aws-lambda-triggers-pre-token-generation-version-1-add-claim)
+ [Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Ändern der Gruppenmitgliedschaft des Benutzers](#aws-lambda-triggers-pre-token-generation-version-1-change-group)

## Lambda-Auslöserquellen für die Vorab-Generierung von Token
<a name="user-pool-lambda-pre-token-generation-trigger-source"></a>


| triggerSource-Wert | Veranstaltung | 
| --- | --- | 
| TokenGeneration\$1HostedAuth | Wird während der Authentifizierung von der verwalteten Anmeldeseite mit Amazon Cognito aus aufgerufen. | 
| TokenGeneration\$1Authentication | Wird aufgerufen, nachdem Benutzer-Authentifizierung-Abläufe abgeschlossen sind. | 
| TokenGeneration\$1NewPasswordChallenge | Wird aufgerufen, nachdem der Benutzer von einem Administrator erstellt wurde. Dieser Ablauf wird aufgerufen, wenn der Benutzer ein temporäres Passwort ändern muss. | 
| TokenGeneration\$1ClientCredentials | Wird nach der Gewährung einer M2M-Client-Anmeldedaten aufgerufen. Ihr Benutzerpool sendet dieses Ereignis nur, wenn es Ihre Event-Version istV3\$10. | 
| TokenGeneration\$1AuthenticateDevice | Wird am Ende der Authentifizierung eines Benutzergeräts aufgerufen. | 
| TokenGeneration\$1RefreshTokens | Wird aufgerufen, wenn ein Benutzer versucht, die Identitäts- und Zugriffs-Token zu aktualisieren. | 

## Lambda-Auslöserparameter für die Vorab-Generierung von Token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation"></a>

Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der [allgemeinen Parameter](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared), die Amazon Cognito allen Anfragen hinzufügt. Wenn Sie Ihrem Benutzerpool zur Pre-Token-Generierung einen Lambda-Trigger hinzufügen, können Sie eine Trigger-Version auswählen. Diese Version bestimmt, ob Amazon Cognito eine Anfrage mit zusätzlichen Parametern für die Anpassung von Zugriffs-Token an Ihre Lambda-Funktion weitergibt.

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

Mit dem Versions-Eins-Token können Gruppenmitgliedschaften, IAM-Rollen und neue Ansprüche in ID-Token festgelegt werden. Überschreibungen der Gruppenmitgliedschaft gelten auch für den `cognito:groups` Anspruch in Zugriffstoken.

```
{
    "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 ]

In den Versionen zwei und drei werden Anforderungsereignisse hinzugefügt, mit denen das Zugriffstoken individuell angepasst werden kann. Benutzerpools wenden Änderungen von Ereignissen aus Version drei auf Zugriffstoken für Maschinenidentitäten an. Diese Versionen bieten auch Unterstützung für komplexe `claimsToOverride` Datentypen im Antwortobjekt. Ihre Lambda-Funktion kann die folgenden Datentypen im Wert von `claimsToOverride` zurückgeben:
+ Zeichenfolge
+ Zahl
+ Boolesch
+ Array aus Zeichenketten, Zahlen, Booleschen Werten oder einer Kombination aus diesen
+ 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"
            }
        }
    }
}
```

------

### Anforderungsparameter für die Vorab-Generierung von Token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation-request"></a>


| Name | Description | Minimale Trigger-Ereignisversion | 
| --- |--- |--- |
| userAttributes |  Die Attribute Ihres Benutzerprofils in Ihrem Benutzerpool.  | 1 | 
| groupConfiguration |  Das Eingabeobjekt, das die aktuelle Gruppenkonfiguration enthält. Das Objekt umfasst `groupsToOverride`, `iamRolesToOverride` und `preferredRole`.  | 1 | 
| groupsToOverride |  Die [Benutzerpoolgruppen](cognito-user-pools-user-groups.md#cognito-user-pools-user-groups.title), in denen Ihr Benutzer Mitglied ist.  | 1 | 
| iamRolesToÜberschreiben |  Sie können eine Benutzerpoolgruppe einer AWS Identity and Access Management (IAM-) Rolle zuordnen. Dieses Element ist eine Liste aller IAM-Rollen aus den Gruppen, in denen Ihr Benutzer Mitglied ist.  | 1 | 
| preferredRole |  Sie können eine [Priorität](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups.title) für Benutzerpoolgruppen festlegen. Dieses Element enthält den Namen der IAM-Rolle aus der Gruppe mit der höchsten Priorität im `groupsToOverride`-Element.  | 1 | 
| clientMetadata |  Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion angeben und für den Auslöser für die Pre-Token-Generierung bereitstellen können. Um diese Daten an Ihre Lambda-Funktion zu übergeben, verwenden Sie den ClientMetadata Parameter in den [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API-Operationen [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)und. Amazon Cognito bezieht keine Daten aus dem `ClientMetadata` Parameter in [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)und [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Operationen in die Anfrage ein, die es an die Pre-Token-Generierungsfunktion weitergibt.  | 1 | 
| Bereiche |  Greifen Sie auf Token-Bereiche zu. Die in einem Zugriffs-Token enthaltenen Bereiche sind die standardmäßigen und benutzerdefinierten Bereiche des Benutzerpools, die Ihr Benutzer angefordert hat und für deren Ausgabe Sie Ihren App-Client autorisiert haben.  | 2 | 

### Antwortparameter für die Vorab-Generierung von Token
<a name="cognito-user-pools-lambda-trigger-syntax-pre-token-generation-response"></a>


| Name | Description | Minimale Trigger-Ereignisversion | 
| --- |--- |--- |
| claimsOverrideDetails | Ein Container für alle Elemente in einem V1\$10-Auslöserereignis. | 1 | 
| claimsAndScopeOverrideDetails |  Ein Container für alle Elemente in einem Ereignis `V2_0` oder einem `V3_0` Trigger-Ereignis.  | 2 | 
| idTokenGeneration |  Die Ansprüche, die Sie im ID-Token Ihres Benutzers überschreiben, hinzufügen oder unterdrücken möchten. Diese Werte für die Anpassung des übergeordneten ID-Tokens werden nur in Ereignisversion 2 und höher angezeigt, die untergeordneten Elemente jedoch in Ereignissen der Version 1.  | 2 | 
| accessTokenGeneration |  Die Ansprüche, die Sie im Zugriffs-Token Ihres Benutzers überschreiben, hinzufügen oder unterdrücken möchten. Dieses übergeordnete Element für den Zugriff auf Token-Anpassungswerte erscheint nur in Eventversion 2 und höher.  | 2 | 
| claimsToAddOrOverride |  Eine Zuordnung von einem oder mehreren Ansprüchen und deren Werte, die Sie hinzufügen oder ändern möchten. Für gruppenbezogene Ansprüche verwenden Sie stattdessen `groupOverrideDetails`. In Eventversion 2 und höher erscheint dieses Element `accessTokenGeneration` sowohl unter als auch`idTokenGeneration`.  | 1[*](#cognito-pretoken-complex-objects-note) | 
| claimsToSuppress |  Eine Liste der Ansprüche, die Amazon Cognito unterdrücken soll. Wenn Ihre Funktion einen Anspruchswert unterdrückt und ersetzt, unterdrückt Amazon Cognito den Anspruch. In Eventversion 2 und höher erscheint dieses Element `accessTokenGeneration` sowohl unter als auch`idTokenGeneration`.  | 1 | 
| groupOverrideDetails |  Das Ausgabeobjekt, das die aktuelle Gruppenkonfiguration enthält. Das Objekt umfasst `groupsToOverride`, `iamRolesToOverride` und `preferredRole`. Ihre Funktion ersetzt das `groupOverrideDetails`-Objekt durch das von Ihnen bereitgestellte Objekt. Wenn Sie ein leeres oder Null-Objekt in der Antwort angeben, löscht Amazon Cognito die Gruppen. Wenn die bestehende Gruppenkonfiguration unverändert beibehalten werden soll, kopieren Sie den Wert des `groupConfiguration`-Objekts der Anforderung in das `groupOverrideDetails`-Objekt der Antwort. Übergeben Sie es dann zurück an den Service. Amazon-Cognito-ID und Zugriffstoken enthalten beide den `cognito:groups`-Anspruch. Ihr `groupOverrideDetails`-Objekt ersetzt den `cognito:groups`-Anspruch in Zugriffs-Token und in ID-Token. Gruppenüberschreibungen sind die einzigen Änderungen am Zugriffstoken, die Ereignisse der Version 1 vornehmen können.  | 1 | 
| scopesToAdd |  Eine Liste der Bereiche, die Sie dem `scope` Anspruch im Zugriffstoken Ihres Benutzers hinzufügen möchten. Sie können keine Bereichswerte hinzufügen, die ein oder mehrere Leerzeichen enthalten.  | 2 | 
| scopesToSuppress |  Eine Liste der Bereiche, die Sie aus dem `scope` Anspruch im Zugriffstoken Ihres Benutzers entfernen möchten.  | 2 | 

\$1 Antwortobjekte auf Ereignisse der ersten Version können Zeichenketten zurückgeben. Antwortobjekte auf Ereignisse der Versionen zwei und drei können [komplexe Objekte](#user-pool-lambda-pre-token-generation-event-versions) zurückgeben.

## Beispiel für ein Pre-Token-Auslöserereignis, Version 2: Ansprüche, Bereiche und Gruppen hinzufügen und unterdrücken
<a name="aws-lambda-triggers-pre-token-generation-example-version-2-overview"></a>

In diesem Beispiel werden die folgenden Änderungen an den Token eines Benutzers vorgenommen.

1. Legt ihren `family_name` als `Doe` im ID-Token fest.

1. Verhindert, dass `email`- und `phone_number`-Ansprüche im ID-Token erscheinen.

1. Legt ihren ID-Token-`cognito:roles`-Anspruch auf `"arn:aws:iam::123456789012:role\/sns_callerA","arn:aws:iam::123456789012:role\/sns_callerC","arn:aws:iam::123456789012:role\/sns_callerB"` fest.

1. Legt ihren ID-Token-`cognito:preferred_role`-Anspruch auf `arn:aws:iam::123456789012:role/sns_caller` fest.

1. Fügt die Bereiche `openid`, `email` und `solar-system-data/asteroids.add` zum Zugriffstoken hinzu.

1. Unterdrückt den Bereich `phone_number` und `aws.cognito.signin.user.admin` aus dem Zugriffstoken. Durch das Entfernen von `phone_number` wird das Abrufen der Telefonnummer des Benutzers von `userInfo` verhindert. Durch das Entfernen von `aws.cognito.signin.user.admin` werden API-Anfragen des Benutzers zum Lesen und Ändern des eigenen Profils mit der Amazon-Cognito-Benutzerpool-API verhindert.
**Anmerkung**  
Das Entfernen von `phone_number` aus Bereichen verhindert nur dann das Abrufen der Telefonnummer eines Benutzers, wenn die verbleibenden Bereiche im Zugriffstoken `openid` und mindestens einen weiteren Standardbereich enthalten. Weitere Informationen finden Sie unter [Grundlegendes zu Bereichen](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-scopes).

1. Legt den ID-Token-`cognito:groups`-Anspruch auf `"new-group-A","new-group-B","new-group-C"` fest.

------
#### [ 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 übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

------
#### [ 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": []
    }
}
```

------

## Beispiel für das Ereignis vor der Token-Generierung, Version 2: Ansprüche mit komplexen Objekten hinzufügen
<a name="aws-lambda-triggers-pre-token-generation-example-version-2-complex-objects"></a>

In diesem Beispiel werden die folgenden Änderungen an den Token eines Benutzers vorgenommen.

1. Fügt dem ID-Token Ansprüche der Typen Zahl, Zeichenfolge, Boolean und JSON hinzu. Dies ist die einzige Änderung, die Trigger-Ereignisse der zweiten Version für das ID-Token verfügbar machen.

1. Fügt dem Zugriffstoken Ansprüche der Typen Zahl, Zeichenfolge, Boolean und JSON hinzu.

1. Fügt dem Zugriffstoken drei Bereiche hinzu.

1. Unterdrückt den `email` Anspruch in den ID- und Zugriffstoken.

1. Unterdrückt den `aws.cognito.signin.user.admin` Bereich im Zugriffstoken.

------
#### [ 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 übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

------
#### [ 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": []
    }
}
```

------

## Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Hinzufügen eines neuen Anspruchs und Löschen eines vorhandenen Anspruchs
<a name="aws-lambda-triggers-pre-token-generation-version-1-add-claim"></a>

In diesem Beispiel wird ein Trigger-Ereignis der Version 1 mit einer Pre-Token-Generierungs-Lambda-Funktion verwendet, um einen neuen Anspruch hinzuzufügen und einen vorhandenen Anspruch zu unterdrücken.

------
#### [ 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 übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel: Da das Code-Beispiel nicht alle Anforderungsparameter verarbeitet, können Sie ein Testereignis mit einer leeren Anfrage verwenden. Weitere Informationen zu allgemeinen Anforderungsparametern finden Sie unter [Lambda-Auslöserereignis für einen Benutzerpool](cognito-user-pools-working-with-lambda-triggers.md#cognito-user-pools-lambda-trigger-event-parameter-shared).

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

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

------

## Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Ändern der Gruppenmitgliedschaft des Benutzers
<a name="aws-lambda-triggers-pre-token-generation-version-1-change-group"></a>

In diesem Beispiel wird ein Trigger-Ereignis der Version 1 mit einer Pre-Token-Generierungs-Lambda-Funktion verwendet, um die Gruppenmitgliedschaft des Benutzers zu ändern.

------
#### [ 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 übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

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

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

------