

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.

# Senden Sie benutzerdefinierte Attribute an Amazon Cognito und fügen Sie sie in Token ein
<a name="send-custom-attributes-cognito"></a>

*Carlos Alessandro Ribeiro und Mauricio Mendoza, Amazon Web Services*

## Zusammenfassung
<a name="send-custom-attributes-cognito-summary"></a>

Das Senden von benutzerdefinierten Attributen an einen Amazon Cognito Cognito-Authentifizierungsprozess kann einer Anwendung zusätzlichen Kontext bieten, detailliertere Zugriffskontrollen ermöglichen und die Verwaltung von Benutzerprofilen und Authentifizierungsanforderungen vereinfachen. Diese Funktionen sind in einer Vielzahl von Anwendungen und Szenarien nützlich und können Ihnen helfen, die allgemeine Sicherheit und Funktionalität einer Anwendung zu verbessern.

Dieses Muster zeigt, wie benutzerdefinierte Attribute an einen Amazon Cognito Cognito-Authentifizierungsprozess gesendet werden, wenn eine Anwendung zusätzlichen Kontext für das [Zugriffstoken oder das Identitätstoken](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html) [(ID)](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html) bereitstellen muss. Sie verwenden die Datei Node.js als Backend-Anwendung. Die Anwendung authentifiziert einen Benutzer aus einem Amazon Cognito [Cognito-Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html) und übergibt benutzerdefinierte Attribute, die für die Token-Generierung benötigt werden. Sie können [AWS Lambda Trigger](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html) für Amazon Cognito verwenden, um Ihren Authentifizierungsprozess ohne größere Code-Anpassungen oder großen Aufwand anzupassen.

**Wichtig**  
Der Code und die Beispiele in diesem Muster werden nicht für Produktionsworkloads empfohlen, da sie nur zu Demonstrationszwecken bestimmt sind. Für Produktionsworkloads ist eine zusätzliche Konfiguration auf der Clientseite erforderlich. Verwenden Sie dieses Muster nur als Referenz für Pilotprojekte oder für proof-of-concept andere Zwecke.

## Voraussetzungen und Einschränkungen
<a name="send-custom-attributes-cognito-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Berechtigungen zum Erstellen und Verwalten von Amazon Cognito Cognito-Benutzerpools und AWS Lambda -funktionen
+ AWS Command Line Interface [(AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Eine integrierte Entwicklungsumgebung (IDE), die Node.js unterstützt
+ Node.js Version 18 oder höher, [installiert](https://nodejs.org/en/download/)
+ [npm Version 8 oder höher, installiert](https://docs.npmjs.com/getting-started)
+ TypeScript[, installiert](https://www.typescriptlang.org/download/)

**Einschränkungen**
+ Dieses Muster gilt nicht für die Anwendungsintegration über den Authentifizierungsablauf mit Client-Anmeldeinformationen.
+ Mit dem Trigger vor der Token-Generierung können nur einige Attribute des Zugriffs- und Identitätstokens hinzugefügt oder geändert werden. Weitere Informationen finden Sie unter [Lambda-Trigger vor der Token-Generierung](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html) in der Amazon Cognito Cognito-Dokumentation.

## Architektur
<a name="send-custom-attributes-cognito-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt die Zielarchitektur für dieses Muster. Es zeigt auch, wie die Anwendung Node.js mit einem Backend zusammenarbeiten könnte, um Datenbanken zu aktualisieren. Die Backend-Datenbankaktualisierungen fallen jedoch nicht in den Geltungsbereich dieses Musters.

![Eine Node.js -Anwendung, die ein Zugriffstoken mit benutzerdefinierten Attributen für einen Amazon Cognito Cognito-Benutzerpool ausgibt.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9f0855e6-77f9-48c2-846e-f9c317127e1f/images/8c52c88b-8954-4b4c-aed3-fd8c22f84c1d.png)


Das Diagramm zeigt den folgenden Workflow:

1. Die Anwendung Node.js gibt ein Zugriffstoken mit benutzerdefinierten Attributen für den Amazon Cognito Cognito-Benutzerpool aus.

1. Der Amazon Cognito Cognito-Benutzerpool initiiert die Lambda-Funktion vor der Token-Generierung, mit der die Zugriffs- und ID-Token angepasst werden.

1. Die Anwendung Node.js führt einen API-Aufruf über Amazon API Gateway durch.

**Anmerkung**  
Die anderen in dieser Architektur gezeigten Architekturkomponenten dienen nur als Beispiel und fallen nicht in den Anwendungsbereich dieses Musters.

**Automatisierung und Skalierung**

Sie können die Bereitstellung von Amazon Cognito Cognito-Benutzerpools, AWS Lambda Funktionen, Datenbank-Instances und anderen Ressourcen automatisieren [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), indem Sie das [AWS Cloud Development Kit (AWS CDK) HashiCorp ](https://docs.aws.amazon.com/cdk/v2/guide/home.html)[Terraform](https://www.terraform.io/docs) - oder ein anderes unterstütztes Infrastructure-as-Code-Tool (IaC) verwenden. Wenn Sie Ihre Bereitstellungen skalieren möchten, verwenden Sie CI/CD-Pipelines (Continuous Integration and Continuous Delivery), um Fehler im Zusammenhang mit manuellen Bereitstellungen zu vermeiden.

## Tools
<a name="send-custom-attributes-cognito-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Beenden und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS SDK für JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html)bietet eine JavaScript API für AWS-Services. Sie können damit Bibliotheken oder Anwendungen für Node.js oder den Browser erstellen.

**Andere Tools**
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert ist.
+ [npm](https://docs.npmjs.com/about-npm) ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.

## Best Practices
<a name="send-custom-attributes-cognito-best-practices"></a>

Wir empfehlen Ihnen, die folgenden bewährten Methoden zu implementieren:
+ **Geheimnisse und sensible Daten** — Speichern Sie keine Geheimnisse oder vertraulichen Daten innerhalb der Anwendung. Verwenden Sie ein externes System, aus dem die Anwendung die Daten abrufen kann [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html), z. B. [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), oder [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html).
+ **Standardisierte Bereitstellung** — Verwenden Sie CI/CD Pipelines, um Ihre Anwendungen bereitzustellen. Sie können Dienste wie [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)und [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)verwenden.
+ **Ablauf des Tokens** — Legen Sie ein kurzes Ablaufdatum für das Zugriffstoken fest.
+ **Verwenden Sie eine sichere Verbindung** — Die gesamte Kommunikation zwischen der Client-Anwendung und dem Backend sollte mit SSL/TLS verschlüsselt werden. Verwenden Sie [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html), um SSL/TLS Zertifikate zu generieren und zu verwalten, und verwenden Sie [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) oder [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html), um die SSL/TLS Kündigung abzuwickeln.
+ **Benutzereingaben validieren** — Stellen Sie sicher, dass alle Benutzereingaben validiert werden, um Injection-Angriffe und andere Sicherheitslücken zu verhindern. Verwenden Sie Bibliotheken und Dienste zur Eingabevalidierung wie Amazon API Gateway, [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html#waf-intro)um gängige Angriffsvektoren zu verhindern.
+ **Verwenden Sie IAM-Rollen** — Verwenden Sie [AWS Identity and Access Management (IAM-)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) Rollen, um den Zugriff auf AWS Ressourcen zu kontrollieren und sicherzustellen, dass nur autorisierte Benutzer Zugriff haben. Folgen Sie dem Prinzip der geringsten Rechte und stellen Sie sicher, dass jeder Benutzer nur über die erforderlichen Berechtigungen verfügt, um seine Rolle auszuführen.
+ **Verwenden Sie eine Kennwortrichtlinie** — Konfigurieren Sie eine Kennwortrichtlinie, die Ihren Sicherheitsanforderungen wie Mindestlänge, Komplexität und Ablauf entspricht. Verwenden Sie Secrets Manager oder AWS Systems Manager Parameter Store, um Passwörter sicher zu speichern und zu verwalten.
+ **Multi-Faktor-Authentifizierung (MFA)** aktivieren — Aktivieren Sie MFA für alle Benutzer, um eine zusätzliche Sicherheitsebene bereitzustellen und das Risiko eines unbefugten Zugriffs zu verringern. Verwenden Sie [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)oder Amazon Cognito, um MFA und andere Authentifizierungsmethoden zu aktivieren.
+ **Vertrauliche Informationen sicher** speichern — Speichern Sie vertrauliche Informationen wie Passwörter und Zugriffstoken sicher, indem Sie [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) oder andere Verschlüsselungsdienste verwenden.
+ **Verwenden Sie starke Authentifizierungsmethoden** — Verwenden Sie starke Authentifizierungsmethoden wie biometrische Authentifizierung oder Multi-Faktor-Authentifizierung, um die Sicherheit des Authentifizierungsprozesses zu erhöhen.
+ **Überwachung auf verdächtige Aktivitäten** — Verwenden Sie [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)und andere Überwachungstools, um verdächtige Aktivitäten und potenzielle Sicherheitsbedrohungen zu überwachen. Richten Sie automatische Benachrichtigungen für ungewöhnliche Aktivitäten ein und nutzen Sie [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html) oder, [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)um potenzielle Bedrohungen zu erkennen.
+ **Regelmäßige Überprüfung und Aktualisierung der Sicherheitsrichtlinien** — Überprüfen und aktualisieren Sie Ihre Sicherheitsrichtlinien und -verfahren regelmäßig, um sicherzustellen, dass sie Ihren sich ändernden Sicherheitsanforderungen und bewährten Verfahren entsprechen. Verwenden Sie diese Option AWS Config , um Änderungen an Ihren Sicherheitsrichtlinien und -verfahren nachzuverfolgen und zu überprüfen.
+ **Automatisierte Anmeldung** — Aktivieren Sie nicht die automatische Anmeldung bei einem Amazon Cognito Cognito-Benutzerpool. Weitere Informationen finden Sie unter [Reduzieren Sie das Risiko von Benutzerregistrierungsbetrug und SMS-Pumping mit Amazon Cognito Cognito-Benutzerpools](https://aws.amazon.com/blogs/security/reduce-risks-of-user-sign-up-fraud-and-sms-pumping-with-amazon-cognito-user-pools/) (AWS Blogbeitrag).

Weitere bewährte Methoden finden Sie unter [Bewährte Sicherheitsmethoden für Amazon Cognito Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-security-best-practices.html) in der Amazon Cognito Cognito-Dokumentation.

## Epen
<a name="send-custom-attributes-cognito-epics"></a>

### Richten Sie die Ressourcen AWS ein
<a name="set-up-the-aws-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Benutzerpool. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html)Weitere Informationen und Anweisungen zum Einrichten eines Benutzerpools in finden Sie unter [Erste Schritte mit Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools.html) und [Hinzufügen weiterer Funktionen und Sicherheitsoptionen zu Ihrem Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-next-steps.html). AWS-ManagementkonsoleTesten Sie dieses Muster mit dem Essentials-Plan oder dem Lite-Plan, um die Kosten zu senken. Weitere Informationen finden Sie unter [Amazon Cognito Cognito-Preise](https://aws.amazon.com/cognito/pricing/). | App-Entwickler, AWS DevOps | 
| Fügen Sie dem Benutzerpool einen Benutzer hinzu. | Geben Sie den folgenden Befehl ein, um einen Benutzer im Amazon Cognito Cognito-Benutzerpool zu erstellen:<pre>aws cognito-idp sign-up \<br />   --client-id <ClientID> \<br />   --username <jane@example.com> \<br />   --password <PASSWORD> \<br />   --user-attributes Name="email",Value="<jane@example.com>" Name="name",Value="<Jane>"</pre> | App-Entwickler, AWS DevOps | 
| Fügen Sie den App-Client dem Benutzerpool hinzu. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html) | AWS-Systemadministrator, AWS-Administrator, AWS DevOps, App-Entwickler | 
| Erstellen Sie einen Lambda-Trigger für die Pre-Token-Generierung. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html) | AWS DevOps, App-Entwickler | 
| Passen Sie den Benutzerpool-Workflow an. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html)Weitere Informationen finden Sie unter [Anpassen von Benutzerpool-Workflows mit Lambda-Triggern](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html) in der Amazon Cognito Cognito-Dokumentation. | AWS DevOps, App-Entwickler | 

### Erstellen Sie die Anwendung Node.js
<a name="create-the-node-js-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Anwendung Node.js. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html) | App-Developer | 
| Implementieren Sie die Authentifizierungslogik. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-custom-attributes-cognito.html)Sie können Ihre eigene TypeScript Datei erstellen oder das bereitgestellte Beispiel nach Bedarf für Ihren Anwendungsfall ändern. | App-Developer | 
| Konfigurieren Sie die Umgebungsvariablen und die Konfigurationsdatei. | Geben Sie in einem Terminal die folgenden Befehle ein, um die Umgebungsvariablen zu erstellen:<pre>export USERNAME="<COGNITO_USER_NAME>"<br />export PASSWORD="<COGNITO_USER_PASSWORD>"<br />export USER_POOL_ID="<COGNITO_USER_ID>"<br />export CLIENT_ID="<COGNITO_CLIENT_ID>"</pre>Codieren Sie keine Geheimnisse fest und geben Sie Ihre Anmeldeinformationen nicht preis. | App-Developer | 
| Führen Sie die Anwendung aus. | Geben Sie die folgenden Befehle ein, um die Anwendung auszuführen und zu bestätigen, dass sie funktioniert:<pre>npm run build<br />npm start</pre> | App-Developer | 
| Vergewissern Sie sich, dass die benutzerdefinierten Attribute in die Token eingefügt wurden. | Verwenden Sie die Debugging-Funktionen für Ihre IDE, um die Zugriffs- und ID-Token anzuzeigen. Vergewissern Sie sich, dass die benutzerdefinierten Attribute hinzugefügt wurden. Beispiel-Token finden Sie im Abschnitt [Zusätzliche Informationen](#send-custom-attributes-cognito-additional) dieses Musters. | App-Developer | 

## Fehlerbehebung
<a name="send-custom-attributes-cognito-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ungültige Client-ID beim Versuch, den Benutzer zu authentifizieren | Dieser Fehler tritt normalerweise auf, wenn Sie eine Client-ID mit einem generierten geheimen Client-Schlüssel verwenden. Sie müssen eine Client-ID erstellen, der kein Geheimnis zugeordnet ist. Weitere Informationen finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html). | 

## Zugehörige Ressourcen
<a name="send-custom-attributes-cognito-resources"></a>
+ [Anpassen von Benutzerpool-Workflows mit Lambda-Triggern](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html) (Amazon Cognito Cognito-Dokumentation)
+ [Lambda-Trigger vor der Token-Generierung](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html) (Amazon Cognito Cognito-Dokumentation)
+ [CognitoIdentityProviderClient](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cognito-identity-provider/)(Dokumentation)AWS SDK für JavaScript 
+ [cognito-idp](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/cognito-idp/index.html#cli-aws-cognito-idp) (Dokumentation)AWS CLI 

## Zusätzliche Informationen
<a name="send-custom-attributes-cognito-additional"></a>

** TypeScript Beispieldatei**

Das folgende Codebeispiel ist eine TypeScript Datei, die den Authentifizierungsprozess mithilfe eines AWS SDK aufruft, um benutzerdefinierte Attribute an Amazon Cognito zu senden:

```
import * as AmazonCognitoIdentity from "amazon-cognito-identity-js";

const userPoolId: string = process.env.USER_POOL_ID ?? '';
const clientId: string = process.env.CLIENT_ID ?? '';

const poolData = {
  UserPoolId: userPoolId,
  ClientId: clientId
};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);

export const loginWithCognitoSDK = function (userName: string, password: string) {
  const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails({
    Username: userName,
    Password: password,
    ClientMetadata: {
        customGroup: "MyCustomGroup",
        customApplicationData: "Custom data from a custom application"
    }
  });
  const userData = {
    Username: userName,
    Pool: userPool
  };

  const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

  // Authenticate the user using the authenticationDetails object
  cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result: any) {},
    onFailure: function (err: any) {},
  });
}
loginWithCognitoSDK(process.env.USERNAME ?? '', process.env.PASSWORD ?? '');
```

Das Beispiel verwendet das `AuthenticationDetails` Modell aus dem SDK für, JavaScript um den Benutzernamen, das Passwort und die bereitzustellen. `ClientMetadada` Nach der Authentifizierung in Amazon Cognito können die Client-Metadaten aus den Zugriffs- und ID-Token abgerufen werden.

**Beispiel-Lambda-Funktion**

Das folgende Codebeispiel ist eine Lambda-Funktion, die mit dem [Pre-Generation-Token](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html) von Amazon Cognito verknüpft ist. Es hilft Ihnen, das Zugriffstoken und das ID-Token, die Amazon Cognito verwendet, anzupassen. Die Token werden durch die Integrationen zwischen Ihrer Architektur weitergegeben. Dieses Beispiel enthält ein benutzerdefiniertes Anspruchsattribut mit dem Namen `customApplicationData` und einen benutzerdefinierten Gruppennamen namens`MyCustomGroup`:

```
export const handler = async(event, context, callback) => {
    event.response = {
        claimsOverrideDetails: {
            claimsToAddOrOverride: { customApplicationData: event.request.clientMetadata.customApplicationData },
            groupOverrideDetails: { groupsToOverride: [event.request.clientMetadata.customGroup] }
        }
    };
    callback(null, event);
};
```

**Beispiel für ein Zugriffstoken**

Sie können das Zugriffstoken dekodieren, um die hinzugefügten benutzerdefinierten Attribute zu visualisieren. Im Folgenden finden Sie ein Beispiel für ein Zugriffstoken:

```
{
  "sub": "6daf331f-4451-48b4-abde-774579299204",
  "cognito:groups": [
    "MyCustomGroup"
  ],
  "iss": "https://cognito-idp.<REGION>.amazonaws.com/<USERPOOL_ID>",
  "client_id": "<YOUR_CLIENT_ID>",
  "origin_jti": "acff7e91-09f9-4fde-8eec-38b0f8c47cdc",
  "event_id": "c5113a9c-1f01-435b-9b73-a5cd3e88514e",
  "token_use": "access",
  "scope": "aws.cognito.signin.user.admin",
  "auth_time": 1677979246,
  "exp": 1677982846,
  "iat": 1677979246,
  "jti": "5c9c2708-a871-4428-bd9b-18ad261bea90",
  "username": "<USER_NAME>"
}
```

**Beispiel für ein ID-Token**

Sie können das Zugriffstoken dekodieren, um die hinzugefügten benutzerdefinierten Attribute zu visualisieren. Im Folgenden finden Sie ein Beispiel für ein Zugriffstoken:

```
{
  "sub": "6daf331f-4451-48b4-abde-774579299204",
  "cognito:groups": [
    "MyCustomGroup"
  ],
  "iss": "https://cognito-idp.<REGION>.amazonaws.com/<USERPOOL_ID>",
  "cognito:username": "<USER_NAME>",
  "origin_jti": "acff7e91-09f9-4fde-8eec-38b0f8c47cdc",
  "customApplicationData": "Custom data from a custom application",
  "aud": "<YOUR_CLIENT_ID>",
  "event_id": "c5113a9c-1f01-435b-9b73-a5cd3e88514e",
  "token_use": "id",
  "auth_time": 1677979246,
  "exp": 1677982846,
  "iat": 1677979246,
  "jti": "f7ca006b-f25b-44d2-a7a4-6e6423f4201f",
  "email": "<USER_EMAIL>"
}
```