

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.

# Amazon-Cognito-Benutzerpools
<a name="cognito-user-pools"></a>

Ein Amazon-Cognito-Benutzerpool ist ein Benutzerverzeichnis für die Authentifizierung und Autorisierung von Web- und mobilen Apps. Aus der Sicht Ihrer App ist ein Amazon-Cognito-Benutzerpool ein OIDC (OpenID Connect)-Identitätsanbieter. Ein Benutzerpool bietet zusätzliche Ebenen für Sicherheit, Identitätsverbund, Anwendungsintegration und Anpassung der Benutzerumgebung.

Sie können beispielsweise überprüfen, ob die Sitzungen Ihrer Benutzer aus vertrauenswürdigen Quellen stammen. Sie können das Amazon-Cognito-Verzeichnis mit einem externen Identitätsanbieter kombinieren. Mit Ihrem bevorzugten AWS SDK können Sie das API-Autorisierungsmodell auswählen, das für Ihre App am besten geeignet ist. Dazu können Sie  AWS Lambda -Funktionen hinzufügen, die das Standardverhalten von Amazon Cognito ändern oder überarbeiten.

![\[Ein Diagramm mit einem allgemeinen Überblick über die Funktionsweise von Benutzerpools. Clients können sich mit Anwendungen anmelden, die mithilfe eines AWS SDK erstellt wurden, oder mit dem in Benutzerpools integrierten OIDC-IdP. Benutzerpools vereinheitlichen auch Anmeldeprozesse für mehrere Social-, OpenID Connect- und SAML 2.0-Identitätsanbieter.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-cup.png)


**Topics**
+ [Features](#cognito-user-pools-features)
+ [Funktionspläne für Benutzerpools](cognito-sign-in-feature-plans.md)
+ [Bewährte Sicherheitsmethoden für Amazon-Cognito-Benutzerpools](user-pool-security-best-practices.md)
+ [Authentifizierung mit Amazon Cognito Cognito-Benutzerpools](authentication.md)
+ [Benutzerpool-Anmeldung mit externen Identitätsanbietern](cognito-user-pools-identity-federation.md)
+ [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md)
+ [Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern](cognito-user-pools-working-with-lambda-triggers.md)
+ [Verwalten von Benutzern in Ihrem Benutzerpool](managing-users.md)
+ [JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md)
+ [Zugriff auf Ressourcen nach erfolgreicher Anmeldung](accessing-resources.md)
+ [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md)
+ [Benutzerpoolfunktionen konfigurieren](user-pools-configure-features.md)
+ [Verwendung der Sicherheitsfunktionen für Amazon-Cognito-Benutzerpools](managing-security.md)
+ [Benutzerpool-Endpunkte und Referenz für verwaltete Logins](cognito-userpools-server-contract-reference.md)

## Features
<a name="cognito-user-pools-features"></a>

Amazon-Cognito-Benutzerpools haben die folgenden Merkmale.

### Registrieren
<a name="cognito-user-pools-sign-up"></a>

Amazon-Cognito-Benutzerpools verfügen über benutzergesteuerte, administratorgesteuerte und programmatische Methoden, um Ihrem Benutzerpool Benutzerprofile hinzuzufügen. Amazon-Cognito-Benutzerpools unterstützen die folgenden Anmeldemodelle. Sie können eine beliebige Kombination dieser Modelle in Ihrer App verwenden.

**Wichtig**  
Wenn Sie die Benutzerregistrierung in Ihrem Benutzerpool aktivieren, kann sich jeder im Internet für ein Konto registrieren und bei Ihren Apps anmelden. Aktivieren Sie die Selbstregistrierung in Ihrem Benutzerpool nur dann, wenn Sie die öffentliche Registrierung für Ihre App aktivieren möchten. Um diese Einstellung zu ändern, aktualisieren Sie die **Self-Service-Anmeldung im **Anmeldemenü**** unter **Authentifizierung** in der Benutzerpool-Konsole oder aktualisieren Sie den Wert von in einer oder API-Anfrage. [ AllowAdminCreateUserOnly[ CreateUserPool[ UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUserConfigType.html#CognitoUserPools-Type-AdminCreateUserConfigType-AllowAdminCreateUserOnly)  
Hinweise zu Sicherheitsfunktionen, die Sie in Ihren Benutzerpools einrichten können, finden Sie unter [Verwendung der Sicherheitsfunktionen für Amazon-Cognito-Benutzerpools](managing-security.md).

1. Ihre Benutzer können ihre Informationen in Ihre App eingeben und ein Benutzerprofil erstellen, das für Ihren Benutzerpool spezifisch ist. Sie können API-Anmeldevorgänge aufrufen, um Benutzer in Ihrem Benutzerpool zu registrieren. Sie können diese Anmeldevorgänge für jedermann öffnen oder sie mit einem geheimen Kundengeheimnis oder Anmeldeinformationen autorisieren. AWS 

1. Sie können Benutzer an einen externen IdP weiterleiten, den sie autorisieren können, ihre Informationen an Amazon Cognito weiterzugeben. Amazon Cognito verarbeitet OIDC-ID-Token, OAuth `userInfo` 2.0-Daten und SAML 2.0-Assertionen zu Benutzerprofilen in Ihrem Benutzerpool. Sie kontrollieren die Attribute, die Amazon Cognito erhalten soll, auf der Grundlage von Regeln für die Attributzuordnung.

1. Sie können die öffentliche oder Verbundregistrierung überspringen und Benutzer auf der Grundlage Ihrer eigenen Datenquelle und Ihres eigenen Schemas erstellen. Fügen Sie Benutzer direkt in der Amazon-Cognito-Konsole oder der API hinzu. Importieren von Benutzern aus einer CSV-Datei. Führen Sie eine just-in-time AWS Lambda Funktion aus, die Ihren neuen Benutzer in einem vorhandenen Verzeichnis sucht und sein Benutzerprofil anhand vorhandener Daten auffüllt.

Nachdem sich Ihre Benutzer angemeldet haben, können Sie sie zu Gruppen hinzufügen, die Amazon Cognito in den Zugriffs- und ID-Token auflistet. Sie können Benutzerpoolgruppen auch mit IAM-Rollen verknüpfen, wenn Sie das ID-Token an einen Identitätspool übergeben.

**Verwandte Themen**
+ [Verwalten von Benutzern in Ihrem Benutzerpool](managing-users.md)
+ [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations)
+ [Codebeispiele für Amazon Cognito Identity Provider mit AWS SDKs](service_code_examples_cognito-identity-provider.md)

### Anmelden
<a name="cognito-user-pools-sign-in"></a>

Amazon Cognito kann ein eigenständiges Benutzerverzeichnis und ein  Identitätsanbieter (IDP) für Ihre App sein. Ihre Benutzer können sich mit verwalteten Anmeldeseiten, die von Amazon Cognito gehostet werden, oder mit einem maßgeschneiderten Benutzerauthentifizierungsservice über die Amazon Cognito Cognito-Benutzerpools-API anmelden. Die Anwendungsebene hinter Ihrem maßgeschneiderten Frontend kann Anfragen am Backend mit einer von mehreren Methoden autorisieren, um legitime Anfragen zu bestätigen.

Benutzer können Benutzernamen und Passwörter, Hauptschlüssel sowie Einmalpasswörter für E-Mail- und SMS-Nachrichten einrichten und mit ihnen signieren. Sie können eine konsolidierte Anmeldung mit externen Benutzerverzeichnissen, Multi-Faktor-Authentifizierung (MFA) nach der Anmeldung, vertrauenswürdigen Geräten und von Ihnen entworfene benutzerdefinierte Authentifizierungsabläufe anbieten.

Um Benutzer mit einem externen Verzeichnis anzumelden, das optional mit dem in Amazon Cognito integrierten Benutzerverzeichnis kombiniert ist, können Sie die folgenden Integrationen hinzufügen.

1. Melden Sie sich an und importieren Sie Kundenbenutzerdaten mit Social Sign-In OAuth 2.0. Amazon Cognito unterstützt die Anmeldung bei Google, Facebook, Amazon und Apple bis OAuth 2.0. 

1. Melden Sie sich mit SAML- und OIDC-Anmeldung an und importieren Sie Benutzerdaten für Arbeit und Schule. Sie können Amazon Cognito auch so konfigurieren, dass es Anforderungen von jedem SAML- oder OpenID Connect (OIDC)-Identitätsanbieter (IDP) akzeptiert. 

1.  Verknüpfen Sie externe Benutzerprofile mit nativen Benutzerprofilen. Ein verknüpfter Benutzer kann sich mit einer Benutzeridentität eines Drittanbieters anmelden und Zugriff erhalten, den Sie einem Benutzer im integrierten Verzeichnis zuweisen.

**Verwandte Themen**
+ [Benutzerpool-Anmeldung mit externen Identitätsanbietern](cognito-user-pools-identity-federation.md)
+ [Verknüpfen von Verbundbenutzern mit einem vorhandenen Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md)

**Machine-to-machine Autorisierung**  
Manche Sitzungen sind keine human-to-machine Interaktion. Möglicherweise benötigen Sie ein Servicekonto, das eine Anfrage an eine API durch einen automatisierten Prozess autorisieren kann. Um Zugriffstoken für die machine-to-machine Autorisierung mit OAuth 2.0-Bereichen zu generieren, können Sie einen App-Client hinzufügen, der Berechtigungen für [Client-Anmeldeinformationen](https://www.rfc-editor.org/rfc/rfc6749#section-4.4) generiert.

**Verwandte Themen**
+ [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md)

### Verwaltete Anmeldung
<a name="cognito-user-pools-hosted-ui"></a>

Wenn Sie keine Benutzeroberfläche erstellen möchten, können Sie Ihren Benutzern benutzerdefinierte verwaltete Anmeldeseiten anbieten. Bei der verwalteten Anmeldung handelt es sich um eine Reihe von Webseiten für die Registrierung, Anmeldung, Multi-Faktor-Authentifizierung (MFA) und das Zurücksetzen von Passwörtern. Sie können Ihrer bestehenden Domain eine verwaltete Anmeldung hinzufügen oder eine Präfix-ID in einer Subdomain verwenden. AWS 

**Verwandte Themen**
+ [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md)
+ [Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md)

### Sicherheit
<a name="cognito-user-pools-security"></a>

Ihre lokalen Benutzer können einen zusätzlichen Authentifizierungsfaktor mit einem Code aus einer SMS- oder E-Mail-Nachricht oder einer App bereitstellen, die Multi-Faktor-Authentifizierungscodes (MFA) generiert. Sie können Mechanismen erstellen, um MFA in Ihrer Anwendung einzurichten und zu verarbeiten, oder Sie können sie von Managed Login verwalten lassen. Amazon-Cognito-Benutzerpools können MFA umgehen, wenn sich Ihre Benutzer von vertrauenswürdigen Geräten aus anmelden.

Wenn Sie MFA zunächst nicht von Ihren Benutzern verlangen möchten, können Sie dies unter bestimmten Bedingungen anfordern. Mit der adaptiven Authentifizierung kann Amazon Cognito potenzielle böswillige Aktivitäten erkennen und Ihren Benutzer auffordern, MFA einzurichten oder die Anmeldung zu blockieren.

Wenn der Netzwerkverkehr zu Ihrem Benutzerpool bösartig sein könnte, können Sie ihn überwachen und über das Internet Maßnahmen ergreifen. AWS WAF ACLs

**Verwandte Themen**
+ [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md)
+ [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md)
+ [Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md)

### Benutzerdefinierte Nutzerumgebung
<a name="cognito-user-pools-custom-user-experience"></a>

In den meisten Phasen der Registrierung, Anmeldung oder Profilaktualisierung eines Benutzers können Sie einstellen, wie Amazon Cognito die Anfrage behandelt. Mit Lambda-Auslösern können Sie ein ID-Token ändern oder eine Anmeldeanfrage auf der Grundlage benutzerdefinierter Bedingungen ablehnen. Sie können Ihren eigenen benutzerdefinierten Authentifizierungsprozess erstellen.

Sie können benutzerdefiniertes CSS und Logos hochladen, um Ihren Benutzern das vertraute Erscheinungsbild der verwalteten Anmeldung zu verleihen.

**Verwandte Themen**
+ [Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern](cognito-user-pools-working-with-lambda-triggers.md)
+ [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md)
+ [Branding auf verwaltete Anmeldeseiten anwenden](managed-login-branding.md)

### Überwachung und Analytik
<a name="cognito-user-pools-monitoring-and-analytics"></a>

Amazon Cognito Cognito-Benutzerpools protokollieren API-Anfragen, einschließlich Anfragen zur verwalteten Anmeldung, an AWS CloudTrail. In der Service Quotas Quotas-Konsole können Sie Leistungskennzahlen in Amazon CloudWatch Logs überprüfen, benutzerdefinierte Protokolle CloudWatch mit Lambda-Triggern per Push übertragen, die E-Mail- und SMS-Nachrichtenzustellung überwachen und das Volumen der API-Anfragen überwachen.

Mit dem [Plus-Funktionsplan](cognito-sign-in-feature-plans.md) können Sie mithilfe von Technologie für automatisiertes Lernen die Versuche zur Benutzerauthentifizierung auf Anzeichen von Sicherheitslücken hin überwachen und Risiken sofort beheben. Diese erweiterten Sicherheitsfunktionen protokollieren auch Benutzeraktivitäten in Ihrem Benutzerpool und optional in Amazon S3, CloudWatch Logs oder Amazon Data Firehose.

Sie können auch Geräte- und Sitzungsdaten aus Ihren API-Anfragen für eine Amazon-Pinpoint-Kampagne protokollieren. Mit Amazon Pinpoint können Sie basierend auf Ihrer Analyse der Benutzeraktivitäten Push-Benachrichtigungen von Ihrer App aus senden.

**Verwandte Themen**
+ [Anmeldung bei Amazon Cognito AWS CloudTrail](logging-using-cloudtrail.md)
+ [Tracking von Kontingenten und Nutzung in CloudWatch Service Quotas](tracking-quotas-and-usage-in-cloud-watch-and-service-quotas.md)
+ [Exportieren von Protokollen aus Amazon Cognito Cognito-Benutzerpools](exporting-quotas-and-usage.md)
+ [Verwendung von Amazon Pinpoint für Benutzerpool-Analysen](cognito-user-pools-pinpoint-integration.md)

### Integration von Amazon-Cognito-Identitätspools
<a name="cognito-user-pools-identity-pools-integration"></a>

Die andere Hälfte von Amazon Cognito sind die Identitätspools. Identitätspools stellen Anmeldeinformationen bereit, mit denen API-Anfragen von Ihren Benutzern autorisiert und überwacht werden können AWS-Services, z. B. an Amazon DynamoDB oder Amazon S3. Sie können identitätsbasierte Zugriffsrichtlinien erstellen, die Ihre Daten, basierend darauf schützen, wie Sie die Benutzer in Ihrem Benutzerpool klassifizieren. Identitätspools können unabhängig von der Benutzerpool-Authentifizierung auch Tokens und SAML-2.0-Assertions von einer Vielzahl von Identitätsanbietern akzeptieren.

**Verwandte Themen**
+ [Zugriff AWS-Services über einen Identitätspool nach der Anmeldung](amazon-cognito-integrating-user-pools-with-identity-pools.md)
+ [Amazon-Cognito-Identitätspools](cognito-identity.md)

# Funktionspläne für Benutzerpools
<a name="cognito-sign-in-feature-plans"></a>

Das Verständnis der Kosten ist ein entscheidender Schritt bei der Vorbereitung der Implementierung der Amazon Cognito Cognito-Benutzerpool-Authentifizierung. Amazon Cognito bietet Funktionspläne für Benutzerpools. Jeder Plan hat eine Reihe von Funktionen und monatliche Kosten pro aktivem Benutzer. Jeder Funktionsplan ermöglicht den Zugriff auf mehr Funktionen als der vorherige.

Benutzerpools verfügen über eine Vielzahl von Funktionen, die Sie ein- und ausschalten können. Sie können beispielsweise die Multi-Faktor-Authentifizierung (MFA) aktivieren und die Anmeldung bei externen Identitätsanbietern () deaktivieren. IdPs Bei einigen Änderungen müssen Sie Ihren Funktionsplan wechseln. Die folgenden Merkmale Ihres Benutzerpools bestimmen die Kosten, die Ihnen monatlich für die Nutzung in AWS Rechnung gestellt werden.
+ Die Funktionen, die Sie wählen
+ Die Anfragen pro Sekunde, die Ihre Anwendung an die Benutzerpools-API stellt
+ Die Anzahl der Benutzer mit Authentifizierungs-, Aktualisierungs- oder Abfrageaktivitäten in einem Monat, auch [aktive Benutzer pro Monat](quotas.md#monthly-active-users) genannt oder MAUs
+ Die Anzahl der monatlich aktiven Benutzer von SAML 2.0 oder OpenID Connect (OIDC) eines Drittanbieters IdPs
+ Die Anzahl der App-Clients und Benutzerpools, die Client-Anmeldeinformationen für die Autorisierung gewähren machine-to-machine

Die aktuellsten Informationen zu den Preisen für Benutzerpools finden Sie unter [Amazon Cognito Cognito-Preise](https://aws.amazon.com/cognito/pricing).

Die ausgewählten Funktionspläne gelten für einen Benutzerpool. Verschiedene Benutzerpools im selben Pool AWS-Konto können unterschiedliche Planauswahlen haben. Sie können keine separaten Featurepläne auf App-Clients innerhalb eines Benutzerpools anwenden. Die Standardplanauswahl für neue Benutzerpools ist Essentials.

Sie können jederzeit zwischen den Funktionsplänen wechseln, um sie an die Anforderungen Ihrer Anwendungen anzupassen. Bei einigen Änderungen zwischen den Plänen müssen Sie aktive Funktionen deaktivieren. Weitere Informationen finden Sie unter [Funktionen ausschalten, um Funktionspläne zu ändern](feature-plans-deactivate.md).Funktionspläne für Benutzerpools

**Lite**  
Lite ist ein kostengünstiger Funktionsplan für Benutzerpools mit einer geringeren Anzahl von monatlich aktiven Benutzern. Dieser Plan ist ausreichend für Benutzerverzeichnisse mit grundlegenden Authentifizierungsfunktionen. Er umfasst Anmeldefunktionen und die klassische gehostete Benutzeroberfläche, einen schlankeren, weniger anpassbaren Vorgänger der verwalteten Anmeldung. Viele neuere Funktionen, wie die Anpassung von Zugriffstoken und die Authentifizierung mit dem Hauptschlüssel, sind nicht im Lite-Plan enthalten.

**Grundlegendes**  
Essentials verfügt über die neuesten Authentifizierungsfunktionen für Benutzerpools. Dieser Plan erweitert Ihre Anwendungen um neue Optionen, unabhängig davon, ob es sich bei Ihren Anmeldeseiten um verwaltete Anmeldeseiten oder um benutzerdefinierte Anmeldeseiten handelt. [Essentials bietet erweiterte Authentifizierungsfunktionen wie [wahlbasierte Anmeldung](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) und E-Mail-MFA.](user-pool-settings-mfa-sms-email-message.md)

**Plus**  
Plus beinhaltet alles, was im Essentials-Plan enthalten ist, und bietet erweiterte Sicherheitsfunktionen, die Ihre Benutzer schützen. Überwachen Sie Benutzeranmeldungen, Registrierungsanfragen und Anfragen zur Passwortverwaltung auf Hinweise auf Sicherheitslücken. Benutzerpools können beispielsweise erkennen, ob sich Benutzer von einem unerwarteten Ort aus anmelden oder ein Passwort verwenden, das Teil einer öffentlichen Sicherheitsverletzung war.  
Benutzerpools mit dem Plus-Plan generieren Protokolle mit Details zu Benutzeraktivitäten und Risikobewertungen. Sie können Ihre eigenen Nutzungs- und Sicherheitsanalysen auf diese Protokolle anwenden, wenn Sie sie in externe Dienste exportieren.

**Anmerkung**  
Bisher waren einige Funktionen des Benutzerpools in der Preisstruktur für *erweiterte Sicherheitsfunktionen* enthalten. Die Funktionen, die in dieser Struktur enthalten waren, sind jetzt entweder im Essentials- oder Plus-Plan enthalten.

**Topics**
+ [Wählen Sie einen Feature-Plan](#cognito-sign-in-feature-plans-choose)
+ [Funktionen nach Tarif](#cognito-sign-in-feature-plans-list)
+ [Funktionen des Essentials-Plans](feature-plans-features-essentials.md)
+ [Funktionen des Plus-Plans](feature-plans-features-plus.md)
+ [Funktionen ausschalten, um Funktionspläne zu ändern](feature-plans-deactivate.md)

## Wählen Sie einen Feature-Plan
<a name="cognito-sign-in-feature-plans-choose"></a>

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

Um einen Feature-Plan auszuwählen

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool.

1. Wählen Sie das Menü **Einstellungen** und überprüfen Sie den Tab **Funktionspläne**.

1. Sehen Sie sich die Funktionen an, die Ihnen in den Lite-, Essentials- und Plus-Plänen zur Verfügung stehen.

1. Um Ihren Plan zu ändern, wählen Sie Zu **Essentials wechseln oder Zu** Plus **wechseln** aus. Um zum **Lite-Plan** zu wechseln, wähle **Andere Tarife** und dann **Mit Lite vergleichen** aus.

1. Überprüfen Sie auf dem nächsten Bildschirm Ihre Auswahl und wählen Sie **Bestätigen** aus.

------
#### [ CLI/API/SDK ]

Die [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)Operationen [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)und legen Ihren Funktionsplan im `UserPoolTier` Parameter fest. Wenn Sie keinen Wert für angeben`UserPoolTier`, ist Ihr Benutzerpool standardmäßig auf`Essentials`. Wenn Sie `AdvancedSecurityMode` auf `AUDIT` oder setzen`ENFORCED`, muss Ihre Benutzerpool-Stufe lauten `PLUS` und die Standardeinstellung ist, `PLUS` wenn nichts angegeben ist.

Informationen CreateUserPool zur Syntax finden Sie [in den Beispielen](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples) unter. Links zu dieser Funktion [in oder CreateUserPool AWS SDKs für eine Vielzahl von Programmiersprachen finden Sie unter Auch](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_SeeAlso) in.

```
"UserPoolTier": "PLUS"
```

In der AWS CLI ist diese Option ein `--user-pool-tier` Argument.

```
--user-pool-tier PLUS
```

Weitere Informationen finden Sie unter [create-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool.html)und [update-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html)in der AWS CLI Befehlsreferenz.

------

## Funktionen nach Tarif
<a name="cognito-sign-in-feature-plans-list"></a>


**Funktionen und Pläne in Benutzerpools**  

| Feature | Description | Funktionsplan | 
| --- | --- | --- | 
| Schützen Sie sich vor unsicheren Passwörtern | Überprüfen Sie Klartext-Passwörter zur Laufzeit auf Anzeichen für kompromittierte Passwörter | Plus | 
| Schützen Sie sich vor böswilligen Anmeldeversuchen | Überprüfen Sie die Sitzungseigenschaften zur Laufzeit auf Anzeichen einer Beeinträchtigung | Plus | 
| Benutzeraktivitäten protokollieren und analysieren | Generieren Sie Protokolle mit den Eigenschaften und Risikobewertungen von Benutzerauthentifizierungssitzungen | Plus | 
| Exportieren Sie Benutzeraktivitätsprotokolle | Senden Sie Benutzersitzungs- und Risikoprotokolle an ein externes AWS-Service | Plus | 
| Passen Sie verwaltete Anmeldeseiten mit einem visuellen Editor an | Verwenden Sie einen visuellen Editor in der Amazon Cognito Cognito-Konsole, um Branding und Stil auf Ihre verwalteten Anmeldeseiten anzuwenden. | Essentials \$1 Plus | 
| MFA mit E-Mail-Einmalcodes | Fordere lokale Benutzer an oder fordere sie auf, nach der Benutzernamenauthentifizierung einen zusätzlichen Anmeldefaktor für E-Mail-Nachrichten anzugeben | Essentials \$1 Plus | 
| Passen Sie die Gültigkeitsbereiche und Ansprüche von Zugriffstoken zur Laufzeit an | Verwenden Sie einen Lambda-Trigger, um die Autorisierungsfunktionen von Zugriffstoken für Benutzerpools zu erweitern | Essentials \$1 Plus | 
| Passwortlose Anmeldung mit Einmalcodes | Erlauben Sie Benutzern, als ersten Authentifizierungsfaktor ein Einmalpasswort per E-Mail oder SMS zu erhalten | Essentials \$1 Plus | 
| Passkey-Anmeldung mit Hardware- oder Software-Authentifikatoren FIDO2  | Erlauben Sie Benutzern, einen auf einem FIDO2 Authentifikator gespeicherten kryptografischen Schlüssel als ersten Authentifizierungsfaktor zu verwenden | Essentials \$1 Plus | 
| Melde dich an und melde dich an | Führen Sie Authentifizierungsvorgänge durch und lassen Sie neue Benutzer sich für ein Konto in Ihrer Anwendung registrieren. | Lite \$1 Essentials \$1 Plus | 
| Benutzergruppen | Erstellen Sie logische Gruppierungen von Benutzern und weisen Sie Standard-IAM-Rollen für Identitätspool-Operationen zu. | Lite \$1 Essentials \$1 Plus | 
| Melden Sie sich bei Social-, SAML- und OIDC-Anbietern an | Bieten Sie Benutzern die Möglichkeit, sich direkt oder bei ihrem bevorzugten Anbieter anzumelden. | Lite \$1 Essentials \$1 Plus | 
| OAuth 2.0/OIDC-Autorisierungsserver | Als OIDC-Emittent agieren. | Lite \$1 Essentials \$1 Plus | 
| Anmeldeseiten | Eine gehostete Sammlung von Webseiten zur Authentifizierung. Die verwaltete Anmeldung ist in den Stufen Essentials und Plus verfügbar. Die klassische gehostete Benutzeroberfläche ist in allen Funktionsstufen verfügbar. | Lite \$1 Essentials \$1 Plus | 
| Passwort, benutzerdefinierte Authentifizierung, Aktualisierungstoken und SRP-Authentifizierung | Fordert Benutzer in Ihrer Anwendung zur Eingabe eines Benutzernamens und Kennworts auf. | Lite \$1 Essentials \$1 Plus | 
| Machine-to-machine (M2M) mit Kundenanmeldedaten | Stellen Sie Zugriffstoken für die Autorisierung nichtmenschlicher Entitäten aus. | Lite \$1 Essentials \$1 Plus | 
| API-Autorisierung mit Ressourcenservern | Stellen Sie Zugriffstoken mit benutzerdefinierten Bereichen aus, die den Zugriff auf externe Systeme autorisieren. | Lite \$1 Essentials \$1 Plus | 
| Benutzer importieren | Richten Sie Importaufträge aus CSV-Dateien ein und führen Sie die just-in-time Migration der Benutzer bei der Anmeldung durch. | Lite \$1 Essentials \$1 Plus | 
| MFA mit Authenticator-Apps und SMS-Einmalcodes | Fordere lokale Benutzer an oder fordere sie auf, nach der Benutzernamen-Authentifizierung eine zusätzliche SMS-Nachricht oder einen Anmeldefaktor für die Authenticator-App anzugeben | Lite \$1 Essentials \$1 Plus | 
| Passen Sie die Gültigkeitsbereiche und Ansprüche von ID-Tokens zur Laufzeit an | Verwenden Sie einen Lambda-Trigger, um die Authentifizierungsfunktionen von Benutzerpool-Identitätstoken (ID) zu erweitern | Lite \$1 Essentials \$1 Plus | 
| Benutzerdefinierte Laufzeitaktionen mit Lambda-Triggern | Passen Sie den Anmeldevorgang zur Laufzeit mit Lambda-Funktionen an, die externe Aktionen ausführen und die Authentifizierung beeinflussen | Lite \$1 Essentials \$1 Plus | 
| Passen Sie verwaltete Anmeldeseiten mit CSS an | Laden Sie eine CSS-Vorlage herunter und ändern Sie einige Stile auf Ihren verwalteten Anmeldeseiten | Lite \$1 Essentials \$1 Plus | 

# Funktionen des Essentials-Plans
<a name="feature-plans-features-essentials"></a>

Der Feature-Plan Essentials bietet die meisten der besten und neuesten Funktionen der Amazon Cognito Cognito-Benutzerpools. Wenn Sie vom Lite- zum Essentials-Plan wechseln, erhalten Sie neue Funktionen für Ihre verwalteten Anmeldeseiten, Multi-Faktor-Authentifizierung mit Einmalpasswörtern für E-Mail-Nachrichten, eine erweiterte Passwortrichtlinie und benutzerdefinierte Zugriffstoken. Wählen Sie up-to-date den Essentials-Plan für Ihre Benutzerpools, um weiterhin die neuen Funktionen des Benutzerpools nutzen zu können.

Die folgenden Abschnitte bieten einen kurzen Überblick über die Funktionen, die Sie Ihrer Anwendung mit dem Essentials-Plan hinzufügen können. Ausführliche Informationen finden Sie auf den folgenden Seiten.

**Weitere Ressourcen**
+ Anpassung des Zugriffstokens: [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md)
+ E-Mail MFA: [SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md)
+ Verlauf des Passworts: [Passwörter, Kontowiederherstellung und Passwortrichtlinien](managing-users-passwords.md)
+ Verbesserte Benutzeroberfläche: [Branding auf verwaltete Anmeldeseiten anwenden](managed-login-branding.md)

**Topics**
+ [Anpassen von Zugriffs-Token](#features-access-token-customization)
+ [E-Mail MFA](#features-email-mfa)
+ [Verhinderung der Wiederverwendung von Passwörtern](#features-password-reuse)
+ [Verwaltete Anmeldung, gehosteter Anmelde- und Autorisierungsserver](#features-enhanced-ui)
+ [Wahlbasierte Authentifizierung](#features-user-auth)

## Anpassen von Zugriffs-Token
<a name="features-access-token-customization"></a>

[Zugriffstoken](https://datatracker.ietf.org/doc/html/rfc6749#section-1.4) für Benutzerpools gewähren Anwendungen Berechtigungen: zum [Zugriff auf eine API](cognito-user-pools-define-resource-servers.md), zum Abrufen von Benutzerattributen vom [UserInfo-Endpunkt](userinfo-endpoint.md) oder zum Einrichten einer [Gruppenmitgliedschaft](cognito-user-pools-user-groups.md) für ein externes System. In fortgeschrittenen Szenarien möchten Sie den standardmäßigen Zugriffstokendaten aus dem Benutzerpoolverzeichnis möglicherweise zusätzliche temporäre Parameter hinzufügen, die Ihre Anwendung zur Laufzeit bestimmt. Möglicherweise möchten Sie beispielsweise die API-Berechtigungen eines Benutzers mit [Amazon Verified Permissions](amazon-cognito-authorization-with-avp.md) überprüfen und die Bereiche im Zugriffstoken entsprechend anpassen.

Der Essentials-Plan erweitert die bestehenden Funktionen eines [Triggers vor der Token-Generierung](user-pool-lambda-pre-token-generation.md). Bei Tarifen niedrigerer Stufen können Sie ID-Token mit zusätzlichen Ansprüchen, Rollen und Gruppenmitgliedschaften personalisieren. Essentials fügt neue Versionen des Trigger-Eingabeereignisses hinzu, mit denen Ansprüche, Rollen, Gruppenmitgliedschaft und Geltungsbereiche auf Zugriffstoken angepasst werden können. Die Anpassung des Zugriffstokens ist für machine-to-machine (M2M-) [Kundenanmeldeberechtigungen mit](federation-endpoints-oauth-grants.md) Eventversion 3 verfügbar.

**Um Zugriffstoken anzupassen**

1. Wählen Sie den Featureplan Essentials oder Plus aus.

1. Erstellen Sie eine Lambda-Funktion für Ihren Trigger. Um unsere Beispielfunktion zu verwenden, [konfigurieren Sie sie für Node.js](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html).

1. Füllen Sie Ihre Lambda-Funktion mit unserem [Beispielcode](user-pool-lambda-pre-token-generation.md#aws-lambda-triggers-pre-token-generation-example-version-2-overview) oder verfassen Sie Ihren eigenen. Ihre Funktion muss ein Anforderungsobjekt von Amazon Cognito verarbeiten und die Änderungen zurückgeben, die Sie einbeziehen möchten.

1. Weisen Sie Ihre neue Funktion als Trigger der [Version zwei oder drei](user-pool-lambda-pre-token-generation.md#user-pool-lambda-pre-token-generation-event-versions) vor der Token-Generierung zu. Ereignisse der Version zwei passen Zugriffstoken an Benutzeridentitäten an. Version drei passt Zugriffstoken für Benutzer- und Maschinenidentitäten an.

**Weitere Informationen**
+ [Anpassen des Zugriffs-Token](user-pool-lambda-pre-token-generation.md#user-pool-lambda-pre-token-generation-accesstoken)
+ [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/)

## E-Mail MFA
<a name="features-email-mfa"></a>

Amazon Cognito Cognito-Benutzerpools können so konfiguriert werden, dass sie E-Mail als zweiten Faktor bei der Multi-Faktor-Authentifizierung (MFA) verwenden. Mit E-Mail-MFA kann Amazon Cognito Benutzern eine E-Mail mit einem Bestätigungscode senden, den sie eingeben müssen, um den Authentifizierungsprozess abzuschließen. Dies fügt dem Benutzeranmeldeablauf eine wichtige zusätzliche Sicherheitsebene hinzu. Um E-Mail-basiertes MFA zu aktivieren, muss der Benutzerpool so konfiguriert sein, dass er die [Amazon SES SES-E-Mail-Versandkonfiguration anstelle der Standard-E-Mail-Konfiguration](user-pool-email.md#user-pool-email-developer) verwendet.

Wenn Ihr Benutzer MFA per E-Mail-Nachricht auswählt, sendet Amazon Cognito bei jedem Anmeldeversuch einen einmaligen Bestätigungscode an die registrierte E-Mail-Adresse des Benutzers. Der Benutzer muss diesen Code dann an Ihren Benutzerpool zurückgeben, um den Authentifizierungsvorgang abzuschließen und Zugriff zu erhalten. Dadurch wird sichergestellt, dass ein Benutzer, selbst wenn der Benutzername und das Passwort kompromittiert werden, einen zusätzlichen Faktor — den per E-Mail gesendeten Code — angeben muss, bevor er auf Ihre Anwendungsressourcen zugreifen kann.

Weitere Informationen finden Sie unter [SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md). Im Folgenden finden Sie eine Übersicht darüber, wie Sie Ihren Benutzerpool und Benutzer für E-Mail-MFA einrichten.

**So richten Sie E-Mail-MFA in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Featureplan Essentials oder Plus aus.

1. Bearbeiten Sie im **Anmeldemenü** Ihres Benutzerpools die Option **Multi-Faktor-Authentifizierung**.

1. Wählen Sie die Ebene der **MFA-Durchsetzung**, die Sie einrichten möchten. Mit **Require MFA** erhalten Benutzer in der API automatisch eine Aufforderung, MFA einzurichten, zu bestätigen und sich mit MFA anzumelden. In Benutzerpools, die MFA erfordern, werden sie bei der verwalteten Anmeldung aufgefordert, einen MFA-Faktor auszuwählen und einzurichten. Mit **optionalem MFA** muss Ihre Anwendung Benutzern die Möglichkeit bieten, MFA einzurichten und die Benutzerpräferenz für E-Mail-MFA festzulegen.

1. Wählen Sie unter **MFA-Methoden** die Option **E-Mail-Nachricht** als eine der Optionen aus.

**Weitere Informationen**
+ [SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md)

## Verhinderung der Wiederverwendung von Passwörtern
<a name="features-password-reuse"></a>

Standardmäßig legt eine Amazon Cognito Cognito-Benutzerpool-Passwortrichtlinie die Anforderungen an die Passwortlänge und den Zeichentyp sowie den temporären Ablauf von Passwörtern fest. Der Essentials-Plan bietet die Möglichkeit, den Passwortverlauf durchzusetzen. Wenn ein Benutzer versucht, sein Passwort zurückzusetzen, kann Ihr Benutzerpool verhindern, dass er es auf ein vorheriges Passwort setzt. Weitere Informationen zur Konfiguration der Passwortrichtlinie finden Sie unter[Hinzufügen von Benutzerpool-Passwortanforderungen](managing-users-passwords.md#user-pool-settings-policies). Im Folgenden finden Sie eine Übersicht darüber, wie Sie Ihren Benutzerpool mit einer Richtlinie zur Kennworthistorie einrichten.

**So richten Sie den Passwortverlauf in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Featureplan Essentials oder Plus aus.

1. Suchen Sie im Menü **Authentifizierungsmethoden** Ihres Benutzerpools nach **Passwortrichtlinie** und wählen Sie **Bearbeiten** aus.

1. Konfigurieren Sie andere verfügbare Optionen und legen Sie einen Wert für „**Verwendung früherer Passwörter verhindern**“ fest.

**Weitere Informationen**
+ [Passwörter, Kontowiederherstellung und Passwortrichtlinien](managing-users-passwords.md)

## Verwaltete Anmeldung, gehosteter Anmelde- und Autorisierungsserver
<a name="features-enhanced-ui"></a>

Amazon Cognito Cognito-Benutzerpools verfügen über optionale Webseiten, die die folgenden Funktionen unterstützen: einen OpenID Connect (OIDC) IdP, einen Dienstanbieter oder eine vertrauende Partei eines IdPs Drittanbieters und öffentliche benutzerinteraktive Seiten für die Registrierung und Anmeldung. Diese *Seiten* werden zusammenfassend als verwaltete Anmeldung bezeichnet. Wenn Sie eine Domain für Ihren Benutzerpool auswählen, aktiviert Amazon Cognito diese Seiten automatisch. Wenn der Lite-Plan über die gehostete Benutzeroberfläche verfügt, öffnet der Essentials-Plan diese erweiterte Version der Anmelde- und Anmeldeseiten.

Verwaltete Anmeldeseiten verfügen über eine übersichtliche up-to-date Oberfläche mit mehr Funktionen und Optionen zur Anpassung Ihres Brandings und Ihrer Stile. Der Essentials-Plan ist der niedrigste Tarif, der den Zugriff auf die verwaltete Anmeldung freischaltet.

**So richten Sie die verwaltete Anmeldung in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie im Menü **Einstellungen** den Featureplan Essentials oder Plus aus.

1. [Weisen Sie Ihrem Benutzerpool im Menü **Domain** eine Domain](cognito-user-pools-assign-domain.md) zu und wählen Sie eine **Branding-Version** von **Managed Login** aus.

1. Wählen Sie im Menü **Verwaltete Anmeldung** auf der Registerkarte **Stile** die Option **Stil erstellen** aus und weisen Sie den Stil einem App-Client zu, oder erstellen Sie einen neuen App-Client.

**Weitere Informationen**
+ [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md)

## Wahlbasierte Authentifizierung
<a name="features-user-auth"></a>

*Mit der Stufe „Essentials“ wird ein neuer *Authentifizierungsablauf* für Authentifizierungsvorgänge in der erweiterten Benutzeroberfläche und SDK-basierte API-Operationen eingeführt. Bei diesem Ablauf handelt es sich um eine wahlbasierte Authentifizierung.* Die wahlbasierte Authentifizierung ist eine Methode, bei der die Authentifizierung Ihrer Benutzer nicht mit einer anwendungsseitigen Deklaration einer Anmeldemethode beginnt, sondern mit einer Abfrage möglicher Anmeldemethoden, gefolgt von einer Auswahl. Sie können Ihren Benutzerpool so konfigurieren, dass er die wahlbasierte Authentifizierung unterstützt und die Authentifizierung mit Benutzername/Passwort, kennwortloser Authentifizierung und Hauptschlüsselauthentifizierung entsperrt. In der API ist das der Ablauf. `USER_AUTH`

**So richten Sie die wahlbasierte Authentifizierung in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Featureplan Essentials oder Plus aus.

1. Bearbeiten Sie im **Anmeldemenü** Ihres Benutzerpools die **Optionen für die wahlbasierte Anmeldung.** Wählen und konfigurieren Sie die Authentifizierungsmethoden, die Sie für die wahlbasierte Authentifizierung aktivieren möchten.

1. Bearbeiten Sie im Menü **Authentifizierungsmethoden** Ihres Benutzerpools die Konfiguration der Anmeldevorgänge.

**Weitere Informationen**
+ [Authentifizierung mit Amazon Cognito Cognito-Benutzerpools](authentication.md)

# Funktionen des Plus-Plans
<a name="feature-plans-features-plus"></a>

Der Plus-Funktionsplan bietet erweiterte Sicherheitsfunktionen für Amazon Cognito Cognito-Benutzerpools. Diese Funktionen protokollieren und analysieren den Benutzerkontext zur Laufzeit im Hinblick auf potenzielle Sicherheitsprobleme bei Geräten, Standorten, Anforderungsdaten und Passwörtern. Anschließend minimieren sie potenzielle Risiken durch automatische Reaktionen, die Benutzerkonten blockieren oder Sicherheitsvorkehrungen für sie hinzufügen. Sie können Ihre Sicherheitsprotokolle auch zur weiteren Analyse nach Amazon S3, Amazon Data Firehose oder Amazon CloudWatch Logs exportieren.

Wenn Sie vom Essentials- zum Plus-Plan wechseln, erhalten Sie alle Funktionen von Essentials und die folgenden zusätzlichen Funktionen. Dazu gehören die Sicherheitsoptionen zum Schutz vor Bedrohungen, die auch als *erweiterte Sicherheitsfunktionen* bezeichnet werden. Um Ihre Benutzerpools so zu konfigurieren, dass sie sich automatisch an Bedrohungen in Ihrem Authentifizierungs-Frontend anpassen, wählen Sie den Plus-Plan für Ihre Benutzerpools.

Die folgenden Abschnitte bieten einen kurzen Überblick über die Funktionen, die Sie Ihrer Anwendung mit dem Plus-Plan hinzufügen können. Ausführliche Informationen finden Sie auf den folgenden Seiten.

**Weitere Ressourcen**
+ Adaptive Authentifizierung: [Arbeiten Sie mit adaptiver Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md)
+ Kompromittierte Anmeldeinformationen: [Arbeiten mit der Erkennung kompromittierter Anmeldeinformationen](cognito-user-pool-settings-compromised-credentials.md)
+ Export von Protokollen: [Exportieren von Protokollen aus Amazon Cognito Cognito-Benutzerpools](exporting-quotas-and-usage.md)

**Topics**
+ [Schutz vor Bedrohungen: adaptive Authentifizierung](#features-adaptive-authentication)
+ [Bedrohungsschutz: Erkennung kompromittierter Anmeldeinformationen](#features-compromised-credentials)
+ [Bedrohungsschutz: Protokollierung von Benutzeraktivitäten](#features-user-logs)

## Schutz vor Bedrohungen: adaptive Authentifizierung
<a name="features-adaptive-authentication"></a>

Der Plus-Plan beinhaltet eine *adaptive Authentifizierungsfunktion*. Wenn Sie diese Funktion aktivieren, führt Ihr Benutzerpool für jede Benutzerauthentifizierungssitzung eine Risikobewertung durch. Anhand der resultierenden Risikoeinstufungen können Sie die Authentifizierung blockieren oder MFA für Benutzer aktivieren, die sich mit einer Risikostufe anmelden, die über einem von Ihnen festgelegten Schwellenwert liegt. Mit der adaptiven Authentifizierung blockieren oder richten Ihr Benutzerpool und Ihre Anwendung automatisch MFA für Benutzer ein, deren Konten Sie vermuten, dass sie angegriffen werden. Sie können auch Feedback zu den Risikobewertungen aus Ihrem Benutzerpool geben, um future Bewertungen anzupassen.

**So richten Sie die adaptive Authentifizierung in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Plus-Funktionsplan aus.

1. Bearbeiten Sie im Menü **Bedrohungsschutz** Ihres Benutzerpools unter **Bedrohungsschutz** die Optionen **Standard- und benutzerdefinierte Authentifizierung**.

1. Stellen Sie den **Erzwingungsmodus** für die Standard- oder benutzerdefinierte Authentifizierung auf **Vollständig ein.**

1. Konfigurieren Sie unter **Adaptive Authentifizierung** automatische Risikoreaktionen für verschiedene Risikostufen.

**Weitere Informationen**
+ [Arbeiten Sie mit adaptiver Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md)
+ [Erfassung von Daten für den Schutz vor Bedrohungen in Anwendungen](user-pool-settings-viewing-threat-protection-app.md)

## Bedrohungsschutz: Erkennung kompromittierter Anmeldeinformationen
<a name="features-compromised-credentials"></a>

Der Plus-Plan beinhaltet eine Funktion zur Erkennung *kompromittierter Anmeldeinformationen*. Diese Funktion schützt vor der Verwendung unsicherer Passwörter und vor der Gefahr eines unbeabsichtigten Anwendungszugriffs, die durch diese Vorgehensweise entsteht. Wenn Sie Ihren Benutzern gestatten, sich mit einem Benutzernamen und einem Passwort anzumelden, verwenden sie möglicherweise ein Passwort, das sie an anderer Stelle verwendet haben. Dieses Passwort ist möglicherweise durchgesickert oder wird häufig nur erraten. Bei der Erkennung kompromittierter Anmeldeinformationen liest Ihr Benutzerpool die von Ihren Benutzern übermittelten Passwörter und vergleicht sie mit Kennwortdatenbanken. Wenn der Vorgang zu der Entscheidung führt, dass das Passwort wahrscheinlich kompromittiert wurde, können Sie Ihren Benutzerpool so konfigurieren, dass die Anmeldung blockiert wird, und dann ein Zurücksetzen des Kennworts für den Benutzer in Ihrer Anwendung veranlassen.

Die Erkennung kompromittierter Anmeldeinformationen kann auf unsichere Passwörter reagieren, wenn sich neue Benutzer anmelden, wenn sich bestehende Benutzer anmelden und wenn Benutzer versuchen, ihre Passwörter zurückzusetzen. Mit dieser Funktion kann Ihr Benutzerpool verhindern oder davor warnen, sich mit unsicheren Passwörtern anzumelden, egal wo Benutzer sie eingeben.

**So richten Sie die Erkennung kompromittierter Anmeldeinformationen in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Plus-Funktionsplan aus.

1. Bearbeiten Sie im Menü **Bedrohungsschutz** Ihres Benutzerpools unter **Bedrohungsschutz** die Optionen **Standard- und benutzerdefinierte Authentifizierung**.

1. Stellen Sie den **Erzwingungsmodus** für die Standard- oder benutzerdefinierte Authentifizierung auf **Vollständig ein.**

1. Konfigurieren Sie unter **Kompromittierte Anmeldeinformationen** die Arten von Authentifizierungsvorgängen, die Sie überprüfen möchten, und die automatische Antwort, die Sie von Ihrem Benutzerpool erwarten.

**Weitere Informationen**
+ [Arbeiten mit der Erkennung kompromittierter Anmeldeinformationen](cognito-user-pool-settings-compromised-credentials.md)

## Bedrohungsschutz: Protokollierung von Benutzeraktivitäten
<a name="features-user-logs"></a>

Der Plus-Plan bietet eine Protokollierungsfunktion, die Sicherheitsanalysen und Einzelheiten zu Benutzerauthentifizierungsversuchen enthält. Sie können Risikobewertungen, Benutzer-IP-Adressen, Benutzeragenten und andere Informationen über das Gerät einsehen, das eine Verbindung zu Ihrer Anwendung hergestellt hat. Sie können mit den integrierten Funktionen zum Schutz vor Bedrohungen auf diese Informationen reagieren oder Ihre Protokolle in Ihren eigenen Systemen analysieren und geeignete Maßnahmen ergreifen. Sie können die Protokolle von Threat Protection nach Amazon S3, CloudWatch Logs oder Amazon DynamoDB exportieren.

**So richten Sie die Protokollierung von Benutzeraktivitäten in der Amazon Cognito Cognito-Konsole ein**

1. Wählen Sie den Plus-Funktionsplan aus.

1. Bearbeiten Sie im Menü **Bedrohungsschutz** Ihres Benutzerpools unter **Bedrohungsschutz** die Optionen **Standard- und benutzerdefinierte Authentifizierung**.

1. Stellen Sie den **Erzwingungsmodus** für die Standard- oder benutzerdefinierte Authentifizierung auf Nur **Audit** ein. Dies ist die Mindesteinstellung für Protokolle. Sie können es auch im **Vollfunktionsmodus** aktivieren und andere Funktionen zum Schutz vor Bedrohungen konfigurieren.

1. Um Ihre Protokolle AWS-Service zur Analyse durch Dritte in ein anderes zu exportieren, rufen Sie das **Log-Streaming-Menü** Ihres Benutzerpools auf und richten Sie ein Exportziel ein.

**Weitere Informationen**
+ [Benutzerauthentifizierungsereignisse exportieren](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history-exporting)
+ [Exportieren von Protokollen aus Amazon Cognito Cognito-Benutzerpools](exporting-quotas-and-usage.md)

# Funktionen ausschalten, um Funktionspläne zu ändern
<a name="feature-plans-deactivate"></a>

Funktionspläne erweitern Ihren Benutzerpool um Konfigurationsoptionen. Sie können diese Funktionen nur konfigurieren und verwenden, wenn der zugehörige Funktionsplan aktiv ist. Sie können beispielsweise die Anpassung von Zugriffstoken in den Plus- und Essentials-Plänen konfigurieren, nicht jedoch im Lite-Plan. Um diese Funktionen zu deaktivieren, müssen Sie jede aktive Komponente deaktivieren. Die Option **Wechseln zu** im Menü **Einstellungen** in der Amazon Cognito Cognito-Konsole informiert Sie über die Funktionen, die Sie deaktivieren müssen, bevor Sie Ihren Funktionsplan ändern können. In diesem Kapitel erfahren Sie, welche Änderungen die Deaktivierung an Ihrer Benutzerpool-Konfiguration vornimmt und wie Sie diese Funktionen einzeln ausschalten können.

**Anpassen von Zugriffs-Token**  
Um zu einem Plan zu wechseln, der keine Anpassung von Zugriffstoken beinhaltet, müssen Sie den [Lambda-Trigger vor der Token-Generierung](user-pool-lambda-pre-token-generation.md#user-pool-lambda-pre-token-generation-accesstoken) aus Ihrem Benutzerpool entfernen. Um einen neuen Trigger vor der Token-Generierung ohne Anpassung des Zugriffstokens hinzuzufügen, weisen Sie dem Trigger eine neue Funktion zu und konfigurieren Sie ihn für `V1_0` Ereignisse. Diese Trigger-Ereignisse der ersten Version können nur Änderungen an ID-Token verarbeiten.  
Um die Anpassung von Zugriffstoken manuell zu deaktivieren, entfernen Sie Ihren Trigger vor der Token-Generierung und fügen Sie einen neuen Trigger der Version eins hinzu.

**Schutz vor Bedrohungen**  
Um zu einem Tarif ohne Bedrohungsschutz zu wechseln, deaktivieren Sie alle Funktionen im **Bedrohungsschutz-Menü** Ihres Benutzerpools.

**Export von Protokollen**  
Um zu einem Tarif ohne Protokollexport zu wechseln, deaktivieren Sie ihn im **Log-Streaming-Menü** Ihres Benutzerpools. Ihr Benutzerpool generiert keine lokalen oder exportierten Benutzeraktivitätsprotokolle mehr. Sie können auch eine [SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html)API-Anfrage senden, die jede Konfiguration mit einem `EventSource` Wert von `UserActivity` entfernt.

**E-Mail MFA**  
Um zu einem Tarif ohne E-Mail-MFA zu wechseln, rufen Sie das **Anmeldemenü** Ihres Benutzerpools auf. Bearbeiten Sie die **Multi-Faktor-Authentifizierung** und deaktivieren Sie **E-Mail-Nachricht** als eine der verfügbaren **MFA-Methoden**.

# Bewährte Sicherheitsmethoden für Amazon-Cognito-Benutzerpools
<a name="user-pool-security-best-practices"></a>

Auf dieser Seite werden bewährte Sicherheitsmethoden beschrieben, die Sie implementieren können, wenn Sie sich vor häufigen Bedrohungen schützen möchten. Welche Konfiguration Sie wählen, hängt vom Anwendungsfall der jeweiligen Anwendung ab. Wir empfehlen, dass Sie mindestens die geringsten Rechte auf administrative Operationen anwenden und Maßnahmen ergreifen, um Anwendungs- und Benutzergeheimnisse zu schützen. Ein weiterer fortgeschrittener, aber effektiver Schritt, den Sie ergreifen können, besteht darin, das AWS WAF Internet ACLs zu konfigurieren und auf Ihre Benutzerpools anzuwenden.

## Schützen Sie Ihren Benutzerpool auf Netzwerkebene
<a name="user-pool-security-best-practices-network"></a>

AWS WAF Web ACLs kann die Leistung und die Kosten der Authentifizierungsmechanismen schützen, die Sie mit Amazon Cognito entwickeln. Mit Web ACLs können Sie Leitplanken vor API- und verwalteten Anmeldeanfragen implementieren. Das Web ACLs erstellt Filter auf Netzwerk- und Anwendungsebene, die den Traffic unterbrechen können oder ein CAPTCHA erfordern, das auf von Ihnen festgelegten Regeln basiert. Anfragen werden erst dann an Ihre Amazon Cognito Cognito-Ressourcen weitergeleitet, wenn sie die Voraussetzungen in Ihren Web-ACL-Regeln erfüllen. Weitere Informationen finden Sie unter [AWS WAF Web ACLs](user-pool-waf.md).

## Schützen Sie sich vor Missbrauch von SMS-Nachrichten
<a name="user-pool-security-best-practices-sms"></a>

Wenn Sie die öffentliche Registrierung in Ihrem Benutzerpool zulassen, können Sie die Kontoverifizierung mit Codes konfigurieren, die Amazon Cognito in SMS-Textnachrichten sendet. SMS-Nachrichten können mit unerwünschten Aktivitäten in Verbindung gebracht werden und Ihre AWS Rechnung erhöhen. Konfigurieren Sie Ihre Infrastruktur so, dass sie gegen den Versand von SMS-Nachrichten unter Betrugsfällen geschützt ist. Weitere Informationen finden Sie in den folgenden AWS Blog-Beiträgen.
+ [Reduzieren Sie mit Amazon Cognito Cognito-Benutzerpools das Risiko von Betrug bei Benutzeranmeldungen und SMS-Versand](https://aws.amazon.com/blogs/security/reduce-risks-of-user-sign-up-fraud-and-sms-pumping-with-amazon-cognito-user-pools/)
+ [Schutz vor SMS-Pumping: Neue AWS Funktionen zur Bekämpfung von künstlich aufgeblähtem Traffic](https://aws.amazon.com/blogs/messaging-and-targeting/defending-against-sms-pumping-new-aws-features-to-help-combat-artificially-inflated-traffic/)

## Verstehen Sie öffentliche Authentifizierung
<a name="user-pool-security-best-practices-public-operations"></a>

Amazon Cognito Cognito-Benutzerpools verfügen über CIAM-Funktionen (Customer Identity and Access Management), die Anwendungsfälle unterstützen, in denen sich Mitglieder der Öffentlichkeit für ein Benutzerkonto registrieren und auf Ihre Anwendungen zugreifen können. Wenn ein Benutzerpool die Self-Service-Registrierung zulässt, ist er offen für Anfragen nach Benutzerkonten aus dem öffentlichen Internet. Self-Service-Anfragen kommen aus API-Vorgängen wie [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)und und [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)aus Benutzerinteraktionen mit verwalteter Anmeldung. Sie können Benutzerpools konfigurieren, um Missbrauch durch öffentliche Anfragen zu verhindern oder öffentliche Authentifizierungsvorgänge vollständig zu deaktivieren. 

Die folgenden Einstellungen sind einige der Möglichkeiten, wie Sie öffentliche und interne Authentifizierungsanfragen in Ihren Benutzerpools und App-Clients verwalten können.


**Beispiele für Benutzerpooleinstellungen, die sich auf den Zugriff auf öffentliche Benutzerpools auswirken**  

| Einstellung | Verfügbare Optionen | Konfiguriert am | Auswirkung auf die öffentliche Authentifizierung | Konsoleneinstellung | API-Betrieb und Parameter | 
| --- | --- | --- | --- | --- | --- | 
| [Self-Service-Anmeldung](user-pool-settings-admin-create-user-policy.md) | Erlauben Sie Benutzern, sich für ein Konto zu registrieren oder Benutzerkonten als Administrator zu erstellen. | Benutzerpool | Öffentliche Registrierung verhindern | Anmeldung — Self-Service-Anmeldung |  [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AdminCreateUserConfig), [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-AdminCreateUserConfig) `AdminCreateUserConfig` – `AllowAdminCreateUserOnly`  | 
| [Bestätigung durch den Administrator](signing-up-users-in-your-app.md#signing-up-users-in-your-app-and-confirming-them-as-admin) | Senden Sie Bestätigungscodes an neue Benutzer oder fordern Sie Administratoren auf, sie zu bestätigen. | Benutzerpool | Verhindern Sie die Bestätigung der Anmeldung ohne Eingreifen des Administrators | Anmeldung — Cognito-gestützte Überprüfung und Bestätigung |  [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting), [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-AccountRecoverySetting) `AccountRecoverySettings` – `admin_only`  | 
| [Offenlegung durch Benutzer](cognito-user-pool-managing-errors.md) | Senden Sie bei der Anmeldung und beim Zurücksetzen des Passworts die Meldung „Benutzer nicht gefunden“ oder verhindern Sie die Offenlegung. | App-Client | Schützen Sie sich davor, den Anmeldenamen, die E-Mail-Adresse oder die Telefonnummern zu erraten | App-Clients — Vermeiden Sie Fehler bei der Existenz von Benutzern |  [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-PreventUserExistenceErrors), [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-PreventUserExistenceErrors) `PreventUserExistenceErrors`  | 
| [Clientschlüssel](user-pool-settings-client-apps.md#user-pool-settings-client-app-client-types) | Bei der Registrierung, Anmeldung und beim Zurücksetzen des Passworts ist ein geheimer Hash erforderlich oder nicht | App-Client | Schützen Sie sich vor Authentifizierungsanfragen aus nicht autorisierten Quellen | App-Clients — Geheimer Client-Schlüssel |  [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-GenerateSecret) `GenerateSecret`  | 
| [Web ACLs](user-pool-waf.md) | Aktivieren oder deaktivieren Sie eine Netzwerk-Firewall für Authentifizierungsanfragen | Benutzerpool | Beschränken oder verhindern Sie den Zugriff auf der Grundlage von vom Administrator definierten Anforderungsmerkmalen und IP-Adressregeln | AWS WAF— WAF-Einstellungen |  [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#WAF-AssociateWebACL-request-ResourceArn) `ResourceArn`  | 
| [Externer IdP](cognito-user-pools-identity-provider.md) | Erlauben Sie die Anmeldung durch Benutzer eines Drittanbieters IdPs, des Benutzerpool-Verzeichnisses oder beider | App-Client | Schließen Sie [lokale Benutzer](cognito-terms.md#terms-localuser) oder [Verbundbenutzer](cognito-terms.md#terms-federateduser) von der Registrierung und Anmeldung aus. | App-Clients — Identitätsanbieter |  [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-SupportedIdentityProviders), [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-SupportedIdentityProviders) `SupportedIdentityProviders`  | 
| [Autorisierungsserver](cognito-user-pools-assign-domain.md) | Hosten Sie öffentliche Webseiten zur Authentifizierung oder hosten Sie nicht | Benutzerpool | Schalten Sie öffentliche Webseiten aus und lassen Sie nur SDK-basierte Authentifizierung zu | Domain |  [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) Durch die Erstellung einer beliebigen Benutzerpool-Domain werden öffentliche Webseiten verfügbar.  | 
| [Schutz vor Bedrohungen](cognito-user-pool-settings-threat-protection.md) | Aktivieren oder deaktivieren Sie die Überwachung auf Anzeichen bösartiger Aktivitäten oder unsicherer Passwörter | Benutzerpool oder App-Client | Kann die Anmeldung automatisch blockieren oder MFA verlangen, wenn Benutzer Anzeichen einer Gefährdung anzeigen | Bedrohungsschutz — Schutzeinstellungen |  [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) Die Parameter von `SetRiskConfiguration` definieren Ihre Einstellungen für den Schutz vor Bedrohungen.  | 

## Schützen Sie vertrauliche Kunden mit vertraulichen Kundengeheimnissen
<a name="user-pool-security-best-practices-client-secret"></a>

Der geheime Client-Schlüssel ist eine optionale Zeichenfolge, die einem [App-Client](user-pool-settings-client-apps.md) zugeordnet ist. Alle Authentifizierungsanfragen an App-Clients mit Client-Geheimnissen müssen einen [geheimen Hash](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash) enthalten, der aus dem Benutzernamen, der Client-ID und dem geheimen Client-Schlüssel generiert wird. Diejenigen, die das Client-Geheimnis nicht kennen, werden von Anfang an von Ihrer Anwendung ausgeschlossen.

Client-Geheimnisse haben jedoch Einschränkungen. Wenn Sie ein Client-Geheimnis in öffentliche Client-Software einbetten, kann Ihr Client-Geheimnis eingesehen werden. Dadurch haben Sie die Möglichkeit, Benutzer zu erstellen, Anfragen zum Zurücksetzen von Kennwörtern einzureichen und andere Vorgänge in Ihrem App-Client auszuführen. Client-Geheimnisse dürfen nur implementiert werden, wenn eine Anwendung die einzige Entität ist, die Zugriff auf das Geheimnis hat. In der Regel ist dies in serverseitigen vertraulichen Clientanwendungen möglich. Dies gilt auch für [M2M-Anwendungen](cognito-user-pools-define-resource-servers.md), bei denen ein geheimer Client-Schlüssel erforderlich ist. Speichern Sie das Client-Geheimnis in einem verschlüsselten lokalen Speicher oder AWS Secrets Manager. Lassen Sie Ihr Kundengeheimnis niemals im öffentlichen Internet sichtbar sein.

## Schützen Sie andere Geheimnisse
<a name="user-pool-security-best-practices-manage-secrets"></a>

Ihr Authentifizierungssystem mit Amazon Cognito Cognito-Benutzerpools verarbeitet möglicherweise private Daten, Passwörter und AWS Anmeldeinformationen. Im Folgenden finden Sie einige bewährte Methoden für den Umgang mit Geheimnissen, auf die Ihre Anwendung möglicherweise zugreift.

**Passwörter**  
Benutzer geben möglicherweise Kennwörter ein, wenn sie sich bei Ihrer Anwendung anmelden. Amazon Cognito verfügt über Aktualisierungstoken, die Ihre Anwendung verwenden kann, um abgelaufene Benutzersitzungen ohne Aufforderung zur Eingabe eines neuen Kennworts fortzusetzen. Speichern Sie keine Passwörter oder Passwort-Hashes im lokalen Speicher. Entwerfen Sie Ihre Anwendung so, dass Passwörter undurchsichtig behandelt werden und sie nur an Ihren Benutzerpool weitergegeben werden.  
[Implementieren Sie als bewährte Methode die kennwortlose Authentifizierung mit Hauptschlüsseln. WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) Wenn Sie Passwörter implementieren müssen, verwenden Sie den [Secure Remote Password (SRP) -Authentifizierungsablauf](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) und die [Multi-Faktor-Authentifizierung (MFA](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)).

**AWS Anmeldeinformationen**  
Für die Administratorauthentifizierung und für Verwaltungsvorgänge im Benutzerpool ist eine Authentifizierung mit AWS Anmeldeinformationen erforderlich. Um diese Operationen in einer Anwendung zu implementieren, gewähren Sie sicheren Zugriff auf [temporäre AWS Anmeldeinformationen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html). Gewähren Sie den Zugriff auf Anmeldeinformationen nur für Anwendungen, die auf einer Serverkomponente ausgeführt werden, die Sie kontrollieren. Stellen Sie Anwendungen, die AWS Anmeldeinformationen enthalten, nicht auf öffentlichen Versionskontrollsystemen wie. GitHub Verschlüsseln Sie keine AWS Anmeldeinformationen in öffentlichen clientseitigen Anwendungen.

**PKCE-Code-Verifizierer**  
[Proof Key for Code Exchange, oder PKCE,](using-pkce-in-authorization-code.md) ist für OpenID Connect (OIDC) -Autorisierungscode-Erteilungen mit Ihrem Benutzerpool-Autorisierungsserver vorgesehen. Anwendungen teilen die Geheimnisse der Codeverifizierung mit Ihrem Benutzerpool, wenn sie Autorisierungscodes anfordern. Um Autorisierungscodes gegen Token auszutauschen, müssen Kunden bestätigen, dass sie den Code-Verifier kennen. Diese Praxis schützt vor der Ausgabe von Token mit abgefangenen Autorisierungscodes.  
Kunden müssen bei jeder Autorisierungsanfrage einen neuen Zufallscode-Verifier generieren. Die Verwendung eines statischen oder vorhersehbaren Codeverifizierers bedeutet, dass ein Angreifer nur dann den hartcodierten Verifier und den Autorisierungscode abfangen muss. Entwerfen Sie Ihre Anwendung so, dass sie Benutzern keine Werte der Codeverifizierung zugänglich macht.

## Verwaltung des Benutzerpools, geringste Rechte
<a name="user-pool-security-best-practices-least-privilege"></a>

IAM-Richtlinien können die Zugriffsebene definieren, die Principals auf die Verwaltung des Amazon Cognito Cognito-Benutzerpools und die administrativen Authentifizierungsvorgänge haben. Beispiel:
+ Erteilen Sie einem Webserver Berechtigungen für die Authentifizierung mit administrativen API-Vorgängen. 
+ Erteilen Sie einem AWS IAM Identity Center Benutzer, der einen Benutzerpool in Ihrem Unternehmen verwaltet AWS-Konto, Berechtigungen für die Verwaltung und Berichterstattung des Benutzerpools.

Der Grad der Ressourcengranularität in Amazon Cognito ist für IAM-Richtlinienzwecke auf [zwei Ressourcentypen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitoidentity.html#amazoncognitoidentity-resources-for-iam-policies) beschränkt: Benutzerpool und Identitätspool. Beachten Sie, dass Sie keine Berechtigungen zur Verwaltung einzelner App-Clients anwenden können. Konfigurieren Sie Benutzerpools mit dem Wissen, dass die von Ihnen erteilten Berechtigungen für alle App-Clients gelten. Wenn Ihr Unternehmen über mehrere Anwendungsmandanten verfügt und Ihr Sicherheitsmodell eine Trennung der administrativen Zuständigkeiten zwischen den Mandanten erfordert, implementieren Sie eine [Mehrmandantenfähigkeit mit einem Mandanten pro Benutzerpool](bp_user-pool-based-multi-tenancy.md).

Sie können zwar IAM-Richtlinien mit Berechtigungen für Benutzerauthentifizierungsvorgänge wie erstellen`InitiateAuth`, diese Berechtigungen haben jedoch keine Auswirkung. [Öffentliche und mit Tokens autorisierte API-Operationen](authentication-flows-public-server-side.md) unterliegen keinen IAM-Berechtigungen. Von den verfügbaren Benutzerpool-Authentifizierungsvorgängen können Sie nur Berechtigungen für *administrative* serverseitige Operationen wie gewähren. `AdminInitiateAuth`

Sie können die Verwaltungsebenen des Benutzerpools mit Listen mit den geringsten Rechten einschränken. `Action` Die folgende Beispielrichtlinie richtet sich an einen Administrator, der zwar Ressourcenserver IdPs, App-Clients und die Benutzerpooldomäne verwalten kann, jedoch nicht Benutzer oder den Benutzerpool.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UserPoolClientAdministrator",
      "Action": [
        "cognito-idp:CreateIdentityProvider",
        "cognito-idp:CreateManagedLoginBranding",
        "cognito-idp:CreateResourceServer",
        "cognito-idp:CreateUserPoolDomain",
        "cognito-idp:DeleteIdentityProvider",
        "cognito-idp:DeleteResourceServer",
        "cognito-idp:DeleteUserPoolDomain",
        "cognito-idp:DescribeIdentityProvider",
        "cognito-idp:DescribeManagedLoginBranding",
        "cognito-idp:DescribeManagedLoginBrandingByClient",
        "cognito-idp:DescribeResourceServer",
        "cognito-idp:DescribeUserPool",
        "cognito-idp:DescribeUserPoolClient",
        "cognito-idp:DescribeUserPoolDomain",
        "cognito-idp:GetIdentityProviderByIdentifier",
        "cognito-idp:GetUICustomization",
        "cognito-idp:ListIdentityProviders",
        "cognito-idp:ListResourceServers",
        "cognito-idp:ListUserPoolClients",
        "cognito-idp:ListUserPools",
        "cognito-idp:SetUICustomization",
        "cognito-idp:UpdateIdentityProvider",
        "cognito-idp:UpdateManagedLoginBranding",
        "cognito-idp:UpdateResourceServer",
        "cognito-idp:UpdateUserPoolClient",
        "cognito-idp:UpdateUserPoolDomain"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:cognito-idp:us-west-2:123456789012:userpool/us-west-2_EXAMPLE"
    }
  ]
}
```

------

Die folgende Beispielrichtlinie gewährt Benutzer- und Gruppenverwaltung und Authentifizierung für eine serverseitige Anwendung.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UserAdminAuthN",
      "Action": [
        "cognito-idp:AdminAddUserToGroup",
        "cognito-idp:AdminConfirmSignUp",
        "cognito-idp:AdminCreateUser",
        "cognito-idp:AdminDeleteUser",
        "cognito-idp:AdminDeleteUserAttributes",
        "cognito-idp:AdminDisableProviderForUser",
        "cognito-idp:AdminDisableUser",
        "cognito-idp:AdminEnableUser",
        "cognito-idp:AdminForgetDevice",
        "cognito-idp:AdminGetDevice",
        "cognito-idp:AdminGetUser",
        "cognito-idp:AdminInitiateAuth",
        "cognito-idp:AdminLinkProviderForUser",
        "cognito-idp:AdminListDevices",
        "cognito-idp:AdminListGroupsForUser",
        "cognito-idp:AdminListUserAuthEvents",
        "cognito-idp:AdminRemoveUserFromGroup",
        "cognito-idp:AdminResetUserPassword",
        "cognito-idp:AdminRespondToAuthChallenge",
        "cognito-idp:AdminSetUserMFAPreference",
        "cognito-idp:AdminSetUserPassword",
        "cognito-idp:AdminSetUserSettings",
        "cognito-idp:AdminUpdateAuthEventFeedback",
        "cognito-idp:AdminUpdateDeviceStatus",
        "cognito-idp:AdminUpdateUserAttributes",
        "cognito-idp:AdminUserGlobalSignOut",
        "cognito-idp:AssociateSoftwareToken",
        "cognito-idp:ListGroups",
        "cognito-idp:ListUsers",
        "cognito-idp:ListUsersInGroup",
        "cognito-idp:RevokeToken",
        "cognito-idp:UpdateGroup",
        "cognito-idp:VerifySoftwareToken"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:cognito-idp:us-west-2:123456789012:userpool/us-west-2_EXAMPLE"
    }
  ]
}
```

------

## Token sichern und verifizieren
<a name="user-pool-security-best-practices-secure-tokens"></a>

Token können interne Verweise auf Gruppenzugehörigkeit und Benutzerattribute enthalten, die Sie möglicherweise nicht an den Endbenutzer weitergeben möchten. Speichern Sie ID- und Zugriffstoken nicht im lokalen Speicher. Aktualisierungstoken werden mit einem Schlüssel verschlüsselt, auf den nur Ihr Benutzerpool zugreifen kann, und sind für Benutzer und Anwendungen undurchsichtig. [Widerrufen Sie Aktualisierungstoken](token-revocation.md), wenn sich Benutzer abmelden oder wenn Sie feststellen, dass das Fortbestehen einer Benutzersitzung aus Sicherheitsgründen unerwünscht ist.

Verwenden Sie Zugriffstoken, um den Zugriff nur auf Systeme zu autorisieren, die unabhängig überprüfen, ob das Token gültig und nicht abgelaufen ist. Ressourcen zur Überprüfung finden Sie unter [Überprüfen eines JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).

## Ermitteln Sie die Identitätsanbieter, denen Sie vertrauen möchten
<a name="user-pool-security-best-practices-trusted-idps"></a>

Wenn Sie Ihren Benutzerpool mit [SAML](cognito-user-pools-saml-idp.md) - oder [OIDC-Identitätsanbietern](cognito-user-pools-oidc-idp.md) (IdPs) konfigurieren, IdPs können Sie neue Benutzer erstellen, Benutzerattribute festlegen und auf Ihre Anwendungsressourcen zugreifen. SAML- und OIDC-Anbieter werden in der Regel in business-to-business (B2B-) oder Unternehmensszenarien eingesetzt, in denen Sie oder Ihr direkter Kunde die Mitgliedschaft und Konfiguration des Anbieters kontrollieren.

[Soziale Anbieter](cognito-user-pools-social-idp.md) bieten Benutzerkonten für alle Benutzer im Internet an und unterliegen weniger Ihrer Kontrolle als Unternehmensanbieter. Aktivieren Sie Social nur dann IdPs in Ihrem App-Client, wenn Sie bereit sind, öffentlichen Kunden die Anmeldung und den Zugriff auf Ressourcen in Ihrer Anwendung zu ermöglichen.

## Machen Sie sich mit den Auswirkungen von Geltungsbereichen auf den Zugriff auf Benutzerprofile vertraut
<a name="user-pool-security-best-practices-scopes"></a>

In Ihren Authentifizierungsanfragen an den Autorisierungsserver für den Benutzerpool können Sie Bereiche für die Zugriffskontrolle anfordern. Diese Bereiche können Ihren Benutzern Zugriff auf externe Ressourcen gewähren, und sie können Benutzern Zugriff auf ihre eigenen Benutzerprofile gewähren. Konfigurieren Sie Ihre App-Clients so, dass sie die Mindestbereiche unterstützen, die für den Betrieb Ihrer Anwendung erforderlich sind.

Der `aws.cognito.signin.user.admin` Geltungsbereich ist in allen Zugriffstoken enthalten, die durch die SDK-Authentifizierung mit Vorgängen wie [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)ausgegeben werden. Er ist für Self-Service-Operationen mit Benutzerprofilen in Ihrer Anwendung vorgesehen. Sie können diesen Bereich auch von Ihrem Autorisierungsserver anfordern. Dieser Bereich ist für tokenautorisierte Operationen wie und erforderlich. [UpdateUserAttributes[GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) Die Wirkung dieser Operationen wird durch die Lese- und Schreibberechtigungen Ihres App-Clients begrenzt.

Die `phone` Bereiche `openid``profile`,`email`, und autorisieren Anfragen an den Autorisierungsserver in [UserInfo-Endpunkt](userinfo-endpoint.md) Ihrem Benutzerpool. Sie definieren die Attribute, die der Endpunkt zurückgeben kann. Wenn der `openid` Bereich ohne andere Bereiche angefordert wird, gibt er alle verfügbaren Attribute zurück. Wenn Sie jedoch mehr Bereiche in der Anforderung anfordern, wird die Antwort auf die Attribute eingegrenzt, die durch die zusätzlichen Bereiche repräsentiert werden. Der `openid` Bereich gibt auch eine Anfrage für ein ID-Token an. Wenn Sie diesen Bereich in Ihrer Anfrage weglassen[Autorisieren des Endpunkts](authorization-endpoint.md), gibt Amazon Cognito nur ein Zugriffstoken und, falls zutreffend, ein Aktualisierungstoken aus. Weitere Informationen finden Sie unter **OpenID Connect-Bereiche** unter. [App-Client-Bedingungen](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-about)

## Bereinigen Sie die Eingaben für Benutzerattribute
<a name="user-pool-security-best-practices-sanitize-inputs"></a>

[Für Benutzerattribute, die beispielsweise als Übermittlungsmethoden und Benutzernamen verwendet werden können, gelten `email` Formatbeschränkungen.](user-pool-settings-attributes.md#cognito-user-pools-standard-attributes) Andere Attribute können den Datentyp „Zeichenfolge“, „Boolean“ oder „Zahl“ haben. Werte von Zeichenkettenattributen unterstützen eine Vielzahl von Eingaben. Konfigurieren Sie Ihre Anwendung so, dass sie vor Versuchen schützt, unerwünschte Daten in Ihr Benutzerverzeichnis oder die Nachrichten, die Amazon Cognito an Benutzer sendet, zu schreiben. Führen Sie eine clientseitige Validierung der vom Benutzer übermittelten Zeichenkettenattributwerte in Ihrer Anwendung durch, bevor Sie sie an Amazon Cognito senden.

Benutzerpools ordnen Ihrem Benutzerpool Attribute auf der Grundlage einer von IdPs Ihnen angegebenen [Attributzuordnung](cognito-user-pools-specifying-attribute-mapping.md) zu. Ordnen Sie nur sichere und vorhersehbare IdP-Attribute den Zeichenkettenattributen des Benutzerpools zu.

# Authentifizierung mit Amazon Cognito Cognito-Benutzerpools
<a name="authentication"></a>

Amazon Cognito umfasst mehrere Methoden zur Authentifizierung Ihrer Benutzer. Benutzer können sich mit WebAuthn Passwörtern und Hauptschlüsseln anmelden. Amazon Cognito kann ihnen ein Einmalpasswort in einer E-Mail- oder SMS-Nachricht senden. Sie können Lambda-Funktionen implementieren, die Ihre eigene Abfolge von Herausforderungen und Antworten orchestrieren. Dies sind *Authentifizierungsabläufe*. Bei Authentifizierungsabläufen geben Benutzer ein Geheimnis an und Amazon Cognito verifiziert das Geheimnis und gibt dann JSON-Webtoken (JWTs) für Anwendungen zur Verarbeitung mit OIDC-Bibliotheken aus. In diesem Kapitel werden wir darüber sprechen, wie Sie Ihre Benutzerpools und App-Clients für verschiedene Authentifizierungsabläufe in verschiedenen Anwendungsumgebungen konfigurieren. Sie erfahren mehr über die Optionen für die Verwendung der gehosteten Anmeldeseiten von Managed Login und für die Erstellung Ihrer eigenen Logik und Ihres eigenen Frontends in einem AWS SDK.

Alle Benutzerpools, unabhängig davon, ob Sie eine Domain haben oder nicht, können Benutzer in der Benutzerpool-API authentifizieren. Wenn Sie Ihrem Benutzerpool eine Domain hinzufügen, können Sie die [Benutzerpool-Endpunkte](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) verwenden. Die Benutzerpool-API unterstützt eine Vielzahl von Autorisierungsmodellen und Anforderungsabläufen für API-Anforderungen.

Um die Identität von Benutzern zu überprüfen, unterstützt Amazon Cognito Authentifizierungsabläufe, die zusätzlich zu Kennwörtern wie Einmalpasswörtern und Hauptschlüsseln für E-Mail- und SMS-Nachrichten auch Challenge-Typen beinhalten.

**Topics**
+ [Implementieren Sie Authentifizierungsabläufe](#authentication-implement)
+ [Wissenswertes zur Authentifizierung mit Benutzerpools](#authentication-flow-things-to-know)
+ [Ein Beispiel für eine Authentifizierungssitzung](#amazon-cognito-user-pools-authentication-flow)
+ [Konfigurieren Sie Authentifizierungsmethoden für die verwaltete Anmeldung](authentication-flows-selection-managedlogin.md)
+ [Verwalten Sie Authentifizierungsmethoden in AWS SDKs](authentication-flows-selection-sdk.md)
+ [Authentifizierungsabläufe](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Autorisierungsmodelle für die API- und SDK-Authentifizierung](authentication-flows-public-server-side.md)

## Implementieren Sie Authentifizierungsabläufe
<a name="authentication-implement"></a>

Unabhängig davon, ob Sie eine [verwaltete Anmeldung](authentication-flows-selection-managedlogin.md) oder ein [benutzerdefiniertes Anwendungs-Frontend](authentication-flows-selection-sdk.md) mit einem AWS SDK für die Authentifizierung implementieren, müssen Sie Ihren App-Client für die Authentifizierungstypen konfigurieren, die Sie implementieren möchten. Die folgenden Informationen beschreiben die Einrichtung von Authentifizierungsabläufen in Ihren [App-Clients](user-pool-settings-client-apps.md) und Ihrer Anwendung.

------
#### [ App client supported flows ]

Sie können unterstützte Flows für Ihre App-Clients in der Amazon Cognito Cognito-Konsole oder mit der API in einem AWS SDK konfigurieren. Nachdem Sie Ihren App-Client so konfiguriert haben, dass er diese Flows unterstützt, können Sie sie in Ihrer Anwendung bereitstellen.

Das folgende Verfahren konfiguriert die verfügbaren Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito Cognito-Konsole.

**So konfigurieren Sie einen App-Client für Authentifizierungsabläufe (Konsole)**

1. Melden Sie sich an AWS und navigieren Sie zur [Amazon Cognito Cognito-Benutzerpools-Konsole](https://console.aws.amazon.com/cognito/v2/idp). Wählen Sie einen Benutzerpool oder erstellen Sie einen neuen.

1. Wählen Sie in Ihrer Benutzerpool-Konfiguration das Menü **App-Clients** aus. Wählen Sie einen App-Client oder erstellen Sie einen neuen.

1. Wählen Sie unter **App-Client-Informationen** die Option **Bearbeiten** aus.

1. Wählen Sie unter **App-Client-Flows** die Authentifizierungsabläufe aus, die Sie unterstützen möchten.

**So konfigurieren Sie einen App-Client für Authentifizierungsabläufe (API/SDK)**  
Um verfügbare Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito Cognito-API zu konfigurieren, legen Sie den Wert von `ExplicitAuthFlows` in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)OR-Anfrage fest. Im Folgenden finden Sie ein Beispiel, das einem Client ein sicheres Remote-Passwort (SRP) und eine wahlbasierte Authentifizierung bereitstellt.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH",
   "ALLOW_USER_SRP_AUTH
]
```

Wenn Sie vom App-Client unterstützte Flows konfigurieren, können Sie die folgenden Optionen und API-Werte angeben.


**Unterstützung für App-Client-Flows**  

| Authentifizierungsfluss | Kompatibilität | Konsole | API  | 
| --- | --- | --- | --- | 
| [Wahlbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | Serverseitig, clientseitig | Wählen Sie bei der Anmeldung einen Authentifizierungstyp aus | ALLOW\$1USER\$1AUTH | 
| [Melden Sie sich mit dauerhaften Passwörtern an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | Clientseitig | Melden Sie sich mit Benutzername und Passwort an | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) | Serverseitig, clientseitig | Melden Sie sich mit einem sicheren Remote-Passwort (SRP) an | ALLOW\$1USER\$1SRP\$1AUTH | 
| [Tokens aktualisieren](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | Serverseitig, clientseitig | Rufen Sie neue Benutzertoken aus vorhandenen authentifizierten Sitzungen ab | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [Serverseitige Authentifizierung](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | Serverseitig | Melden Sie sich mit serverseitigen Administratoranmeldedaten an | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [Benutzerdefinierte Authentifizierung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Serverseitige und clientseitige maßgeschneiderte Anwendungen. Nicht kompatibel mit verwalteter Anmeldung. | Melden Sie sich mit benutzerdefinierten Authentifizierungsabläufen von Lambda-Triggern an | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

Durch die verwaltete Anmeldung werden Ihre konfigurierten Authentifizierungsoptionen automatisch auf Ihren Anmeldeseiten verfügbar gemacht. Starten Sie in maßgeschneiderten Anwendungen die Authentifizierung mit einer Deklaration des ursprünglichen Ablaufs.
+ Um aus einer Liste von Flow-Optionen für einen Benutzer auszuwählen, deklarieren Sie die [wahlbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) mit dem Flow. `USER_AUTH` [Für diesen Flow stehen Authentifizierungsmethoden zur Verfügung, die in clientbasierten Authentifizierungsabläufen nicht verfügbar sind, z. B. Authentifizierung mit [Passkey und passwortloser](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) Authentifizierung.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ Um Ihren Authentifizierungsablauf im Voraus auszuwählen, deklarieren Sie die [clientbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-client) mit einem beliebigen anderen Ablauf, der in Ihrem App-Client verfügbar ist.

Wenn Sie Benutzer anmelden, muss der Text Ihrer [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)PR-Anforderung einen `AuthFlow` Parameter enthalten.

Wahlbasierte Authentifizierung:

```
"AuthFlow": "USER_AUTH"
```

Client-basierte Authentifizierung mit SRP:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Wissenswertes zur Authentifizierung mit Benutzerpools
<a name="authentication-flow-things-to-know"></a>

Berücksichtigen Sie bei der Gestaltung Ihres Authentifizierungsmodells mit Amazon Cognito Cognito-Benutzerpools die folgenden Informationen.

**Die Authentifizierung erfolgt in der verwalteten Anmeldung und in der gehosteten Benutzeroberfläche**  
Die [verwaltete Anmeldung](cognito-user-pools-managed-login.md) bietet mehr Authentifizierungsoptionen als die klassische gehostete Benutzeroberfläche. Beispielsweise können Benutzer die kennwortlose Authentifizierung und die Authentifizierung mit dem Hauptschlüssel nur bei verwalteter Anmeldung durchführen.

**Benutzerdefinierte Authentifizierungsabläufe sind nur bei der SDK-Authentifizierung verfügbar AWS **  
Sie können keine *benutzerdefinierten Authentifizierungsabläufe* oder eine [benutzerdefinierte Authentifizierung mit Lambda-Triggern](user-pool-lambda-challenge.md), mit verwalteter Anmeldung oder der klassischen gehosteten Benutzeroberfläche durchführen. Die benutzerdefinierte Authentifizierung ist in der [Authentifizierung mit AWS SDKs](authentication-flows-selection-sdk.md) verfügbar.

**Verwaltete Anmeldung für die Anmeldung mit einem externen Identitätsanbieter (IdP)**  
Sie können Benutzer nicht über die [ IdPs[Drittanbieter-Authentifizierung](authentication-flows-selection-sdk.md)](cognito-user-pools-identity-federation.md) mit anmelden. AWS SDKs Sie müssen die verwaltete Anmeldung oder die klassische gehostete Benutzeroberfläche implementieren IdPs, zu der Sie weiterleiten und das resultierende Authentifizierungsobjekt dann mit OIDC-Bibliotheken in Ihrer Anwendung verarbeiten. Weitere Informationen zur verwalteten Anmeldung finden Sie unter. [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md)

**Auswirkung der kennwortlosen Authentifizierung auf andere Benutzerfunktionen**  
Die Aktivierung der kennwortlosen Anmeldung mit [Einmalkennwörtern](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) oder [Hauptschlüsseln](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) in Ihrem Benutzerpool und App-Client wirkt sich auf die Benutzererstellung und Migration aus. Wenn die passwortlose Anmeldung aktiv ist:  

1. Administratoren können Benutzer ohne Passwörter erstellen. Die Standardvorlage für Einladungsnachrichten wurde dahingehend geändert, dass sie den Platzhalter für das `{###}` Passwort nicht mehr enthält. Weitere Informationen finden Sie unter [Erstellen von Benutzerkonten als Administrator](how-to-create-user-accounts.md).

1. Bei SDK-basierten [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)Vorgängen müssen Benutzer bei der Registrierung kein Passwort angeben. Für die verwaltete Anmeldung und die gehostete Benutzeroberfläche ist auf der Anmeldeseite ein Passwort erforderlich, auch wenn die kennwortlose Authentifizierung zulässig ist. Weitere Informationen finden Sie unter [Registrieren und Bestätigen von Benutzerkonten](signing-up-users-in-your-app.md).

1. Aus einer CSV-Datei importierte Benutzer können sich sofort mit passwortlosen Optionen anmelden, ohne dass das Passwort zurückgesetzt werden muss, wenn ihre Attribute eine E-Mail-Adresse oder Telefonnummer für eine verfügbare passwortlose Anmeldeoption enthalten. Weitere Informationen finden Sie unter [Importieren von Benutzern aus einer CSV-Datei in Benutzerpools](cognito-user-pools-using-import-tool.md).

1. Bei der kennwortlosen Authentifizierung wird der Lambda-Trigger für die [Benutzermigration](user-pool-lambda-migrate-user.md) nicht aufgerufen.

1. Benutzer, die sich mit einem Einmalpasswort (OTP) anmelden, können ihrer Sitzung keinen [MFA-Faktor (Multi-Factor Authentication)](user-pool-settings-mfa.md) hinzufügen. Hauptschlüssel mit Benutzerverifizierung können die MFA-Anforderungen erfüllen, wenn sie mit konfiguriert sind. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**Die Partei, auf die der Passkey angewiesen ist, URLs darf nicht auf der Liste der öffentlichen Suffixe stehen**  
Sie können Domainnamen, die Sie besitzen`www.example.com`, z. B. als RP-ID (Relying Party) in Ihrer Hauptschlüsselkonfiguration verwenden. Diese Konfiguration soll maßgeschneiderte Anwendungen unterstützen, die auf Domänen ausgeführt werden, deren Eigentümer Sie sind. Die [öffentliche Suffixliste](https://publicsuffix.org/) (PSL) enthält geschützte Domänen auf hoher Ebene. Amazon Cognito gibt einen Fehler zurück, wenn Sie versuchen, Ihre RP-URL auf eine Domain auf der PSL festzulegen.

**Topics**
+ [Dauer der Authentifizierungssitzung](#authentication-flow-session-duration)
+ [Sperrverhalten bei fehlgeschlagenen Anmeldeversuchen](#authentication-flow-lockout-behavior)

### Dauer der Authentifizierungssitzung
<a name="authentication-flow-session-duration"></a>

Abhängig von den Funktionen Ihres Benutzerpools können Sie am Ende auf mehrere Herausforderungen reagieren`InitiateAuth`, `RespondToAuthChallenge` bevor Ihre App Token von Amazon Cognito abruft. Amazon Cognito fügt in der Antwort auf jede Anforderung eine Sitzungszeichenfolge ein. Wenn Sie Ihre API-Anforderungen zu einem Authentifizierungsfluss kombinieren möchten, fügen Sie die Sitzungszeichenfolge aus der Antwort auf die vorherige Anforderung in jede nachfolgende Anforderung ein. Standardmäßig haben Ihre Benutzer für den Abschluss einer Abfrage drei Minuten Zeit, bevor die Sitzungszeichenfolge abläuft. Wenn Sie diesen Zeitraum anpassen möchten, ändern Sie Ihren App-Client **Authentication flow session duration** (Dauer der Authentifizierungsablaufsitzung). Im folgenden Verfahren wird beschrieben, wie diese Einstellung in Ihrer App-Client-Konfiguration geändert wird.

**Anmerkung**  
Die Einstellungen für die **Dauer der Sitzung zum Authentifizierungsablauf** gelten für die Authentifizierung mit der Amazon-Cognito-Benutzerpool-API. Bei der verwalteten Anmeldung wird die Sitzungsdauer für die Multi-Faktor-Authentifizierung auf 3 Minuten und für Codes zum Zurücksetzen von Passwörtern auf 8 Minuten festgelegt.

------
#### [ Amazon Cognito console ]

**So konfigurieren Sie die Dauer der Authentifizierungsablaufsitzung des App-Clients (AWS-Managementkonsole)**

1. Wählen Sie auf der Registerkarte **App integration** (App-Integration) in Ihrem Benutzerpool den Namen Ihres App-Clients aus dem Container **App clients and analytics** (App-Clients und Analytik) aus.

1. Wählen Sie **Bearbeiten** im Container **App-Client-Informationen** aus.

1. Ändern Sie den Wert für **Sitzungsdauer des Authentifizierungsflusses** auf die gewünschte Gültigkeitsdauer in Minuten für SMS- und E-Mail-MFA-Codes. Damit ändert sich auch die Zeit, die einem Benutzer zur Verfügung steht, um eine Authentifizierungsabfrage in Ihrem App-Client abzuschließen.

1. Wählen Sie **Änderungen speichern ** aus.

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

**So konfigurieren Sie die Dauer der Authentifizierungsablaufsitzung (Amazon-Cognito-API)**

1. Bereiten Sie eine `UpdateUserPoolClient`-Anfrage mit Ihren vorhandenen Benutzerpool-Einstellungen aufgrund einer `DescribeUserPoolClient`-Anfrage vor. Ihre `UpdateUserPoolClient`-Anfrage muss alle vorhandenen App-Client-Eigenschaften enthalten.

1. Ändern Sie den `AuthSessionValidity`-Wert auf die Gültigkeitsdauer (in Minuten), die Sie für SMS-MFA-Codes wünschen. Damit ändert sich auch die Zeit, die einem Benutzer zur Verfügung steht, um eine Authentifizierungsabfrage in Ihrem App-Client abzuschließen.

------

Weitere Informationen zu App-Clients finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).

### Sperrverhalten bei fehlgeschlagenen Anmeldeversuchen
<a name="authentication-flow-lockout-behavior"></a>

Nach fünf fehlgeschlagenen Anmeldeversuchen mit einem Benutzerkennwort, unabhängig davon, ob diese mit nicht authentifizierten oder IAM-autorisierten API-Vorgängen angefordert wurden, sperrt Amazon Cognito Ihren Benutzer für eine Sekunde. Die Sperrdauer verdoppelt sich dann nach jedem weiteren fehlgeschlagenen Versuch bis zu einer maximalen Dauer von ca. 15 Minuten.

Anmeldeversuche während einer Sperrperiode führen zu einer Ausnahme `Password attempts exceeded` und wirken sich nicht auf die Dauer nachfolgender Sperrperioden aus. Bei einer kumulativen Anzahl fehlgeschlagener Anmeldeversuche *n*, Ausnahmen `Password attempts exceeded` nicht eingeschlossen, sperrt Amazon Cognito Ihren Benutzer für *2^(n-5)* Sekunden. Um die Sperre zurückzusetzen (*n=0*), muss sich Ihr Benutzer danach entweder erfolgreich anmelden oder darf 15 Minuten lang keine Anmeldeversuche unternehmen. Änderungen an diesem Verhalten sind vorbehalten. Dieses Verhalten gilt nicht für benutzerdefinierte Challenges, es sei denn, diese führen auch eine passwortbasierte Authentifizierung durch.

## Ein Beispiel für eine Authentifizierungssitzung
<a name="amazon-cognito-user-pools-authentication-flow"></a>

Das folgende Diagramm und die folgende step-by-step Anleitung veranschaulichen ein typisches Szenario, in dem sich ein Benutzer bei einer Anwendung anmeldet. In der Beispielanwendung stehen einem Benutzer mehrere Anmeldeoptionen zur Verfügung. Sie wählen eine aus, indem sie ihre Anmeldeinformationen eingeben, einen zusätzlichen Authentifizierungsfaktor angeben und sich anmelden.

![\[Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn mit einem AWS SDK anmeldet.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/authentication-api-userauth.png)


Stellen Sie sich eine Anwendung mit einer Anmeldeseite vor, auf der sich Benutzer mit einem Benutzernamen und einem Passwort anmelden, in einer E-Mail-Nachricht einen Einmalcode anfordern oder eine Fingerabdruckoption wählen können.

1. **Anmeldeaufforderung**: Ihre Anwendung zeigt einen Startbildschirm mit einer *Anmeldeschaltfläche*.

1. **Anmeldung anfordern**: Der Benutzer wählt *Anmelden* aus. Aus einem Cookie oder einem Cache ruft Ihre Anwendung ihren Benutzernamen ab oder fordert sie auf, ihn einzugeben.

1. **Anforderungsoptionen**: Ihre Anwendung fordert die Anmeldeoptionen des Benutzers mit einer `InitiateAuth` API-Anfrage im `USER_AUTH` Flow an, in der die verfügbaren Anmeldemethoden für den Benutzer angefordert werden.

1. **Anmeldeoptionen senden**: Amazon Cognito antwortet mit `PASSWORD``EMAIL_OTP`, und. `WEB_AUTHN` Die Antwort enthält eine Sitzungs-ID, die Sie in der nächsten Antwort erneut abspielen können.

1. **Anzeigeoptionen**: Ihre Anwendung zeigt Benutzeroberflächenelemente an, mit denen der Benutzer seinen Benutzernamen und sein Passwort eingeben, einen Einmalcode abrufen oder seinen Fingerabdruck scannen kann.

1. **Wählen Sie option/Enter Anmeldeinformationen**: Der Benutzer gibt seinen Benutzernamen und sein Passwort ein.

1. **Authentifizierung einleiten**: Ihre Anwendung stellt die Anmeldeinformationen des Benutzers mit einer `RespondToAuthChallenge` API-Anfrage zur Verfügung, die die Anmeldung mit Benutzername/Passwort bestätigt und den Benutzernamen und das Passwort bereitstellt.

1. **Anmeldeinformationen überprüfen**: Amazon Cognito bestätigt die Anmeldeinformationen des Benutzers.

1. **Zusätzliche Herausforderung**: Der Benutzer verfügt über eine Multi-Faktor-Authentifizierung, die mit einer Authenticator-App konfiguriert ist. Amazon Cognito gibt eine `SOFTWARE_TOKEN_MFA` Herausforderung zurück.

1. **Aufforderung zur Aufforderung**: In Ihrer Anwendung wird ein Formular angezeigt, in dem ein zeitbasiertes Einmalkennwort (TOTP) von der Authenticator-App des Benutzers angefordert wird.

1. **Herausforderung beantworten**: Der Benutzer reicht das TOTP ein.

1. **Auf die Herausforderung antworten**: In einer anderen `RespondToAuthChallenge` Anfrage stellt Ihre Anwendung das TOTP des Benutzers bereit.

1. **Challenge-Antwort validieren**: Amazon Cognito bestätigt den Code des Benutzers und stellt fest, dass Ihr Benutzerpool so konfiguriert ist, dass er keine zusätzlichen Herausforderungen an den aktuellen Benutzer ausgibt.

1. **Token ausgeben**: Amazon Cognito gibt ID-, Zugriffs- und Aktualisierungs-JSON-Webtoken (JWTs) zurück. Die Erstauthentifizierung des Benutzers ist abgeschlossen.

1. **Token speichern**: Ihre Anwendung speichert die Token des Benutzers im Cache, sodass sie auf Benutzerdaten verweisen, den Zugriff auf Ressourcen autorisieren und Token aktualisieren kann, wenn sie ablaufen.

1. **Autorisierte Inhalte rendern**: Ihre Anwendung bestimmt anhand ihrer Identität und Rollen den Zugriff des Benutzers auf Ressourcen und stellt Anwendungsinhalte bereit.

1. **Zugriff auf Inhalte**: Der Benutzer ist angemeldet und beginnt, die Anwendung zu verwenden.

1. **Inhalt mit abgelaufenem Token anfordern**: Später fordert der Benutzer eine Ressource an, für die eine Autorisierung erforderlich ist. Das zwischengespeicherte Token des Benutzers ist abgelaufen.

1. **Aktualisierungstoken**: Ihre Anwendung stellt eine `InitiateAuth` Anfrage mit dem gespeicherten Aktualisierungstoken des Benutzers.

1. **Token ausgeben**: Amazon Cognito gibt eine neue ID und einen neuen Zugriff JWTs zurück. Die Sitzung des Benutzers wird ohne zusätzliche Aufforderung zur Eingabe von Anmeldeinformationen sicher aktualisiert.

Sie können [AWS Lambda Trigger](cognito-user-pools-working-with-lambda-triggers.md) verwenden, um die Art und Weise, wie sich Benutzer authentifizieren, anzupassen. Diese Auslöser geben ihre eigenen Eingabeaufforderungen im Rahmen des Authentifizierungsablaufs aus und überprüfen sie.

Sie können auch den Admin-Authentifizierungsablauf für sichere Backend-Server verwenden. Sie können den [Authentifizierungsablauf für die Benutzermigration](cognito-user-pools-using-import-tool.md) verwenden, um die Benutzermigration zu ermöglichen, ohne dass Ihre Benutzer ihre Passwörter zurücksetzen müssen.

# Konfigurieren Sie Authentifizierungsmethoden für die verwaltete Anmeldung
<a name="authentication-flows-selection-managedlogin"></a>

Sie können [verwaltete Anmeldeseiten](cognito-user-pools-managed-login.md), ein Web-Frontend für die Benutzerpoolauthentifizierung, aufrufen, wenn Sie möchten, dass sich Benutzer anmelden, abmelden oder ihr Passwort zurücksetzen. In diesem Modell importiert Ihre Anwendung OIDC-Bibliotheken, um browserbasierte Authentifizierungsversuche mit vom Benutzerpool verwalteten Anmeldeseiten zu verarbeiten. Die Authentifizierungsformen, die Ihren Benutzern zur Verfügung stehen, hängen von der Konfiguration Ihres Benutzerpools und Ihres App-Clients ab. Implementieren Sie den `ALLOW_USER_AUTH` Ablauf in Ihrem App-Client, und Amazon Cognito fordert Benutzer auf, eine Anmeldemethode aus den verfügbaren Optionen auszuwählen. Implementieren `ALLOW_USER_PASSWORD_AUTH` und weisen Sie einen SAML-Anbieter zu, und Ihre Anmeldeseiten bieten Benutzern die Möglichkeit, ihren Benutzernamen und ihr Passwort einzugeben oder sich mit ihrem IdP zu verbinden.

Mit der Amazon Cognito Cognito-Benutzerpools-Konsole können Sie mit der Einrichtung der verwalteten Anmeldeauthentifizierung für Ihre Anwendung beginnen. Wenn Sie einen neuen Benutzerpool erstellen, geben Sie die Plattform an, für die Sie entwickeln. In der Konsole finden Sie Beispiele für die Implementierung von OIDC und OAuth Bibliotheken mit Startcode zur Implementierung von Anmelde- und Abmeldeabläufen. Sie können eine verwaltete Anmeldung mit vielen OIDC-Implementierungen von Relying-Partys erstellen. Wir empfehlen Ihnen, wenn möglich mit [zertifizierten OIDC-Rely-Party-Bibliotheken](https://openid.net/developers/certified-openid-connect-implementations/) zu arbeiten. Weitere Informationen finden Sie unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).

In der Regel überprüfen OIDC-Relying Party Libraries regelmäßig den `.well-known/openid-configuration` Endpunkt Ihres Benutzerpools, um den Emittenten URLs wie den Token-Endpunkt und den Autorisierungsendpunkt zu ermitteln. Es hat sich bewährt, dieses automatische Erkennungsverhalten dort zu implementieren, wo Sie die Wahl haben. Die manuelle Konfiguration von Emittenten-Endpunkten kann zu Fehlern führen. Sie könnten beispielsweise Ihre Benutzerpool-Domäne ändern. Der Pfad zu `openid-configuration` ist nicht mit Ihrer Benutzerpool-Domain verknüpft, sodass Anwendungen, die Dienstendpunkte automatisch erkennen, Ihre Domainänderung automatisch übernehmen.

## Benutzerpool-Einstellungen für die verwaltete Anmeldung
<a name="authentication-flows-selection-managedlogin-settings"></a>

Möglicherweise möchten Sie die Anmeldung bei mehreren Anbietern für Ihre Anwendung zulassen, oder Sie möchten Amazon Cognito als unabhängiges Benutzerverzeichnis verwenden. Möglicherweise möchten Sie auch Benutzerattribute sammeln, MFA einrichten und danach fragen oder E-Mail-Adressen als Benutzernamen benötigen. Sie können die Felder in der verwalteten Anmeldung und in der gehosteten Benutzeroberfläche nicht direkt bearbeiten. Stattdessen legt die Konfiguration Ihres Benutzerpools automatisch fest, wie die verwalteten Login-Authentifizierungsabläufe gehandhabt werden.

Die folgenden Konfigurationselemente für den Benutzerpool bestimmen die Authentifizierungsmethoden, die Amazon Cognito Benutzern in der verwalteten Anmeldung und in der gehosteten Benutzeroberfläche anbietet.

------
#### [ User pool options (Sign-in menu) ]

Die folgenden Optionen befinden sich im **Anmeldemenü** eines Benutzerpools in der Amazon Cognito Cognito-Konsole.

**Anmeldeoptionen für den Cognito-Benutzerpool**  
Hat Optionen für Benutzernamen. Ihre verwalteten Anmelde- und gehosteten Benutzeroberflächenseiten akzeptieren nur Benutzernamen in den von Ihnen ausgewählten Formaten. Wenn Sie beispielsweise einen Benutzerpool mit **E-Mail** als einziger Anmeldeoption einrichten, akzeptieren Ihre verwalteten Anmeldeseiten nur Benutzernamen in einem E-Mail-Format.

**Erforderliche Attribute**  
Wenn Sie in Ihrem Benutzerpool ein Attribut nach Bedarf festlegen, fordert die verwaltete Anmeldung die Benutzer bei der Registrierung zur Eingabe eines Werts für dieses Attribut auf.

**Optionen für die wahlbasierte Anmeldung**  
Enthält Einstellungen für Authentifizierungsmethoden in[Wahlbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). [Hier können Sie Authentifizierungsmethoden wie [Passkey und passwortlos](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) ein- oder ausschalten.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) **Diese Methoden sind nur für Benutzerpools mit [verwalteten Anmeldedomänen](managed-login-branding.md) und [Funktionsplänen](cognito-sign-in-feature-plans.md) ab der Lite-Stufe verfügbar.**

**Multifaktor-Authentifizierung**  
Die verwaltete Anmeldung und die gehostete Benutzeroberfläche übernehmen die Registrierungs- und Authentifizierungsvorgänge für [MFA](user-pool-settings-mfa.md). Wenn MFA in Ihrem Benutzerpool erforderlich ist, werden Benutzer auf Ihren Anmeldeseiten automatisch aufgefordert, ihren zusätzlichen Faktor einzurichten. Außerdem fordern sie Benutzer mit einer MFA-Konfiguration auf, die Authentifizierung mit einem MFA-Code abzuschließen. Wenn MFA in Ihrem Benutzerpool deaktiviert oder optional ist, werden Sie auf Ihren Anmeldeseiten nicht aufgefordert, MFA einzurichten.

**Wiederherstellung des Benutzerkontos**  
Die [Self-Service-Kontowiederherstellungseinstellung]() Ihres Benutzerpools bestimmt, ob auf Ihren Anmeldeseiten ein Link angezeigt wird, über den Benutzer ihr Passwort zurücksetzen können.

------
#### [ User pool options (Domain menu) ]

Die folgenden Optionen befinden sich im **Domain-Menü** eines Benutzerpools in der Amazon Cognito Cognito-Konsole.

**Domain**  
Ihre Wahl einer Benutzerpool-Domain legt den Pfad für den Link fest, den Benutzer öffnen, wenn Sie ihre Browser zur Authentifizierung aufrufen.

**Version mit Markenkennzeichnung**  
Ihre Wahl einer Branding-Version bestimmt, ob in Ihrer Benutzerpool-Domain die verwaltete Anmeldung oder die gehostete Benutzeroberfläche angezeigt wird.

------
#### [ User pool options (Social and external providers menu) ]

Die folgende Option befindet sich im Menü **Soziale Netzwerke und externe Anbieter** eines Benutzerpools in der Amazon Cognito Cognito-Konsole.

**Anbieter**  
Die Identitätsanbieter (IdPs), die Sie Ihrem Benutzerpool hinzufügen, können für jeden App-Client im Benutzerpool aktiv oder inaktiv bleiben.

------
#### [ App client options ]

Die folgenden Optionen befinden sich im **App-Clients-Menü** eines Benutzerpools in der Amazon Cognito Cognito-Konsole. Um diese Optionen zu überprüfen, wählen Sie einen App-Client aus der Liste aus.

**Kurzanleitung zur Einrichtung**  
Die Kurzanleitung zur Einrichtung enthält Codebeispiele für eine Vielzahl von Entwicklerumgebungen. Sie enthalten die Bibliotheken, die für die Integration der verwalteten Anmeldeauthentifizierung in Ihre Anwendung erforderlich sind.

**Informationen zum App-Client**  
Bearbeiten Sie diese Konfiguration, um sie der Anwendung IdPs zuzuweisen, die durch den aktuellen App-Client repräsentiert wird. Auf den verwalteten Anmeldeseiten zeigt Amazon Cognito Auswahlmöglichkeiten für Benutzer an. Diese Auswahlmöglichkeiten werden anhand der zugewiesenen Methoden und des IdP bestimmt. Wenn Sie beispielsweise einen SAML 2.0-IdP mit einem Namen `MySAML` und einem lokalen Benutzerpool-Login zuweisen, werden auf Ihren verwalteten Anmeldeseiten Aufforderungen zur Authentifizierungsmethode und eine Schaltfläche für angezeigt. `MySAML`

**Einstellungen für die Authentifizierung**  
Bearbeiten Sie diese Konfiguration, um Authentifizierungsmethoden für Ihre Anwendung festzulegen. Auf den verwalteten Anmeldeseiten zeigt Amazon Cognito Auswahlmöglichkeiten für Benutzer an. Diese Auswahlmöglichkeiten hängen von der Verfügbarkeit des Benutzerpools als IdP und von den Methoden ab, die Sie zuweisen. Wenn Sie beispielsweise eine wahlbasierte `ALLOW_USER_AUTH` Authentifizierung zuweisen, werden auf Ihren verwalteten Anmeldeseiten verfügbare Optionen wie die Eingabe einer E-Mail-Adresse und die Anmeldung mit einem Hauptschlüssel angezeigt. Auf verwalteten Anmeldeseiten werden auch Schaltflächen für die zugewiesenen Benutzer angezeigt. IdPs

**Anmeldeseiten**  
Legen Sie mit den auf dieser Registerkarte verfügbaren Optionen den visuellen Effekt Ihrer verwalteten Anmeldeseiten oder der gehosteten benutzerinteraktiven Benutzeroberflächen fest. Weitere Informationen finden Sie unter [Branding auf verwaltete Anmeldeseiten anwenden](managed-login-branding.md).

------

# Verwalten Sie Authentifizierungsmethoden in AWS SDKs
<a name="authentication-flows-selection-sdk"></a>

*Benutzer in Amazon Cognito Cognito-Benutzerpools können sich mit einer Vielzahl von Optionen oder Faktoren für die Erstanmeldung anmelden.* Bei einigen Faktoren können Benutzer anschließend eine Multi-Faktor-Authentifizierung (MFA) durchführen. Zu diesen ersten Faktoren gehören Benutzername und Passwort, Einmalpasswort, Hauptschlüssel und benutzerdefinierte Authentifizierung. Weitere Informationen finden Sie unter [Authentifizierungsabläufe](amazon-cognito-user-pools-authentication-flow-methods.md). Wenn Ihre Anwendung über integrierte Benutzeroberflächenkomponenten verfügt und ein AWS SDK-Modul importiert, müssen Sie eine Anwendungslogik für die Authentifizierung erstellen. Sie müssen eine von zwei Hauptmethoden und aus dieser Methode die Authentifizierungsmechanismen auswählen, die Sie implementieren möchten.

Sie können eine *clientbasierte Authentifizierung* implementieren, bei der Ihre Anwendung oder Ihr Client den Authentifizierungstyp im Voraus deklariert. Ihre andere Option ist die *wahlbasierte Authentifizierung*, bei der Ihre App einen Benutzernamen erfasst und die verfügbaren Authentifizierungstypen für Benutzer anfordert. Sie können diese Modelle je nach Ihren Anforderungen zusammen in derselben Anwendung oder aufgeteilt auf mehrere App-Clients implementieren. Jede Methode verfügt über einzigartige Funktionen, z. B. benutzerdefinierte Authentifizierung bei clientbasierter Authentifizierung und kennwortlose Authentifizierung bei wahlbasierter Authentifizierung.

In maßgeschneiderten Anwendungen, die die Authentifizierung mithilfe der AWS SDK-Implementierung der Benutzerpool-API durchführen, müssen Sie Ihre API-Anfragen so strukturieren, dass sie der Benutzerpoolkonfiguration, der App-Client-Konfiguration und den clientseitigen Einstellungen entsprechen. Eine `InitiateAuth` Sitzung, die mit einem of beginnt, beginnt mit `AuthFlow` der wahlbasierten Authentifizierung`USER_AUTH`. Amazon Cognito antwortet auf Ihre API mit der Aufforderung, entweder eine bevorzugte Authentifizierungsmethode oder eine Liste von Auswahlmöglichkeiten auszuwählen. Eine Sitzung, die mit oder beginnt, `CUSTOM_AUTH` geht direkt `AuthFlow` zur benutzerdefinierten Authentifizierung mit Lambda-Triggern über.

Einige Authentifizierungsmethoden sind auf einen der beiden Flow-Typen festgelegt, und einige Methoden sind in beiden verfügbar.

**Topics**
+ [Wahlbasierte Authentifizierung](#authentication-flows-selection-choice)
+ [Client-basierte Authentifizierung](#authentication-flows-selection-client)

## Wahlbasierte Authentifizierung
<a name="authentication-flows-selection-choice"></a>

Ihre Anwendung kann bei der wahlbasierten Authentifizierung die folgenden Authentifizierungsmethoden anfordern. Deklarieren Sie diese Optionen im `PREFERRED_CHALLENGE` Parameter von [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)oder [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters)oder im `ChallengeName` Parameter von [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)oder. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName)

1. `EMAIL_OTP` und `SMS_OTP`

   [Passwortlose Anmeldung mit Einmalpasswörtern](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [Passwortlose Anmeldung mit Passkeys WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [Melden Sie sich mit dauerhaften Passwörtern an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA nach der Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

Informationen zu diesen Optionen in ihrem API-Kontext finden Sie `ChallengeName` unter [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

Bei der wahlbasierten Anmeldung wird als Antwort auf Ihre erste Anfrage eine Aufforderung ausgegeben. Bei dieser Aufforderung wird entweder überprüft, ob eine angeforderte Option verfügbar ist, oder es wird eine Liste der verfügbaren Optionen bereitgestellt. Ihre Anwendung kann diese Optionen Benutzern anzeigen, die dann Anmeldeinformationen für ihre bevorzugte Anmeldemethode eingeben und mit der Authentifizierung bei Challenge-Antworten fortfahren.

In Ihrem Authentifizierungsablauf stehen Ihnen die folgenden auswahlbasierten Optionen zur Verfügung. Alle Anfragen dieses Typs erfordern, dass Ihre App zuerst einen Benutzernamen erfasst oder ihn aus einem Cache abruft.

1. `USERNAME`Nur Optionen mit `AuthParameters` oder anfordern. Amazon Cognito gibt eine `SELECT_CHALLENGE` Herausforderung zurück. Von dort aus kann Ihre Anwendung den Benutzer auffordern, eine Herausforderung auszuwählen und diese Antwort an Ihren Benutzerpool zurückzugeben.

1. Fordere eine bevorzugte Herausforderung mit `AuthParameters` von `PREFERRED_CHALLENGE` und den Parametern deiner bevorzugten Herausforderung an, falls vorhanden. Wenn Sie beispielsweise ein `PREFERRED_CHALLENGE` of anfordern`PASSWORD_SRP`, müssen Sie auch angeben`SRP_A`. Wenn Ihr Benutzer, Ihr Benutzerpool und Ihr App-Client alle für die bevorzugte Herausforderung konfiguriert sind, reagiert Amazon Cognito mit dem nächsten Schritt in dieser Herausforderung, z. B. `PASSWORD_VERIFIER` im `PASSWORD_SRP` Flow oder [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)in den `EMAIL_OTP` `SMS_OTP` and-Flows. Wenn die bevorzugte Herausforderung nicht verfügbar ist, antwortet Amazon Cognito mit `SELECT_CHALLENGE` einer Liste verfügbarer Herausforderungen.

1. Melden Sie die Benutzer zuerst an und fordern Sie dann ihre bevorzugten Authentifizierungsoptionen an. Eine [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)Anfrage mit dem Zugriffstoken eines angemeldeten Benutzers gibt seine verfügbaren auswahlbasierten Authentifizierungsfaktoren und seine MFA-Einstellungen zurück. Mit dieser Option kann sich ein Benutzer zuerst mit Benutzername und Passwort anmelden und dann eine andere Form der Authentifizierung aktivieren. Sie können diesen Vorgang auch verwenden, um zusätzliche Optionen für einen Benutzer zu überprüfen, der sich mit einer bevorzugten Herausforderung angemeldet hat.

Um [Ihren App-Client für die wahlbasierte Authentifizierung zu konfigurieren](authentication.md#authentication-implement), fügen Sie weitere Informationen `ALLOW_USER_AUTH` zu den zulässigen Authentifizierungsabläufen hinzu. Sie müssen auch die auswahlbasierten Faktoren auswählen, die Sie in Ihrer Benutzerpool-Konfiguration zulassen möchten. Der folgende Prozess veranschaulicht, wie Sie wahlbasierte Authentifizierungsfaktoren auswählen.

------
#### [ Amazon Cognito console ]

**So konfigurieren Sie wahlbasierte Authentifizierungsoptionen in einem Benutzerpool**

1. Melden Sie sich an AWS und navigieren Sie zur [Amazon Cognito Cognito-Benutzerpools-Konsole](https://console.aws.amazon.com/cognito/v2/idp). Wählen Sie einen Benutzerpool oder erstellen Sie einen neuen.

1. Wählen Sie in Ihrer Benutzerpool-Konfiguration das **Anmelde-Menü** aus. **Suchen Sie nach **Optionen für die wahlbasierte Anmeldung und wählen** Sie Bearbeiten.**

1. Die Option **Passwort** ist immer verfügbar. Dies beinhaltet die `PASSWORD_SRP` Flüsse `PASSWORD` und. Wählen Sie die **zusätzlichen Optionen** aus, die Sie zu den Optionen Ihrer Benutzer hinzufügen möchten. Sie können **Hauptschlüssel für`WEB_AUTHN`, Einmalpasswort** **für `EMAIL_OTP` E-Mail-Nachrichten und Einmalkennwort** **für `SMS_OTP` SMS-Nachrichten** hinzufügen.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ API/SDK ]

Im folgenden Teil [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)Anforderungstext werden alle verfügbaren Optionen für die wahlbasierte Authentifizierung konfiguriert.

```
"Policies": {
    "SignInPolicy": {
        "AllowedFirstAuthFactors": [
            "PASSWORD",
            "WEB_AUTHN",
            "EMAIL_OTP",
            "SMS_OTP"
        ]
    }
},
```

------

## Client-basierte Authentifizierung
<a name="authentication-flows-selection-client"></a>

Die clientbasierte Authentifizierung unterstützt die folgenden Authentifizierungsabläufe. Deklarieren Sie diese Optionen im `AuthFlow` Parameter von [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)oder [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow).

1. `USER_PASSWORD_AUTH` und `ADMIN_USER_PASSWORD_AUTH`

   [Melden Sie sich mit dauerhaften Passwörtern an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [MFA nach der Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Dieser Authentifizierungsablauf entspricht `PASSWORD` der wahlbasierten Authentifizierung.

1. `USER_SRP_AUTH`

   [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA nach der Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Dieser Authentifizierungsablauf entspricht der wahlbasierten `PASSWORD_SRP` Authentifizierung.

1. `REFRESH_TOKEN_AUTH`

   [Tokens aktualisieren](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

   Dieser Authentifizierungsablauf ist nur bei der clientbasierten Authentifizierung verfügbar.

1. `CUSTOM_AUTH`

   [Benutzerdefinierte Authentifizierung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   Dieser Authentifizierungsablauf ist nur bei der clientbasierten Authentifizierung verfügbar.

Bei der clientbasierten Authentifizierung geht Amazon Cognito davon aus, dass Sie festgelegt haben, wie sich Ihr Benutzer authentifizieren möchte, bevor er mit den Authentifizierungsabläufen beginnt. Die Logik zur Bestimmung des Anmeldefaktors, den ein Benutzer angeben möchte, muss anhand von Standardeinstellungen oder benutzerdefinierten Eingabeaufforderungen festgelegt und dann in der ersten Anfrage an Ihren Benutzerpool deklariert werden. Die `InitiateAuth` Anfrage deklariert beispielsweise eine Anmeldung`AuthFlow`, die direkt einer der aufgelisteten Optionen entspricht. `USER_SRP_AUTH` Mit dieser Deklaration enthält die Anforderung auch die Parameter für den Beginn der Authentifizierung, z. B. `USERNAME``SECRET_HASH`, und. `SRP_A` Amazon Cognito könnte auf diese Anfrage mit zusätzlichen Herausforderungen reagieren, z. B. `PASSWORD_VERIFIER` für SRP oder `SOFTWARE_TOKEN_MFA` für die Kennwortanmeldung mit TOTP MFA.

Um [Ihren App-Client für die clientbasierte Authentifizierung zu konfigurieren](authentication.md#authentication-implement), fügen Sie alle anderen Authentifizierungsabläufe als `ALLOW_USER_AUTH` die zulässigen Authentifizierungsabläufe hinzu. Beispiele sind `ALLOW_USER_PASSWORD_AUTH``ALLOW_CUSTOM_AUTH`,`ALLOW_REFRESH_TOKEN_AUTH`. Um clientbasierte Authentifizierungsabläufe zuzulassen, ist keine zusätzliche Benutzerpoolkonfiguration erforderlich.

# Authentifizierungsabläufe
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

Der Prozess der Authentifizierung mit Amazon Cognito Cognito-Benutzerpools lässt sich am besten als ein *Ablauf* beschreiben, bei dem Benutzer eine erste Wahl treffen, Anmeldeinformationen einreichen und auf zusätzliche Herausforderungen reagieren. Wenn Sie die verwaltete Anmeldeauthentifizierung in Ihrer Anwendung implementieren, verwaltet Amazon Cognito den Ablauf dieser Eingabeaufforderungen und Herausforderungen. Wenn Sie Flows mit einem AWS SDK in Ihrem Anwendungs-Backend implementieren, müssen Sie die Logik der Anfragen erstellen, Benutzer zur Eingabe auffordern und auf Herausforderungen reagieren.

Als Anwendungsadministrator bestimmen Ihre Benutzereigenschaften, Sicherheitsanforderungen und Ihr Autorisierungsmodell, wie Sie Benutzern die Anmeldung gestatten möchten. Stellen Sie sich die folgenden Fragen.
+ Möchte ich Benutzern erlauben, sich mit Anmeldeinformationen von [anderen Identitätsanbietern anzumelden (IdPs)](#amazon-cognito-user-pools-authentication-flow-methods-federated)?
+ Reichen ein [Benutzername und ein Passwort](#amazon-cognito-user-pools-authentication-flow-methods-password) als Identitätsnachweis aus?
+ Könnten meine Authentifizierungsanfragen zur Authentifizierung mit Benutzername/Passwort abgefangen werden? Möchte ich, dass meine Anwendung Passwörter überträgt oder die [Authentifizierung mithilfe von Hashes und Salts aushandelt](#amazon-cognito-user-pools-authentication-flow-methods-srp)?
+ Möchte ich es Benutzern ermöglichen, die Passworteingabe zu überspringen und [ein Einmalpasswort zu erhalten](#amazon-cognito-user-pools-authentication-flow-methods-passwordless), mit dem sie sich anmelden?
+ Möchte ich Benutzern erlauben, sich mit einem [Fingerabdruck, einem Gesicht oder einem Hardware-Sicherheitsschlüssel](#amazon-cognito-user-pools-authentication-flow-methods-passkey) anzumelden?
+ Wann möchte ich eine [Multi-Faktor-Authentifizierung (MFA)](#amazon-cognito-user-pools-authentication-flow-methods-mfa) verlangen, wenn überhaupt?
+ Möchte ich [Benutzersitzungen beibehalten, ohne erneut](#amazon-cognito-user-pools-authentication-flow-methods-refresh) zur Eingabe von Anmeldeinformationen aufzufordern?
+ Möchte ich [mein Autorisierungsmodell über die integrierten Funktionen von Amazon Cognito hinaus erweitern?](#amazon-cognito-user-pools-authentication-flow-methods-custom)

Wenn Sie die Antworten auf diese Fragen haben, können Sie lernen, wie Sie die entsprechenden Funktionen aktivieren und sie in die Authentifizierungsanfragen Ihrer Anwendung implementieren.

Nachdem Sie Anmeldeabläufe für einen Benutzer eingerichtet haben, können Sie dessen aktuellen Status auf MFA und [auswahlbasierte Authentifizierungsfaktoren anhand von](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) Anfragen an den API-Vorgang überprüfen. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) Für diesen Vorgang ist eine Autorisierung mit dem Zugriffstoken eines angemeldeten Benutzers erforderlich. Es gibt Benutzerauthentifizierungsfaktoren und MFA-Einstellungen zurück.

**Topics**
+ [Melden Sie sich bei einem Drittanbieter an IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Melden Sie sich mit dauerhaften Passwörtern an](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [Passwortlose Anmeldung mit Einmalpasswörtern](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Passwortlose Anmeldung mit Passkeys WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA nach der Anmeldung](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Tokens aktualisieren](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Benutzerdefinierte Authentifizierung](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Ablauf der Authentifizierung für die Benutzermigration](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Melden Sie sich bei einem Drittanbieter an IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Amazon Cognito Cognito-Benutzerpools dienen als Zwischenvermittler für Authentifizierungssitzungen zwischen Diensten IdPs wie Sign in with Apple, Login with Amazon und OpenID Connect (OIDC). *Dieser Vorgang wird auch als *Verbundanmeldung oder Verbundauthentifizierung* bezeichnet.* Bei der Verbundauthentifizierung werden keine der Authentifizierungsabläufe verwendet, die Sie in Ihren App-Client integrieren können. Stattdessen weisen Sie Ihrem App-Client einen konfigurierten Benutzerpool IdPs zu. Die Verbundanmeldung erfolgt, wenn Benutzer ihren IdP in der verwalteten Anmeldung auswählen oder Ihre Anwendung eine Sitzung mit einer Weiterleitung zu ihrer IdP-Anmeldeseite aufruft.

Mit der föderierten Anmeldung delegieren Sie primäre und MFA-Authentifizierungsfaktoren an den IdP des Benutzers. Amazon Cognito fügt die anderen erweiterten Flows in diesem Abschnitt einem Verbundbenutzer nicht hinzu, es sei denn, Sie [verknüpfen sie mit einem lokalen](cognito-user-pools-identity-federation-consolidate-users.md) Benutzer. Nicht verknüpfte Verbundbenutzer haben zwar Benutzernamen, aber es handelt sich dabei um einen Speicher zugeordneter Attributdaten, die unabhängig vom browserbasierten Flow normalerweise nicht für die Anmeldung verwendet werden.

**Ressourcen für die Implementierung**
+ [Benutzerpool-Anmeldung mit externen Identitätsanbietern](cognito-user-pools-identity-federation.md)

## Melden Sie sich mit dauerhaften Passwörtern an
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

In Amazon Cognito Cognito-Benutzerpools hat jeder Benutzer einen Benutzernamen. Dies kann eine Telefonnummer, eine E-Mail-Adresse oder eine gewählte oder vom Administrator bereitgestellte Kennung sein. Benutzer dieses Typs können sich mit ihrem Benutzernamen und ihrem Passwort anmelden und optional MFA bereitstellen. Benutzerpools können die Anmeldung mit Benutzername/Passwort mit öffentlichen oder IAM-autorisierten API-Operationen und SDK-Methoden durchführen. Ihre Anwendung kann das Passwort zur Authentifizierung direkt an Ihren Benutzerpool senden. Ihr Benutzerpool reagiert mit zusätzlichen Herausforderungen oder den JSON-Webtoken (JWTs), die das Ergebnis einer erfolgreichen Authentifizierung sind.

------
#### [ Activate password sign-in ]

Um die [clientbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-client) mit Benutzername und Passwort zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist. Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter **Anwendungen** zum Menü **App-Clients**. **Um die Anmeldung mit einem einfachen Passwort für eine clientseitige mobile oder native App zu ermöglichen, bearbeiten Sie einen App-Client und wählen Sie unter Authentifizierungsabläufe die Option **Mit Benutzername und Passwort anmelden: ALLOW\$1USER\$1PASSWORD\$1AUTH** aus.** **Um die Anmeldung mit einem einfachen Passwort für eine serverseitige App zu ermöglichen, bearbeiten Sie einen App-Client und wählen Sie Mit serverseitigen Administratoranmeldedaten anmelden: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH.**

[Um die wahlbasierte Authentifizierung mit Benutzername und Passwort zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist.](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) Bearbeiten Sie Ihren App-Client und wählen Sie **Wahlbasierte Anmeldung: ALLOW\$1USER\$1AUTH**.

![\[Ein Screenshot aus der Amazon Cognito Cognito-Konsole, der die Auswahl einfacher Passwort-Authentifizierungsabläufe für einen App-Client veranschaulicht. Die Optionen ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH und ALLOW_USER_AUTH wurden ausgewählt.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


****Um zu überprüfen, ob die Kennwortauthentifizierung in wahlbasierten Authentifizierungsabläufen verfügbar ist, navigieren Sie zum Anmeldemenü und lesen Sie den Abschnitt unter Optionen für die wahlbasierte Anmeldung.**** ****Sie können sich mit einfacher Passwortauthentifizierung anmelden, wenn das Passwort unter Verfügbare Optionen sichtbar ist.**** Die Option **Passwort** umfasst die Varianten für die einfache Authentifizierung und die SRP-Authentifizierung mit Benutzername/Passwort.

![\[Ein Screenshot aus der Amazon Cognito Cognito-Konsole, der die Wahl der Passwortauthentifizierung in der auswahlbasierten USER_AUTH-Anmeldekonfiguration für einen Benutzerpool veranschaulicht. Die Option Passwort wird als aktiv angezeigt.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Konfigurieren Sie `ExplicitAuthFlows` mit Ihren bevorzugten username-and-password Authentifizierungsoptionen in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Oder-Anfrage.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

Konfigurieren Sie in einer [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)Or-Anforderung `Policies` mit den wahlbasierten Authentifizierungsabläufen, die Sie unterstützen möchten. Der `PASSWORD` Wert in `AllowedFirstAuthFactors` umfasst sowohl die Ablaufoptionen für die Authentifizierung mit einfachem Passwort als auch für die SRP-Authentifizierung.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with a password ]

Um einen Benutzer mit Benutzername/Passwort-Authentifizierung bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer OR-Anforderung wie folgt. [AdminInitiateAuth[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Diese Anmeldeanforderung ist erfolgreich oder wird mit der nächsten Herausforderung fortgesetzt, wenn der aktuelle Benutzer für die Authentifizierung mit Benutzername/Passwort berechtigt ist. Andernfalls wird eine Liste der verfügbaren Herausforderungen bei der Authentifizierung mit dem Primärfaktor angezeigt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Sie können den `PREFERRED_CHALLENGE` Wert auch weglassen und eine Antwort erhalten, die eine Liste der für den Benutzer in Frage kommenden Anmeldefaktoren enthält.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Wenn Sie keine bevorzugte Herausforderung eingereicht haben oder der eingereichte Benutzer nicht für seine bevorzugte Herausforderung berechtigt ist, gibt Amazon Cognito eine Liste mit Optionen in `AvailableChallenges` zurück. Wenn ein `ChallengeName` von `AvailableChallenges` enthalten ist`PASSWORD`, können Sie die Authentifizierung mit einer Antwort [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)oder einer [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)Challenge-Antwort im folgenden Format fortsetzen. Sie müssen einen `Session` Parameter übergeben, der die Challenge-Antwort mit der API-Antwort auf Ihre erste Anmeldeanforderung verknüpft. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito beantwortet qualifizierte und erfolgreiche Preferred-Challenge-Anfragen und `PASSWORD` Challenge-Antworten mit Tokens oder einer zusätzlichen erforderlichen Herausforderung wie Multi-Faktor-Authentifizierung (MFA).

------
#### [ Client-based sign-in with a password ]

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer clientseitigen App anzumelden, konfigurieren Sie den Text Ihrer Anfrage wie folgt. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer serverseitigen App anzumelden, konfigurieren Sie den Text Ihrer [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)Anfrage wie folgt. Ihre Anwendung muss diese Anfrage mit Anmeldeinformationen signieren. AWS Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito reagiert auf erfolgreiche Anfragen mit Tokens oder einer zusätzlichen erforderlichen Herausforderung wie der Multi-Faktor-Authentifizierung (MFA).

------

## Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Eine weitere Form der Anmeldemethoden für Benutzername/Passwort in Benutzerpools ist das Secure Remote Password (SRP) -Protokoll. Bei dieser Option wird ein Nachweis über die Kenntnis eines Kennworts — ein Kennwort-Hash und ein Salt — gesendet, den Ihr Benutzerpool überprüfen kann. Da die Anfrage an Amazon Cognito keine lesbaren geheimen Informationen enthält, ist Ihre Anwendung die einzige Entität, die die von Benutzern eingegebenen Passwörter verarbeitet. Die SRP-Authentifizierung beinhaltet mathematische Berechnungen, die am besten mit einer vorhandenen Komponente durchgeführt werden, die Sie in Ihr SDK importieren können. SRP wird in der Regel in clientseitigen Anwendungen wie mobilen Apps implementiert. Weitere Informationen zum Protokoll finden Sie auf der [Stanford SRP-Homepage](http://srp.stanford.edu/). [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) hat auch Ressourcen und Beispiele. [Eine Vielzahl von öffentlichen Bibliotheken](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) steht zur Verfügung, um die SRP-Berechnungen für Ihre Authentifizierungsabläufe durchzuführen.

Die initiate-challenge-respond Reihenfolge der Amazon Cognito Cognito-Authentifizierung validiert Benutzer und ihre Passwörter mit SRP. Sie müssen Ihren Benutzerpool und Ihren App-Client so konfigurieren, dass sie die SRP-Authentifizierung unterstützen, und dann die Logik der Anmeldeanfragen und Challenge-Antworten in Ihrer Anwendung implementieren. Ihre SRP-Bibliotheken können Zufallszahlen und berechnete Werte generieren, die Ihrem Benutzerpool zeigen, dass Sie im Besitz eines Benutzerkennworts sind. Ihre Anwendung füllt diese berechneten Werte in die Felder im JSON-Format `AuthParameters` und in die `ChallengeParameters` Felder der Amazon Cognito Cognito-Benutzerpools, API-Operationen und SDK-Methoden für die Authentifizierung ein.

------
#### [ Activate SRP sign-in ]

Um die [clientbasierte Authentifizierung](authentication-flows-selection-sdk.md#authentication-flows-selection-client) mit Benutzername und SRP zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist. Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter **Anwendungen** zum Menü **App-Clients**. **Um die SRP-Anmeldung für eine clientseitige mobile oder native App zuzulassen, bearbeiten Sie einen App-Client und wählen Sie unter Authentifizierungsabläufe die Option **Mit sicherem Remote-Passwort (SRP) anmelden: ALLOW\$1USER\$1SRP\$1AUTH** aus.**

**Um die [wahlbasierte Authentifizierung mit Benutzername und SRP zu aktivieren, bearbeiten Sie Ihren App-Client und wählen Sie Wahlbasierte Anmeldung: ALLOW\$1USER\$1AUTH](authentication-flows-selection-sdk.md#authentication-flows-selection-choice).**

![\[Ein Screenshot aus der Amazon Cognito Cognito-Konsole, der die Auswahl sicherer Remote-Passwortauthentifizierungsabläufe für einen App-Client veranschaulicht. Die Optionen ALLOW_USER_SRP_AUTH und ALLOW_USER_AUTH wurden ausgewählt.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


****Um zu überprüfen, ob die SRP-Authentifizierung in Ihren wahlbasierten Authentifizierungsabläufen verfügbar ist, navigieren Sie zum Anmeldemenü und lesen Sie den Abschnitt unter Optionen für die wahlbasierte Anmeldung.**** ****Sie können sich mit der SRP-Authentifizierung anmelden, wenn das Passwort unter Verfügbare Optionen sichtbar ist.**** Die Option **Passwort** umfasst die Authentifizierungsvarianten Klartext und SRP Benutzername/Passwort.

![\[Ein Screenshot aus der Amazon Cognito Cognito-Konsole, der die Wahl der Passwortauthentifizierung in der auswahlbasierten USER_AUTH-Anmeldekonfiguration für einen Benutzerpool veranschaulicht. Die Option Passwort wird als aktiv angezeigt.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Konfigurieren Sie `ExplicitAuthFlows` mit Ihren bevorzugten username-and-password Authentifizierungsoptionen in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Oder-Anfrage.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_SRP_AUTH",
   "ALLOW_USER_AUTH"
]
```

Konfigurieren Sie in einer [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)Or-Anforderung `Policies` mit den wahlbasierten Authentifizierungsabläufen, die Sie unterstützen möchten. Der `PASSWORD` Wert in `AllowedFirstAuthFactors` umfasst sowohl die Optionen für den Klartext-Passwort als auch für den SRP-Authentifizierungsfluss.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with SRP ]

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung mit SRP bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer OR-Anforderung wie folgt. [AdminInitiateAuth[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Diese Anmeldeanforderung ist erfolgreich oder wird mit der nächsten Herausforderung fortgesetzt, wenn der aktuelle Benutzer für die Authentifizierung mit Benutzername und Passwort berechtigt ist. Andernfalls wird eine Liste der verfügbaren Herausforderungen bei der Authentifizierung mit dem Primärfaktor angezeigt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Sie können den `PREFERRED_CHALLENGE` Wert auch weglassen und eine Antwort erhalten, die eine Liste der für den Benutzer in Frage kommenden Anmeldefaktoren enthält.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Wenn Sie keine bevorzugte Herausforderung eingereicht haben oder der eingereichte Benutzer nicht für seine bevorzugte Herausforderung berechtigt ist, gibt Amazon Cognito eine Liste mit Optionen in `AvailableChallenges` zurück. Wenn ein `ChallengeName` von `AvailableChallenges` enthalten ist`PASSWORD_SRP`, können Sie die Authentifizierung mit einer Antwort [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)oder einer [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)Challenge-Antwort im folgenden Format fortsetzen. Sie müssen einen `Session` Parameter übergeben, der die Challenge-Antwort mit der API-Antwort auf Ihre erste Anmeldeanforderung verknüpft. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito beantwortet qualifizierte Anfragen mit einer bevorzugten `PASSWORD_SRP` Herausforderung und Antworten auf Challenge-Antworten mit einer Aufforderung. `PASSWORD_VERIFIER` Ihr Kunde muss die SRP-Berechnungen durchführen und auf die Herausforderung in einer OR-Anfrage antworten. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Bei einer erfolgreichen Antwort auf eine `PASSWORD_VERIFIER` Herausforderung gibt Amazon Cognito Token oder eine andere erforderliche Herausforderung wie die Multi-Faktor-Authentifizierung (MFA) aus.

------
#### [ Client-based sign-in with SRP ]

Die SRP-Authentifizierung ist bei der clientseitigen Authentifizierung üblicher als bei der serverseitigen. Sie können die SRP-Authentifizierung jedoch mit und verwenden. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Hauptteil Ihrer `InitiateAuth` `AdminInitiateAuth` OR-Anforderung wie folgt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

*Der Client generiert `SRP_A` aus einem Generator Modulo N *g*, der auf die Potenz einer geheimen zufälligen Ganzzahl a erhöht wird.*

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito reagiert mit einer `PASSWORD_VERIFIER`-Aufgabe. Ihr Kunde muss die SRP-Berechnungen durchführen und auf die Herausforderung in einer [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)Oder-Anfrage antworten. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Bei einer erfolgreichen Antwort auf eine `PASSWORD_VERIFIER` Herausforderung gibt Amazon Cognito Token oder eine andere erforderliche Herausforderung wie die Multi-Faktor-Authentifizierung (MFA) aus.

------

## Passwortlose Anmeldung mit Einmalpasswörtern
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

Passwörter können verloren gehen oder gestohlen werden. Möglicherweise möchten Sie nur überprüfen, ob Ihre Benutzer Zugriff auf eine verifizierte E-Mail-Adresse, Telefonnummer oder Authentifizierungs-App haben. Die Lösung hierfür ist die *passwortlose Anmeldung*. Ihre Anwendung kann Benutzer zur Eingabe ihres Benutzernamens, ihrer E-Mail-Adresse oder Telefonnummer auffordern. Amazon Cognito generiert dann ein Einmalpasswort (OTP), einen Code, den sie bestätigen müssen. Ein erfolgreicher Code schließt die Authentifizierung ab.

Authentifizierungsabläufe mit Einmalkennwörtern (OTP) sind nicht mit der erforderlichen Multi-Faktor-Authentifizierung (MFA) in Ihrem Benutzerpool kompatibel. Die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung kann die MFA-Anforderungen erfüllen, wenn Sie dies festlegen`FactorConfiguration`. `MULTI_FACTOR_WITH_USER_VERIFICATION` Wenn MFA in Ihrem Benutzerpool optional ist, können sich Benutzer, die MFA aktiviert haben, nicht mit einem ersten Einmalpasswort anmelden. Benutzer, die keine MFA-Präferenz in einem MFA-optionalen Benutzerpool haben, können sich mit kennwortlosen Faktoren anmelden. Weitere Informationen finden Sie unter [Wissenswertes über den Benutzerpool MFA](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Wenn ein Benutzer im Rahmen der kennwortlosen Authentifizierung einen Code, den er in einer SMS oder E-Mail-Nachricht erhalten hat, korrekt eingibt, markiert Ihr Benutzerpool zusätzlich zur Authentifizierung des Benutzers auch die nicht verifizierte E-Mail-Adresse oder das Telefonnummernattribut des Benutzers als verifiziert. Der Benutzerstatus wurde ebenfalls von `UNCONFIRMED` zu geändert`CONFIRMED`, unabhängig davon, ob Sie Ihren Benutzerpool so konfiguriert haben, dass E-Mail-Adressen oder [Telefonnummern automatisch verifiziert werden](signing-up-users-in-your-app.md).

**Neue Optionen mit passwortloser Anmeldung**  
Wenn Sie die passwortlose Authentifizierung in Ihrem Benutzerpool aktivieren, ändert sich dadurch die Funktionsweise einiger Benutzerabläufe.

1. Benutzer können sich ohne Passwort registrieren und bei der Anmeldung einen passwortlosen Faktor wählen. Sie können als Administrator auch Benutzer ohne Passwörter erstellen.

1. Benutzer, die Sie [mit einer CSV-Datei importieren](cognito-user-pools-using-import-tool.md), können sich sofort mit einem passwortlosen Faktor anmelden. Sie müssen vor der Anmeldung kein Passwort festlegen.

1. Benutzer, die kein Passwort haben, können [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API-Anfragen ohne den `PreviousPassword` Parameter einreichen.

**Automatische Anmeldung mit OTPs**  
Benutzer, die sich registrieren und ihre Benutzerkonten per E-Mail oder SMS-Nachricht bestätigen, OTPs können sich automatisch mit dem passwortlosen Faktor anmelden, der ihrer Bestätigungsnachricht entspricht. Auf der verwalteten Anmelde-Benutzeroberfläche können Benutzer, die ihre Konten bestätigen und für die OTP-Anmeldung mit der Methode zur Übermittlung des Bestätigungscodes berechtigt sind, automatisch zu ihrer ersten Anmeldung übergehen, nachdem sie den Bestätigungscode eingegeben haben. Übergeben Sie in Ihrer maßgeschneiderten Anwendung mit einem AWS SDK die folgenden Parameter an eine Oder-Operation. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ Der `Session` Parameter aus der [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API-Antwort als `Session` Anforderungsparameter.
+ Ein [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)von`USER_AUTH`.

Sie können eine [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) von `EMAIL_OTP` oder bestehen`SMS_OTP`, dies ist jedoch nicht erforderlich. Der `Session` Parameter liefert einen Authentifizierungsnachweis und Amazon Cognito ignoriert den, `AuthParameters` wenn Sie einen gültigen Sitzungscode übergeben.

Der Anmeldevorgang gibt die Antwort zurück, die auf eine erfolgreiche Authentifizierung hinweist [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), ohne zusätzliche Herausforderungen, wenn die folgenden Bedingungen zutreffen.
+ Der `Session` Code ist gültig und nicht abgelaufen.
+ Der Benutzer hat Anspruch auf die OTP-Authentifizierungsmethode.

------
#### [ Activate passwordless sign-in ]

**Konsole**  
Um die passwortlose Anmeldung zu aktivieren, konfigurieren Sie Ihren Benutzerpool so, dass die primäre Anmeldung mit einem oder mehreren kennwortlosen Typen zulässig ist, und konfigurieren Sie dann Ihren App-Client so, dass der Datenfluss zulässig ist. `USER_AUTH` Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter **Authentifizierung** zum **Anmelde-Menü**. **Bearbeiten Sie **die Optionen für die wahlbasierte Anmeldung** und wählen Sie Einmalpasswort für **E-Mail-Nachricht oder Einmalpasswort** für SMS-Nachricht.** Sie können beide Optionen aktivieren. Speichern Sie Ihre Änderungen.

Navigieren Sie zum Menü **App-Clients** und wählen Sie einen App-Client aus oder erstellen Sie einen neuen. Wählen Sie **Bearbeiten** und dann **Wählen Sie bei der Anmeldung einen Authentifizierungstyp aus: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Konfigurieren Sie in der Benutzerpools-API `SignInPolicy` mit den entsprechenden kennwortlosen Optionen in einer Oder-Anfrage. [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

Konfigurieren Sie Ihren App-Client `ExplicitAuthFlows` mit der erforderlichen Option in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Oder-Anfrage.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

Bei der passwortlosen Anmeldung gibt es keine [clientbasierte](authentication-flows-selection-sdk.md#authentication-flows-selection-client) Anmeldung`AuthFlow`, die Sie in und angeben können. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Die OTP-Authentifizierung ist nur in der [wahlbasierten Variante verfügbar. Dabei](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) können Sie eine bevorzugte Anmeldeoption anfordern oder aus `AuthFlow` der `USER_AUTH` Option eines Benutzers die passwortlose Option auswählen. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer OR-Anforderung wie folgt. `InitiateAuth` `AdminInitiateAuth` Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

In diesem Beispiel wissen wir nicht, auf welche Weise sich der Benutzer anmelden möchte. Wenn wir einen `PREFERRED_CHALLENGE` Parameter hinzufügen und die bevorzugte Herausforderung für den Benutzer verfügbar ist, antwortet Amazon Cognito mit dieser Herausforderung.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

`AuthParameters`In diesem Beispiel können Sie stattdessen `"PREFERRED_CHALLENGE": "EMAIL_OTP"` oder `"PREFERRED_CHALLENGE": "SMS_OTP"` hinzufügen. Wenn der Benutzer für diese bevorzugte Methode in Frage kommt, sendet Ihr Benutzerpool sofort einen Code an die E-Mail-Adresse oder Telefonnummer des Benutzers und gibt `"ChallengeName": "EMAIL_OTP"` oder zurück`"ChallengeName": "SMS_OTP"`.

Wenn Sie keine bevorzugte Herausforderung angeben, antwortet Amazon Cognito mit einem `AvailableChallenges` Parameter.

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "[Session ID]"
}
```

Dieser Benutzer ist berechtigt, sich passwortlos mit E-Mail-Nachrichten-OTP, SMS-Nachrichten-OTP und Benutzername-Passwort anzumelden. Ihre Anwendung kann den Benutzer zur Eingabe seiner Auswahl auffordern oder eine Auswahl auf der Grundlage interner Logik treffen. Anschließend wird mit einer [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)Oder-Anfrage [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)fortgefahren, mit der die Herausforderung ausgewählt wird. Angenommen, der Benutzer möchte die kennwortlose Authentifizierung mit einem Einmalpasswort für eine E-Mail-Nachricht abschließen.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Amazon Cognito antwortet mit einer `EMAIL_OTP` Aufforderung und sendet einen Code an die verifizierte E-Mail-Adresse Ihres Benutzers. Ihre Anwendung muss dann erneut auf diese Aufforderung antworten.

Dies wäre auch die Antwort auf die nächste Herausforderung, wenn Sie `EMAIL_OTP` als Antwort darauf anfragen würden`PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## Passwortlose Anmeldung mit Passkeys WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

Passkeys sind sicher und bedeuten für die Benutzer einen relativ geringen Aufwand. Die Passkey-Anmeldung verwendet *Authentifikatoren*, externe Geräte, mit denen sich Benutzer authentifizieren können. Reguläre Passwörter setzen Benutzer Sicherheitslücken wie Phishing, Erraten von Passwörtern und Diebstahl von Anmeldeinformationen aus. Mit Passkeys kann Ihre Anwendung von fortschrittlichen Sicherheitsmaßnahmen auf Mobiltelefonen und anderen Geräten profitieren, die an Informationssysteme angeschlossen oder in diese integriert sind. Ein gängiger Anmeldeprozess mit dem Hauptschlüssel beginnt mit einem Anruf auf Ihrem Gerät, der Ihren Passwort- oder *Anmeldeinformationsmanager* aufruft, z. B. den iOS-Schlüsselbund oder den Google Chrome-Passwort-Manager. Der Manager für Anmeldeinformationen auf dem Gerät fordert sie auf, einen Hauptschlüssel auszuwählen und ihn mit einem vorhandenen Mechanismus zum Entsperren von Anmeldeinformationen oder Geräten zu autorisieren. Moderne Telefone verfügen über Gesichtsscanner, Fingerabdruckscanner, Entsperrmuster und andere Mechanismen, von denen einige gleichzeitig das Prinzip der starken Authentifizierung erfüllen, das etwas, das *Sie kennen, und *etwas*, das Sie haben,* erfüllen. *Im Fall der biometrischen Authentifizierung mit Passkeys stehen Kennwörter für etwas, das Sie sind.*

Möglicherweise möchten Sie Passwörter durch die Authentifizierung per Fingerabdruck, Gesicht oder Sicherheitsschlüssel ersetzen. *Das ist Hauptschlüssel oder Authentifizierung. *WebAuthn** Es ist üblich, dass Anwendungsentwickler Benutzern gestatten, ein biometrisches Gerät zu registrieren, nachdem sie sich zum ersten Mal mit einem Passwort angemeldet haben. Mit Amazon Cognito Cognito-Benutzerpools kann Ihre Anwendung diese Anmeldeoption für Benutzer konfigurieren. Die Passkey-Authentifizierung kann die Anforderungen der Multi-Faktor-Authentifizierung (MFA) erfüllen, wenn Ihr Benutzerpool darauf eingestellt ist`FactorConfiguration`. `MULTI_FACTOR_WITH_USER_VERIFICATION` In dieser Konfiguration gilt die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung als Multi-Faktor-Authentifizierung.

Authentifizierungsabläufe mit Einmalkennwörtern (OTP) sind nicht mit der erforderlichen Multi-Faktor-Authentifizierung (MFA) in Ihrem Benutzerpool kompatibel. Die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung kann die MFA-Anforderungen erfüllen, wenn Sie dies festlegen`FactorConfiguration`. `MULTI_FACTOR_WITH_USER_VERIFICATION` Wenn MFA in Ihrem Benutzerpool optional ist, können sich Benutzer, die MFA aktiviert haben, nicht mit einem ersten Einmalpasswort anmelden. Benutzer, die keine MFA-Präferenz in einem MFA-optionalen Benutzerpool haben, können sich mit kennwortlosen Faktoren anmelden. Weitere Informationen finden Sie unter [Wissenswertes über den Benutzerpool MFA](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### Was sind Hauptschlüssel?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

Passkeys vereinfachen die Benutzererfahrung, da sie sich keine komplexen Passwörter merken oder sie eingeben müssen. OTPs Passkeys basieren auf WebAuthn CTAP2 Standards, die vom [World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/) (W3C) und der FIDO (Fast Identity Online) Alliance entworfen wurden. *Browser und Plattformen implementieren diese Standards und ermöglichen es Web- oder Mobilanwendungen, einen Prozess APIs zur Registrierung oder Authentifizierung von Passkeys zu starten, sowie eine Benutzeroberfläche, über die der Benutzer einen Passkey-Authentifikator auswählen und mit diesem interagieren kann.*

Wenn ein Benutzer einen Authentifikator bei einer Website oder einer App registriert, erstellt der Authenticator ein öffentlich-privates key pair. WebAuthn Browser und Plattformen senden den öffentlichen Schlüssel an das Anwendungs-Backend der Website oder App. Der Authentifikator speichert den privaten Schlüssel, den Schlüssel IDs und die Metadaten über den Benutzer und die Anwendung. Wenn sich der Benutzer in der registrierten Anwendung mit seinem registrierten Authentifikator authentifizieren möchte, generiert die Anwendung eine zufällige Aufforderung. Die Antwort auf diese Herausforderung ist die digitale Signatur der Aufforderung, die mit dem privaten Schlüssel des Authentifikators für diese Anwendung und diesen Benutzer sowie den entsprechenden Metadaten generiert wird. Der Browser oder die Anwendungsplattform empfängt die digitale Signatur und leitet sie an das Anwendungs-Backend weiter. Die Anwendung validiert dann die Signatur mit dem gespeicherten öffentlichen Schlüssel.

**Anmerkung**  
Ihre Anwendung erhält weder Authentifizierungsgeheimnisse, die Benutzer ihrem Authentifikator zur Verfügung stellen, noch Informationen über den privaten Schlüssel.

Im Folgenden finden Sie einige Beispiele und Funktionen von Authentifikatoren, die derzeit auf dem Markt erhältlich sind. Ein Authentifikator kann eine oder alle dieser Kategorien erfüllen.
+ Einige Authentifikatoren führen eine *Benutzerverifizierung anhand* von Faktoren wie einer PIN, einer biometrischen Eingabe mit einem Gesicht oder einem Fingerabdruck oder einem Passcode durch, bevor sie den Zugriff gewähren. Dadurch wird sichergestellt, dass nur der legitime Benutzer Aktionen autorisieren kann. Andere Authentifikatoren verfügen nicht über Funktionen zur Benutzerverifizierung, und einige können die Benutzerverifizierung überspringen, wenn eine Anwendung sie nicht benötigt.
+ Einige Authentifikatoren, zum Beispiel YubiKey Hardware-Token, sind portabel. Sie kommunizieren mit Geräten über USB-, Bluetooth- oder NFC-Verbindungen. Einige Authentifikatoren sind lokal und an eine Plattform gebunden, z. B. Windows Hello auf einem PC oder Face ID auf einem iPhone. Ein gerätegebundener Authentifikator kann vom Benutzer mitgeführt werden, wenn er klein genug ist, wie ein Mobilgerät. Manchmal können Benutzer ihren Hardware-Authentifikator mit vielen verschiedenen Plattformen über drahtlose Kommunikation verbinden. Beispielsweise können Benutzer in Desktop-Browsern ihr Smartphone als Hauptschlüsselauthentifikator verwenden, wenn sie einen QR-Code scannen.
+ Einige plattformgebundene Hauptschlüssel werden mit der Cloud synchronisiert, sodass sie von mehreren Standorten aus verwendet werden können. Beispielsweise synchronisieren Face ID-Passkeys auf iPhones die Passkey-Metadaten mit den Apple-Konten der Nutzer in deren iCloud-Schlüsselbund. Diese Hauptschlüssel ermöglichen eine nahtlose Authentifizierung auf allen Apple-Geräten, anstatt zu verlangen, dass Benutzer jedes Gerät einzeln registrieren. Softwarebasierte Authentifikator-Apps wie 1Password, Dashlane und Bitwarden synchronisieren Passkeys auf allen Plattformen, auf denen der Benutzer die App installiert hat.

*In der WebAuthn Terminologie sind Websites und Apps vertrauende Parteien.* Jedem Hauptschlüssel ist eine spezifische ID der vertrauenden Partei zugeordnet. Dabei handelt es sich um eine einheitliche Kennung, die die Websites oder Apps darstellt, die die Passkey-Authentifizierung akzeptieren. Entwickler müssen ihre ID der vertrauenden Partei sorgfältig auswählen, um den richtigen Authentifizierungsumfang zu gewährleisten. Eine typische ID der vertrauenden Partei ist der Stammdomänenname eines Webservers. Ein Hauptschlüssel mit dieser Spezifikation für die ID der vertrauenden Partei kann für diese Domain und Subdomänen authentifiziert werden. Browser und Plattformen verweigern die Passkey-Authentifizierung, wenn die URL der Website, auf die ein Benutzer zugreifen möchte, nicht mit der ID der vertrauenden Partei übereinstimmt. Ähnlich kann für mobile Apps ein Hauptschlüssel nur verwendet werden, wenn der App-Pfad in den `.well-known` Zuordnungsdateien enthalten ist, die die Anwendung unter dem durch die ID der vertrauenden Partei angegebenen Pfad zur Verfügung stellt.

*Hauptschlüssel sind auffindbar.* Sie können von einem Browser oder einer Plattform automatisch erkannt und verwendet werden, ohne dass der Benutzer einen Benutzernamen eingeben muss. Wenn ein Benutzer eine Website oder App besucht, die die Hauptschlüsselauthentifizierung unterstützt, kann er aus einer Liste von Hauptschlüsseln auswählen, die dem Browser oder der Plattform bereits bekannt sind, oder er kann einen QR-Code scannen.

### Wie implementiert Amazon Cognito die Passkey-Authentifizierung?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

**Hauptschlüssel sind eine optionale Funktion, die in allen [Funktionsplänen](cognito-sign-in-feature-plans.md) außer Lite verfügbar ist.** Sie ist nur im wahlbasierten Authentifizierungsablauf [verfügbar.](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) Bei der [verwalteten Anmeldung](authentication-flows-selection-managedlogin.md) übernimmt Amazon Cognito die Logik der Passkey-Authentifizierung. Sie können auch die [Amazon Cognito-Benutzerpools-API](#amazon-cognito-user-pools-authentication-flow-methods) verwenden, AWS SDKs um die Passkey-Authentifizierung in Ihrem Anwendungs-Backend durchzuführen.

Amazon Cognito erkennt Hauptschlüssel, die mit einem der beiden asymmetrischen kryptografischen Algorithmen ES256 (-7) und (-257) erstellt wurden. RS256 Die meisten Authentifikatoren unterstützen beide Algorithmen. Standardmäßig können Benutzer jede Art von Authentifikatoren einrichten, z. B. Hardware-Token, mobile Smartphones und Software-Authenticator-Apps. Amazon Cognito unterstützt derzeit nicht die Durchsetzung von [Bescheinigungen](https://csrc.nist.gov/glossary/term/attestation).

In Ihrem Benutzerpool können Sie die Benutzerverifizierung so konfigurieren, dass sie bevorzugt oder erforderlich ist. Diese Einstellung ist in API-Anfragen, die keinen Wert angeben, standardmäßig auf „bevorzugt“ eingestellt, und in der Amazon Cognito Cognito-Konsole ist standardmäßig „bevorzugt“ ausgewählt. Wenn Sie die Benutzerverifizierung auf bevorzugt setzen, können Benutzer Authentifikatoren einrichten, die nicht über die Funktion zur Benutzerverifizierung verfügen, und Registrierungs- und Authentifizierungsvorgänge können auch ohne Benutzerverifizierung erfolgreich sein. Um die Benutzerverifizierung bei der Registrierung und Authentifizierung mit dem Hauptschlüssel vorzuschreiben, ändern Sie diese Einstellung in „Erforderlich“.

Die ID der vertrauenden Partei (Relying Party, RP), die Sie in Ihrer Hauptschlüsselkonfiguration festgelegt haben, ist eine wichtige Entscheidung. Wenn Sie nichts anderes angeben und Ihre [Domain-Branding-Version](managed-login-branding.md) eine verwaltete Anmeldung ist, erwartet Ihr Benutzerpool standardmäßig den Namen Ihrer [benutzerdefinierten Domain](cognito-user-pools-add-custom-domain.md) als RP-ID. Wenn Sie keine benutzerdefinierte Domain haben und nichts anderes angeben, verwendet Ihr Benutzerpool standardmäßig eine RP-ID Ihrer [Präfix-Domain](cognito-user-pools-assign-domain-prefix.md). Sie können Ihre RP-ID auch so konfigurieren, dass sie ein beliebiger Domainname ist, der nicht in der öffentlichen Suffixliste (PSL) enthalten ist. Ihr RP-ID-Eintrag gilt für die Registrierung und Authentifizierung mit dem Hauptschlüssel bei der verwalteten Anmeldung und bei der SDK-Authentifizierung. Passkey funktioniert nur in mobilen Anwendungen, bei denen Amazon Cognito eine `.well-known` Zuordnungsdatei mit Ihrer RP-ID als Domain finden kann. Es hat sich bewährt, den Wert der ID Ihrer vertrauenden Partei zu ermitteln und festzulegen, bevor Ihre Website oder App öffentlich verfügbar ist. Wenn Sie Ihre RP-ID ändern, müssen sich Ihre Benutzer erneut mit der neuen RP-ID registrieren.

Jeder Benutzer kann bis zu 20 Hauptschlüssel registrieren. Sie können einen Hauptschlüssel erst registrieren, nachdem sie sich mindestens einmal bei Ihrem Benutzerpool angemeldet haben. Durch die verwaltete Anmeldung entfällt ein erheblicher Aufwand bei der Registrierung des Hauptschlüssels. Wenn Sie die Hauptschlüsselauthentifizierung für einen Benutzerpool und einen App-Client aktivieren, erinnert Ihr Benutzerpool mit einer verwalteten Anmeldedomäne Endbenutzer daran, einen Hauptschlüssel zu registrieren, nachdem sie sich für ein neues Benutzerkonto registriert haben. Sie können die Browser der Benutzer auch jederzeit aufrufen, um sie zur Registrierung des Hauptschlüssels auf eine verwaltete Anmeldeseite weiterzuleiten. Benutzer müssen einen Benutzernamen angeben, bevor Amazon Cognito die Hauptschlüsselauthentifizierung initiieren kann. Die verwaltete Anmeldung erledigt dies automatisch. Auf der Anmeldeseite werden Sie zur Eingabe eines Benutzernamens aufgefordert, es wird überprüft, ob der Benutzer mindestens ein Hauptschlüssel registriert hat, und Sie werden dann zur Anmeldung mit dem Hauptschlüssel aufgefordert. In ähnlicher Weise müssen SDK-basierte Anwendungen zur Eingabe eines Benutzernamens auffordern und diesen in der Authentifizierungsanfrage angeben.

Wenn Sie die Benutzerpoolauthentifizierung mit Hauptschlüsseln einrichten und über eine benutzerdefinierte Domäne und eine Präfixdomäne verfügen, verwendet die RP-ID standardmäßig den vollqualifizierten Domänennamen (FQDN) Ihrer benutzerdefinierten Domäne. Um eine Präfix-Domain als RP-ID in der Amazon Cognito Cognito-Konsole festzulegen, löschen Sie Ihre benutzerdefinierte Domain oder geben Sie den FQDN der Präfix-Domain als **Drittanbieter-Domain** ein.

------
#### [ Activate passkey sign-in ]

**Konsole**  
Um die Anmeldung mit Hauptschlüsseln zu aktivieren, konfigurieren Sie Ihren Benutzerpool so, dass die primäre Anmeldung mit einem oder mehreren kennwortlosen Typen zulässig ist, und konfigurieren Sie dann Ihren App-Client so, dass er den Datenfluss zulässt. `USER_AUTH` Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter **Authentifizierung** zum **Anmelde-Menü**. **Bearbeiten Sie **die Optionen für die wahlbasierte Anmeldung** und fügen Sie **Passkey** zur Liste der verfügbaren Optionen hinzu.**

**Navigieren Sie zum Menü **Authentifizierungsmethoden** und bearbeiten Sie Passkey.**
+ Die **Benutzerüberprüfung** ist die Einstellung, ob Ihr Benutzerpool Hauptschlüsselgeräte benötigt, die zusätzlich überprüfen, ob der aktuelle Benutzer für einen Hauptschlüssel autorisiert ist. **Um Benutzer zu ermutigen, ein Gerät mit Benutzerverifizierung zu konfigurieren, diese aber nicht zu verlangen, wählen Sie Bevorzugt aus.** Um nur Geräte mit Benutzerverifizierung zu unterstützen, wählen Sie **Erforderlich** aus. Weitere Informationen finden Sie unter [Benutzerverifizierung](https://www.w3.org/TR/webauthn-2/#user-verification) auf w3.org.
+ Die **ID der Domain for Relying Party** ist die Kennung, die Ihre Anwendung bei der Registrierung mit dem Hauptschlüssel der Benutzer weitergibt. Sie legt das Ziel der Vertrauensbeziehung mit dem Herausgeber der Hauptschlüssel der Benutzer fest. Ihre ID der vertrauenden Partei kann wie folgt lauten: die Domain Ihres Benutzerpools, wenn   
**Cognito-Domäne**  
Die Amazon [Cognito-Präfixdomäne](cognito-user-pools-assign-domain-prefix.md) Ihres Benutzerpools.  
**Benutzerdefinierte Domain**  
Die [benutzerdefinierte Domain](cognito-user-pools-add-custom-domain.md) Ihres Benutzerpools.  
**Domain eines Drittanbieters**  
Die Domäne für Anwendungen, die den Benutzerpool nicht verwenden, verwaltete Anmeldeseiten. Diese Einstellung wird normalerweise Benutzerpools zugeordnet, die keine [Domäne](cognito-user-pools-assign-domain.md) haben und die Authentifizierung mit einem AWS SDK und der Benutzerpools-API im Backend durchführen.

Navigieren Sie zum Menü **App-Clients** und wählen Sie einen App-Client aus oder erstellen Sie einen neuen. Wählen Sie **Bearbeiten** aus und wählen Sie unter **Authentifizierungsabläufe** die **Option Wählen Sie bei der Anmeldung einen Authentifizierungstyp aus: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Konfigurieren Sie in der Benutzerpools-API `SignInPolicy` mit den entsprechenden Passkey-Optionen in einer [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)Oder-Anfrage. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) Die `WEB_AUTHN` Option für die Hauptschlüsselauthentifizierung muss von mindestens einer weiteren Option begleitet werden. Für die Registrierung mit dem Passkey ist eine bestehende Authentifizierungssitzung erforderlich.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

Konfigurieren Sie Ihre Präferenz für die Benutzerverifizierung und Ihre RP-ID im `WebAuthnConfiguration` Parameter einer [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration)Anfrage. Das`RelyingPartyId`, das beabsichtigte Ziel der Ergebnisse der Passkey-Authentifizierung, kann Ihr Benutzerpool-Präfix oder Ihre benutzerdefinierte Domain oder eine Domain Ihrer Wahl sein.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

Konfigurieren Sie Ihren App-Client `ExplicitAuthFlows` mit der erforderlichen Option in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Oder-Anfrage.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

Die verwaltete Anmeldung kümmert sich um die Benutzerregistrierung von Hauptschlüsseln. Wenn die Hauptschlüsselauthentifizierung in Ihrem Benutzerpool aktiv ist, fordert Amazon Cognito Benutzer auf, einen Hauptschlüssel einzurichten, wenn sie sich für ein neues Benutzerkonto registrieren.

Amazon Cognito fordert Benutzer nicht auf, einen Hauptschlüssel einzurichten, wenn sie sich bereits registriert haben und keinen Hauptschlüssel eingerichtet haben oder wenn Sie ihr Konto als Administrator erstellt haben. Benutzer in diesem Status müssen sich mit einem anderen Faktor wie einem Passwort oder einem kennwortlosen OTP anmelden, bevor sie einen Hauptschlüssel registrieren können.

**Um einen Hauptschlüssel zu registrieren**

1. Leiten Sie den Benutzer zu Ihrer [Anmeldeseite weiter](authorization-endpoint.md).

   ```
   https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

1. Verarbeiten Sie das Authentifizierungsergebnis des Benutzers. In diesem Beispiel leitet Amazon Cognito sie `www.example.com` mit einem Autorisierungscode weiter, den Ihre Anwendung gegen Token eintauscht.

1. Leiten Sie den Benutzer zu Ihrer Registrierungs-Passkey-Seite weiter. Der Benutzer erhält ein Browser-Cookie, das seine angemeldete Sitzung beibehält. Die Hauptschlüssel-URL verwendet und Parameter. `client_id` `redirect_uri` Amazon Cognito erlaubt nur authentifizierten Benutzern den Zugriff auf diese Seite. Melden Sie Ihren Benutzer mit einem Passwort, E-Mail-OTP oder SMS-OTP an und rufen Sie dann eine URL auf, die dem folgenden Muster entspricht.

   Sie können dieser Anfrage auch andere [Autorisieren des Endpunkts](authorization-endpoint.md) Parameter wie und hinzufügen. `response_type` `scope`

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

Sie registrieren Hauptschlüsselanmeldedaten mit Metadaten in einem [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions)Objekt. Sie können dieses Objekt mit den Anmeldeinformationen eines angemeldeten Benutzers generieren und diese in einer API-Anfrage an dessen Hauptschlüsselaussteller weitergeben. Der Aussteller gibt ein [RegistrationResponseJSON-Objekt](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) zurück, das die Registrierung des Hauptschlüssels bestätigt.

Um den Prozess der Registrierung des Hauptschlüssels zu starten, melden Sie einen Benutzer mit einer vorhandenen Anmeldeoption an. Autorisieren Sie die durch das [Token autorisierte [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth)API-Anfrage mit dem Zugriffstoken des aktuellen Benutzers. Im Folgenden finden Sie den Hauptteil einer Beispielanforderung. `GetWebAuthnRegistrationOptions`

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

Die Antwort aus Ihrem Benutzerpool enthält das `PublicKeyCreationOptions` Objekt. Präsentieren Sie dieses Objekt in einer API-Anfrage an den Aussteller des Benutzers. Es enthält Informationen wie den öffentlichen Schlüssel und die ID der vertrauenden Partei. Der Emittent wird mit einem `RegistrationResponseJSON` Objekt antworten.

Präsentieren Sie die Antwort auf die Registrierung in einer [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API-Anfrage, die wiederum mit dem Zugriffstoken des Benutzers autorisiert wurde. Wenn Ihr Benutzerpool mit einer HTTP 200-Antwort mit einem leeren Text antwortet, ist der Hauptschlüssel Ihres Benutzers registriert.

------
#### [ Sign in with a passkey ]

Bei der passwortlosen Anmeldung gibt es keine Option`AuthFlow`, die Sie in und angeben können. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Stattdessen müssen Sie ein `AuthFlow` of deklarieren `USER_AUTH` und eine Anmeldeoption anfordern oder Ihre passwortlose Option aus der Antwort Ihres Benutzerpools auswählen. Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Hauptteil Ihrer `AdminInitiateAuth` Oder-Anfrage wie `InitiateAuth` folgt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

In diesem Beispiel wissen wir, dass sich der Benutzer mit einem Hauptschlüssel anmelden möchte, und fügen einen `PREFERRED_CHALLENGE` Parameter hinzu.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito reagiert mit einer `WEB_AUTHN`-Aufgabe. Ihre Bewerbung muss auf diese Herausforderung reagieren. Initiieren Sie eine Anmeldeanforderung beim Passkey-Anbieter des Benutzers. Es wird ein [AuthenticationResponseJSON-Objekt](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson) zurückgegeben.

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "CREDENTIAL" : "{AuthenticationResponseJSON}" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## MFA nach der Anmeldung
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

Sie können festlegen, dass Benutzer, die die Anmeldung mit einem Benutzername-Passwort-Schema abschließen, in einer E-Mail-Nachricht, SMS-Nachricht oder einer Anwendung zur Codegenerierung zu einer zusätzlichen Bestätigung mit einem Einmalkennwort aufgefordert werden. MFA unterscheidet sich von der passwortlosen Anmeldung mit Einmalpasswörtern. Hauptschlüssel mit Benutzerverifizierung können jedoch die MFA-Anforderungen erfüllen, wenn Sie `FactorConfiguration` AS `MULTI_FACTOR_WITH_USER_VERIFICATION` in Ihrem Benutzerpool konfigurieren. `WebAuthnConfiguration` Bei kennwortbasierten Datenströmen ist MFA in Benutzerpools ein Challenge-Response-Modell, bei dem ein Benutzer zunächst nachweist, dass er das Passwort kennt, und dann nachweist, dass er Zugriff auf sein registriertes Second-Factor-Gerät hat.

**Ressourcen für die Implementierung**
+ [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md)

## Tokens aktualisieren
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Wenn Sie möchten, dass Benutzer angemeldet bleiben, ohne ihre Anmeldeinformationen erneut eingeben zu müssen, sind *Aktualisierungstoken* das Tool, das Ihre Anwendung benötigt, um die Sitzung eines Benutzers beizubehalten. Anwendungen können Ihrem Benutzerpool Aktualisierungstoken präsentieren und diese gegen neue ID- und Zugriffstoken eintauschen. Mit der Tokenaktualisierung können Sie sicherstellen, dass ein angemeldeter Benutzer weiterhin aktiv ist, aktualisierte Attributinformationen abrufen und Zugriffsberechtigungen ohne Benutzereingriff aktualisieren.

**Ressourcen für die Implementierung**
+ [Tokens aktualisieren](amazon-cognito-user-pools-using-the-refresh-token.md)

## Benutzerdefinierte Authentifizierung
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Möglicherweise möchten Sie eine Authentifizierungsmethode für Ihre Benutzer konfigurieren, die hier nicht aufgeführt ist. Sie können dies mit einer *benutzerdefinierten Authentifizierung* mit Lambda-Triggern tun. In einer Abfolge von Lambda-Funktionen gibt Amazon Cognito eine Aufforderung aus, stellt eine Frage, die Benutzer beantworten müssen, überprüft die Antwort auf ihre Richtigkeit und bestimmt dann, ob eine weitere Aufforderung ausgegeben werden soll. Die Fragen und Antworten können Sicherheitsfragen, Anfragen an einen CAPTCHA-Dienst, Anfragen an eine externe MFA-Dienst-API oder alle diese nacheinander beinhalten.

**Ressourcen für die Implementierung**
+ [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md)

### Benutzerdefinierter Authentifizierungsablauf
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

Amazon-Cognito-Benutzerpools ermöglichen außerdem die Verwendung benutzerdefinierter Authentifizierungsabläufe, mit denen Sie ein auf Aufforderungen und Antworten basiertes Authentifizierungsmodell mithilfe von AWS Lambda -Auslösern erstellen können.

Der benutzerdefinierte Authentifizierungsfluss ermöglicht kundenspezifische Aufforderungs- und Antwortzyklen, um unterschiedliche Anforderungen zu erfüllen. Der Ablauf beginnt mit dem Aufruf der `InitiateAuth`-API-Operation, die den zu verwendenden Authentifizierungstyp angibt und die anfänglichen Authentifizierungsparameter bereitstellt. Amazon Cognito antwortet auf den `InitiateAuth`-Aufruf mit einer der folgenden Arten von Informationen: 
+ Mit einer Aufforderung für den Benutzer sowie einer Sitzung und Parametern.
+ Mit einem Fehler, wenn der Benutzer nicht authentifiziert werden konnte
+ Mit einem ID-, Zugriffs- und Aktualisierungstoken, wenn die angegebenen Parameter im `InitiateAuth`-Aufruf ausreichen, um den Benutzer anzumelden. (Normalerweise muss der Benutzer oder die App zuerst eine Herausforderung beantworten, aber Ihr benutzerdefinierter Code muss dies bestimmen.)

 Wenn Amazon Cognito auf den `InitiateAuth`-Aufruf mit einer Aufforderung antwortet, sammelt die App weitere Eingaben und ruft die `RespondToAuthChallenge`-Operation auf. Dieser Aufruf liefert die Antworten auf die Aufforderungen und gibt sie an die Sitzung zurück. Amazon Cognito reagiert auf den `RespondToAuthChallenge`-Aufruf ähnlich wie auf den `InitiateAuth`-Aufruf. Wenn sich der Benutzer angemeldet hat, stellt Amazon Cognito Token bereit. Wenn der Benutzer hingegen nicht angemeldet ist, zeigt Amazon Cognito eine weitere Aufforderung oder einen Fehler an. Wenn Amazon Cognito eine weitere Aufforderung zurückgibt, wiederholt sich die Sequenz und die App ruft `RespondToAuthChallenge` auf, bis sich der Benutzer erfolgreich angemeldet hat oder ein Fehler angezeigt wird. Weitere Details finden Sie in der [API-Dokumentation](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) für die API-Operationen `InitiateAuth` und `RespondToAuthChallenge`. 

### Benutzerdefinierter Authentifizierungsablauf und Aufforderungen
<a name="Custom-authentication-flow-and-challenges"></a>

Eine App kann einen benutzerdefinierten Authentifizierungsfluss durch Aufrufen von `InitiateAuth` mit `CUSTOM_AUTH` als `Authflow` initiieren. Bei einem benutzerdefinierten Authentifizierungsablauf steuern drei Lambda-Auslöser die Aufforderungen und die Verifizierung der Antworten.
+ Der `DefineAuthChallenge`-Lambda-Auslöser verwendet ein Sitzungs-Array mit früheren Aufforderungen und Antworten als Eingabe. Anschließend generiert er den nächsten Aufforderungsnamen und boolesche Werte, die angeben, ob der Benutzer authentifiziert ist und ihm Token gewährt werden können. Dieser Lambda-Auslöser ist ein Zustandsautomat, der den Weg des Benutzers durch die Aufforderungen steuert.
+ Der `CreateAuthChallenge`-Lambda-Auslöser verwendet einen Aufforderungsnamen als Eingabe und generiert die Aufforderung sowie Parameter zur Bewertung der Antwort. Wenn `DefineAuthChallenge` `CUSTOM_CHALLENGE` als nächste Aufforderung zurückgibt, ruft der Authentifizierungsablauf `CreateAuthChallenge` an. Der `CreateAuthChallenge`-Lambda-Trigger übergibt den nächsten Aufforderungstyp im Metadatenparameter der Aufforderung.
+ Die `VerifyAuthChallengeResponse`-Lambda-Funktion bewertet die Antwort und gibt einen booleschen Wert zurück, der angibt, ob die Antwort gültig war.

Ein benutzerdefinierter Authentifizierungsablauf kann auch eine Kombination aus integrierten Aufforderungen, z. B. SRP-Passwortverifizierung und MFA via SMS verwenden. Er kann auch benutzerdefinierte Aufforderungen wie CAPTCHA oder geheime Fragen verwenden.

### Verwenden der SRP-Passwortverifizierung im benutzerdefinierten Authentifizierungsablauf
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Wenn Sie SRP in einen benutzerdefinierten Authentifizierungsablauf einbeziehen möchten, müssen Sie mit SRP beginnen.
+ Um die SRP-Passwortüberprüfung in einem benutzerdefinierten Ablauf zu initiieren, ruft die App `InitiateAuth` mit `CUSTOM_AUTH` als `Authflow` auf. Die Anfrage Ihrer App enthält in der `AuthParameters`-Karte `SRP_A:` (den SRP-A-Wert) und `CHALLENGE_NAME: SRP_A`.
+ Der `CUSTOM_AUTH`-Ablauf ruft den `DefineAuthChallenge`-Lambda-Auslöser mit einer anfänglichen Sitzung von `challengeName: SRP_A` und `challengeResult: true` auf. Ihre Lambda-Funktion antwortet mit `challengeName: PASSWORD_VERIFIER`, `issueTokens: false` und `failAuthentication: false`.
+  Die App muss als Nächstes `RespondToAuthChallenge` mit `challengeName: PASSWORD_VERIFIER` und die anderen Parameter aufrufen, die für SRP in der `challengeResponses`-Zuordnung erforderlich sind. 
+ Wenn Amazon Cognito das Passwort verifiziert, wird `RespondToAuthChallenge` den `DefineAuthChallenge`-Lambda-Auslöser mit einer zweiten Sitzung von `challengeName: PASSWORD_VERIFIER` und `challengeResult: true` aufrufen. Nun kann der Lambda-Auslöser `DefineAuthChallenge` mit `challengeName: CUSTOM_CHALLENGE` reagieren, um die benutzerdefinierte Aufforderung zu starten.
+ Wenn MFA für einen Benutzer aktiviert ist und Amazon Cognito das Passwort überprüft hat, wird Ihr Benutzer aufgefordert, die Einrichtung oder Anmeldung mit MFA vorzunehmen.

**Anmerkung**  
Die von Amazon Cognito gehostete Anmeldewebseite kann [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md) nicht aktivieren.

Weitere Informationen zu den Lambda-Auslösern, einschließlich Beispielcode, finden Sie unter [Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern](cognito-user-pools-working-with-lambda-triggers.md).

## Ablauf der Authentifizierung für die Benutzermigration
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Ein Lambda-Auslöser für die Benutzermigration hilft bei der Migration von Benutzern aus einem Legacy-Benutzerverwaltungssystem in Ihren Benutzerpool. Wenn Sie den `USER_PASSWORD_AUTH`-Authentifizierungsablauf auswählen, müssen Benutzer ihre Passwörter während der Benutzermigration nicht zurücksetzen. Dieser Ablauf sendet während der Authentifizierung die Passwörter Ihrer Benutzer über eine verschlüsselte SSL-Verbindung an den Service.

Wenn Sie alle Ihre Benutzer migriert haben, wechseln Sie zu dem sichereren SRP-Ablauf. Der SRP-Ablauf sendet keine Passwörter über das Netzwerk.

Weitere Informationen zu Lambda-Auslösern finden Sie unter [Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern](cognito-user-pools-working-with-lambda-triggers.md).

Weitere Informationen über die Migration von Benutzern über einen Lambda-Auslöser finden Sie unter [Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration](cognito-user-pools-import-using-lambda.md).

# Autorisierungsmodelle für die API- und SDK-Authentifizierung
<a name="authentication-flows-public-server-side"></a>

Wenn Sie mit der Entwicklung Ihrer Anwendung mit Benutzerpool-Authentifizierung beginnen, müssen Sie sich für das API-Autorisierungsmodell entscheiden, das zu Ihrem Anwendungstyp passt. Ein Autorisierungsmodell ist ein System zur Autorisierung für Anfragen mit den Authentifizierungskomponenten in den API- und SDK-Integrationen der Amazon Cognito Cognito-Benutzerpools. Amazon Cognito hat drei Autorisierungsmodelle: IAM-autorisiert, öffentlich und tokenautorisiert.

Bei IAM-autorisierten Anfragen erfolgt die Autorisierung anhand einer Signatur anhand einer Reihe von AWS IAM-Anmeldeinformationen im Header einer Anfrage. `Authorization` Bei serverseitigen Anwendungen schützt diese Vorgehensweise Authentifizierungsvorgänge mit IAM-Autorisierung. Bei öffentlichen (nicht authentifizierten) Authentifizierungsanfragen ist keine Autorisierung erforderlich. Dies eignet sich für clientseitige Anwendungen, die an Benutzer verteilt werden. Bei tokenautorisierten Vorgängen, die in der Regel in Kombination mit öffentlichen Vorgängen implementiert werden, erfolgt die Autorisierung über ein Sitzungstoken oder ein Zugriffstoken, das im Header der `Authorization` Anfrage enthalten ist. Die Amazon Cognito Cognito-Authentifizierung erfordert in der Regel, dass Sie zwei oder mehr API-Operationen nacheinander implementieren. Die von Ihnen verwendeten API-Operationen hängen von den Eigenschaften Ihrer Anwendung ab. Öffentliche Clients, bei denen die Anwendung an Benutzer verteilt wird, verwenden öffentliche Operationen, bei denen Anmeldeanfragen keine Autorisierung erfordern. Mit Tokens autorisierte Operationen setzen die Benutzersitzungen in öffentlichen Anwendungen fort. Serverseitige Clients, bei denen die Anwendungslogik auf einem Remotesystem gehostet wird, schützen Authentifizierungsvorgänge mit IAM-Autorisierung für Anmeldeanfragen. Die folgenden API-Operationspaare und ihre entsprechenden SDK-Methoden sind den verfügbaren Autorisierungsmodellen zugeordnet.

Jeder öffentliche Authentifizierungsvorgang hat irgendein serverseitiges Äquivalent, zum Beispiel [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)und [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html). Während clientseitige Operationen vom Benutzer initiiert werden und eine Bestätigung erfordern, gehen serverseitige Operationen davon aus, dass die Änderung von einem Benutzerpooladministrator festgeschrieben wurde und die Änderungen sofort wirksam werden. In diesem Beispiel sendet Amazon Cognito eine Nachricht mit einem Bestätigungscode an den Benutzer, und das Zugriffstoken des Benutzers autorisiert eine [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)Anfrage, die den Code sendet. Die serverseitige Anwendung kann sofort den Wert eines beliebigen Attributs festlegen. Allerdings [gelten bei der Änderung des Werts von E-Mail-Adressen und Telefonnummern, wenn diese für die Anmeldung verwendet werden, besondere Überlegungen](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes).

Einen Vergleich der API-Authentifizierung und eine vollständige Liste der API-Operationen und ihrer Autorisierungsmodelle finden Sie unter. [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](#user-pools-API-operations)

------
#### [ Client-side (public) authentication ]

Im Folgenden finden Sie eine typische Abfolge von Anfragen in einer clientseitigen Anwendung

1. Bei der öffentlichen [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)Operation werden primäre Anmeldeinformationen wie ein Benutzername und ein Passwort übermittelt.

1. Der tokenautorisierte [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)Vorgang sendet ein *Sitzungstoken* aus der `InitiateAuth` Antwort und der Antwort auf eine Herausforderung, z. B. MFA. Die Autorisierung mit Sitzungstoken weist auf Anfragen hin, die Teil von Authentifizierungszyklen sind. not-yet-complete

1. Der durch das Token autorisierte [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)Vorgang sendet ein *Zugriffstoken* und führt den Schreibvorgang durch, bei dem ein Gerät, an das man sich erinnert, zum Benutzerprofil hinzugefügt wird. Die Autorisierung mit Zugriffstoken weist auf Anfragen hin, die sich auf Self-Service-Operationen von Benutzern beziehen, nachdem diese die Authentifizierung abgeschlossen haben.

Weitere Informationen erhalten Sie unter [Optionen für die clientseitige Authentifizierung](#amazon-cognito-user-pools-client-side-authentication-flow) und [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](#user-pools-API-operations).

------
#### [ Server-side authentication ]

Im Folgenden finden Sie eine typische Abfolge von Anfragen aus einem serverseitigen Vorgang. Jede Anfrage hat einen [AWS Signature Version 4-Autorisierungsheader](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html), der mit IAM-Computeranmeldeinformationen signiert ist, die an den Anwendungsserver ausgegeben wurden.

1. Der [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)Vorgang übermittelt primäre Anmeldeinformationen wie einen Benutzernamen und ein Passwort.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)Operation reicht die Antwort auf eine Herausforderung ein, zum Beispiel MFA.

1. Bei diesem [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)Vorgang wird der Geräteschlüssel aus der `AdminInitiateAuth` [Antwort auf den gespeicherten Wert gesetzt](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax).

Weitere Informationen erhalten Sie unter [Serverseitige Authentifizierungsoptionen](#amazon-cognito-user-pools-server-side-authentication-flow) und [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](#user-pools-API-operations).

------

Ein Benutzer führt die Authentifizierung durch Beantwortung aufeinanderfolgender Eingabeaufforderungen durch, bis die Authentifizierung entweder fehlschlägt oder Amazon Cognito Token für den Benutzer ausgestellt. Sie können diese Schritte mit Amazon Cognito in einem Prozess wiederholen, der verschiedene Aufforderungen zur Unterstützung benutzerdefinierter Authentifizierungsabläufe beinhaltet.

**Topics**
+ [Serverseitige Authentifizierungsoptionen](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [Optionen für die clientseitige Authentifizierung](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](#user-pools-API-operations)
+ [Liste der API-Operationen, gruppiert nach Autorisierungsmodell](#user-pool-apis-auth-unauth)

## Serverseitige Authentifizierungsoptionen
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

Webanwendungen und andere *serverseitige* Anwendungen implementieren die Authentifizierung auf einem Remoteserver, den ein Client in eine Remote-Display-Anwendung wie einen Browser oder eine SSH-Sitzung lädt. Serverseitige Anwendungen weisen in der Regel die folgenden Merkmale auf.
+ Sie sind in einer Anwendung integriert, die auf einem Server in Sprachen wie Java, Ruby oder Node.js installiert ist.
+ Sie stellen eine Verbindung zu [Benutzerpool-App-Clients](user-pool-settings-client-apps.md) her, die möglicherweise über ein geheimes Client-Geheimnis verfügen, die als *vertrauliche Clients* bezeichnet werden.
+ Sie haben Zugriff auf AWS Anmeldeinformationen.
+ Sie rufen die [verwaltete Anmeldung](cognito-user-pools-managed-login.md) zur Authentifizierung auf oder verwenden IAM-autorisierte Operationen in der Benutzerpools-API mit einem SDK. AWS 
+ Sie bedienen interne Kunden und können öffentliche Kunden bedienen.

Bei serverseitigen Vorgängen mit der Benutzerpools-API können Passwörter, Einmalkennwörter oder Hauptschlüssel als primärer Anmeldefaktor verwendet werden. Für serverseitige Apps ist die Benutzerpoolauthentifizierung mit der Authentifizierung für clientseitige Apps vergleichbar, mit Ausnahme von Folgendem:
+ Die serverseitige App stellt eine API-Anfrage. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Für diesen Vorgang sind AWS Anmeldeinformationen mit Berechtigungen wie `cognito-idp:AdminInitiateAuth` und `cognito-idp:AdminRespondToAuthChallenge` erforderlich. Der Vorgang gibt die erforderliche Abfrage oder das erforderliche Authentifizierungsergebnis zurück.
+ Wenn die Anwendung eine Anfrage erhält, stellt sie eine [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)API-Anfrage. Für den `AdminRespondToAuthChallenge` API-Vorgang sind auch AWS Anmeldeinformationen erforderlich.

Weitere Informationen zum Signieren von Amazon Cognito Cognito-API-Anfragen mit AWS Anmeldeinformationen finden Sie unter [Signaturprozess für Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) in der *AWS Allgemeinen Referenz.*

In der `AdminInitiateAuth`-Antwort `ChallengeParameters` enthält das Attribut `USER_ID_FOR_SRP` – sofern vorhanden – den tatsächlichen Benutzernamen des Benutzers und keinen Alias (wie etwa E-Mail-Adresse oder Telefonnummer). In dem Aufruf an `AdminRespondToAuthChallenge` in den `ChallengeResponses` müssen Sie diesen Benutzernamen im Parameter `USERNAME` übergeben. 

**Anmerkung**  
Da Backend-Admin-Implementierungen den Admin-Authentifizierungsablauf verwenden, unterstützt der Flow keine gespeicherten Geräte. Wenn Sie die Geräteverfolgung aktiviert haben, ist die Administratorauthentifizierung erfolgreich, aber jeder Aufruf zum Aktualisieren des Zugriffstokens schlägt fehl.

## Optionen für die clientseitige Authentifizierung
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

Mobile Apps und andere *clientseitige* Anwendungstypen werden auf den Geräten der Benutzer installiert und führen die Logik der Authentifizierung und der Benutzeroberfläche lokal aus. Sie weisen in der Regel die folgenden Eigenschaften auf.
+ Sie sind in Sprachen wie React Native, Flutter und Swift erstellt und auf Benutzergeräten bereitgestellt.
+ Sie stellen eine Verbindung zu [App-Clients](user-pool-settings-client-apps.md) für Benutzerpools her, die kein geheimes Client-Geheimnis haben, die als *öffentliche Clients* bezeichnet werden.
+ Sie haben keinen Zugriff auf AWS Anmeldeinformationen, die IAM-autorisierte API-Anfragen autorisieren würden.
+ Sie rufen die [verwaltete Anmeldung](cognito-user-pools-managed-login.md) zur Authentifizierung auf oder verwenden öffentliche und tokenautorisierte Operationen in der Benutzerpools-API mit einem SDK. AWS 
+ Sie bedienen öffentliche Kunden und ermöglichen es jedem, sich zu registrieren und anzumelden.

Bei clientseitigen Vorgängen mit der Benutzerpools-API können Passwörter, Einmalpasswörter oder Hauptschlüssel als primärer Anmeldefaktor verwendet werden. Der folgende Vorgang funktioniert für clientseitige Benutzer-Apps, die Sie mit oder dem erstellen. [AWS Amplify[AWS SDKs](https://aws.amazon.com/developer/tools/)](https://docs.amplify.aws/javascript/start/getting-started/)

1. Der Benutzer gibt den Benutzernamen und das Passwort in der App ein.

1. Die App ruft die `InitiateAuth`-Operation mit dem Benutzernamen und den SRP-Details (Secure Remote Password) des Benutzers auf.

   Diese API-Operation gibt die Authentifizierungsparameter zurück.
**Anmerkung**  
Die App generiert SRP-Details mit den integrierten Amazon Cognito SRP-Funktionen. AWS SDKs

1. Die App ruft die `RespondToAuthChallenge`-Operation auf. Wenn der Aufruf erfolgreich ist, gibt Amazon Cognito die Token des Benutzers zurück. Damit ist der Authentifizierungsablauf abgeschlossen.

   Wenn Amazon Cognito eine weitere Abfrage erfordert, gibt der Aufruf von `RespondToAuthChallenge` keine Token zurück. Stattdessen gibt der Aufruf eine Sitzung zurück.

1. Wenn `RespondToAuthChallenge` eine Sitzung zurückgibt, ruft die App `RespondToAuthChallenge` erneut auf, dieses Mal mit der Sitzung und der Abfrageantwort (z. B. MFA-Code).

## Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten
<a name="user-pools-API-operations"></a>

Amazon Cognito Cognito-Benutzerpools sind eine Kombination aus mehreren Authentifizierungstechnologien. Sie verlassen sich auf externe Identitätsanbieter (IdPs). Sie sind IdPs für Anwendungen vorgesehen, die die Authentifizierung mit OpenID Connect (OIDC) implementieren. SDKs Sie ermöglichen die Authentifizierung als Aussteller von JSON-Web-Tokens (JWTs), ähnlich der OIDC-Authentifizierung, jedoch in API-Methoden, die Teil von sind. AWS SDKs Sie können auch sichere Zugangspunkte für Ihre Anwendungen sein.

Für die Registrierung, Anmeldung und Verwaltung von Benutzern in Ihrem Benutzerpool haben Sie zwei Möglichkeiten. 

1. Ihre *verwalteten Anmeldeseiten* und die klassische *gehostete Benutzeroberfläche* umfassen die [benutzerinteraktiven Endpunkte für die verwaltete Anmeldung und die Verbundendpunkte](managed-login-endpoints.md)[, die IdP- und Rely-Party-Rollen](federation-endpoints.md) verwalten. Sie bilden ein Paket öffentlicher Webseiten, das Amazon Cognito aktiviert, wenn Sie [eine Domain für Ihren Benutzerpool auswählen](cognito-user-pools-assign-domain.md). Für einen schnellen Einstieg in die Authentifizierungs- und Autorisierungsfunktionen der Amazon Cognito Cognito-Benutzerpools, einschließlich Seiten für Registrierung, Anmeldung, Passwortverwaltung und Multi-Faktor-Authentifizierung (MFA), verwenden Sie die integrierte Benutzeroberfläche von Managed Login.

   Die anderen Endpunkte des Benutzerpools erleichtern die Authentifizierung bei externen Identitätsanbietern (). IdPs Die von ihnen erbrachten Dienstleistungen beinhalten Folgendes.

   1. Callback-Endpunkte von Dienstanbietern für authentifizierte Ansprüche von Ihnen, wie und. IdPs `saml2/idpresponse` `oauth2/idpresponse` Wenn Amazon Cognito ein Zwischendienstanbieter (SP) zwischen Ihrer App und Ihrem IdP ist, repräsentieren die Callback-Endpunkte den Service.

   1. Endpunkte, die Informationen über Ihre Umgebung bereitstellen, wie `oauth2/userInfo` und `/.well-known/jwks.json`. Ihre App verwendet diese Endpunkte, wenn sie Token verifiziert oder Benutzerprofildaten mit OIDC- oder 2.0-Entwicklerbibliotheken abruft. OAuth 

1. Die [Amazon Cognito Cognito-Benutzerpools-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) ist eine Reihe von Tools für Ihre Web- oder Mobil-App, mit der Sie Benutzer authentifizieren können, nachdem sie Anmeldeinformationen in Ihrem eigenen benutzerdefinierten Frontend gesammelt hat. Die API-Authentifizierung für Benutzerpools erzeugt die folgenden JSON-Web-Token.

   1. Ein Identitäts-Token mit überprüfbaren Attributansprüchen Ihres Benutzers.

   1. Ein Zugriffs-Token, das Ihren Benutzer autorisiert, über Token autorisierte API-Anfragen für einen [AWS -Service-Endpunkt zu erstellen](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html).
**Anmerkung**  
Zugriffstoken aus der Benutzerpool-API-Authentifizierung enthalten standardmäßig nur den `aws.cognito.signin.user.admin`-Bereich. Um ein Zugriffstoken mit zusätzlichen Bereichen zu generieren, um beispielsweise eine Anfrage an eine Drittanbieter-API zu autorisieren, fragen Sie bei der Authentifizierung über Ihre Benutzerpool-Endpunkte Bereiche an oder fügen Sie in einer [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md) benutzerdefinierte Bereiche hinzu. Die Anpassung des Zugriffstokens erhöht Ihre Rechnung um zusätzliche Kosten. AWS 

   1. Ein Aktualisierungstoken, das Anfragen nach neuen IDs und Zugriffstoken autorisiert und die Eigenschaften der Benutzeridentität und der Zugriffskontrolle aktualisiert.

Sie können einen Verbundbenutzer, der sich normalerweise über die Benutzerpool-Endpunkte anmelden würde, mit einem Benutzer verknüpfen, dessen Profil in Ihrem Benutzerpool *lokal* ist. Ein lokaler Benutzer existiert ausschließlich in Ihrem Benutzerpool-Verzeichnis ohne Verbund über einen externen IdP. Wenn Sie ihre föderierte Identität in einer [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)API-Anfrage mit einem lokalen Benutzer verknüpfen, kann sich dieser mit der Benutzerpools-API anmelden. Weitere Informationen finden Sie unter [Verknüpfen von Verbundbenutzern mit einem vorhandenen Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md).

Die Amazon-Cognito-Benutzerpool-API hat zwei Verwendungszwecke.

1. Sie erstellt und konfiguriert die Ressourcen für Ihre Amazon-Cognito-Benutzerpools. Sie können beispielsweise Benutzerpools erstellen, AWS Lambda Auslöser hinzufügen und die Benutzerpool-Domain konfigurieren, die Ihre verwalteten Anmeldeseiten hostet.

1. Es führt Registrierungs-, Anmelde- und andere Benutzervorgänge für lokale und verknüpfte Benutzer durch.

**Beispielszenario unter Verwendung der Amazon-Cognito-Benutzerpool-API**

1. Ihr Benutzer wählt die Schaltfläche zum Erstellen eines Kontos aus, die Sie in Ihrer App erstellt haben. Der Benutzer gibt eine E-Mail-Adresse und ein Passwort ein.

1. Ihre App sendet eine [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API-Anfrage und erstellt einen neuen Benutzer in Ihrem Benutzerpool.

1. Ihre App fordert den Benutzer zur Eingabe eines E-Mail-Bestätigungscodes auf. Der Benutzer gibt den Code ein, den er in einer E-Mail-Nachricht erhalten hat.

1. Ihre App sendet eine [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API-Anfrage mit dem Bestätigungscode des Benutzers.

1. Ihre App fordert den Benutzer zur Eingabe seines Benutzernamens und Passworts auf und der Benutzer gibt die Informationen ein.

1. Ihre App sendet eine [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Anfrage und speichert ein ID-Token, ein Zugriffstoken und ein Aktualisierungstoken. Ihre App ruft OIDC-Bibliotheken auf, um die Tokens Ihres Benutzers zu verwalten und eine dauerhafte Sitzung für diesen Benutzer zu unterhalten.

In der Amazon-Cognito-Benutzerpool-API können Sie keine Benutzer anmelden, die über einen IdP verbunden sind. Diese Benutzer müssen Sie über Ihre Benutzerpool-Endpunkte authentifizieren. Weitere Informationen zu den Benutzerpool-Endpunkten, die eine verwaltete Anmeldung beinhalten, finden Sie unter[Benutzerpool-Endpunkte und Referenz für verwaltete Logins](cognito-userpools-server-contract-reference.md).

Ihre Verbundbenutzer können mit der verwalteten Anmeldung beginnen und ihren IdP auswählen, oder Sie können die verwaltete Anmeldung überspringen und Ihre Benutzer zur Anmeldung direkt an Ihren IdP senden. Wenn Ihre API-Anforderung an den [Autorisieren des Endpunkts](authorization-endpoint.md) einen IdP-Parameter enthält, leitet Amazon Cognito Ihren Benutzer im Hintergrund auf die Anmeldeseite des IdP weiter.

**Beispielszenario mit verwalteten Anmeldeseiten**

1. Ihr Benutzer wählt die Schaltfläche zum Erstellen eines Kontos aus, die Sie in Ihrer App erstellt haben.

1. Bei der verwalteten Anmeldung wird Ihrem Benutzer eine Liste der Anbieter für soziale Identitäten angezeigt, für die Sie Entwickleranmeldedaten registriert haben. Der Benutzer entscheidet sich für Apple.

1. Ihre App leitet eine Anforderung an den [Autorisieren des Endpunkts](authorization-endpoint.md) mit dem Anbieternamen `SignInWithApple` ein.

1. Der Browser Ihres Benutzers öffnet die Apple-Authentifizierungsseite. Ihr Benutzer meldet sich an und autorisiert Amazon Cognito, seine Profilinformationen zu lesen.

1. Amazon Cognito bestätigt das Apple-Zugriffstoken und fragt das Apple-Profil des Benutzers ab.

1. Der Benutzer präsentiert Ihrer App einen Amazon-Cognito-Autorisierungscode.

1. Die OIDC-Bibliothek in Ihrer Anwendung tauscht den Autorisierungscode mit dem aus [Token-Endpunkt](token-endpoint.md) und speichert ein vom Benutzerpool ausgestelltes ID-Token, Zugriffstoken und Aktualisierungstoken. Ihre App verwendet OIDC-Bibliotheken, um die Token Ihrer Benutzer zu verwalten und eine dauerhafte Sitzung für diesen Benutzer aufrechtzuerhalten.

Die Benutzerpools-API und die verwalteten Anmeldeseiten unterstützen eine Vielzahl von Szenarien, die in diesem Handbuch beschrieben werden. In den folgenden Abschnitten erörtern wir, wie sich die Benutzerpool-API weiter in Klassen unterteilt, die Ihre Anforderungen in Bezug auf die Anmeldung, Registrierung und Ressourcenverwaltung unterstützen.

## Liste der API-Operationen, gruppiert nach Autorisierungsmodell
<a name="user-pool-apis-auth-unauth"></a>

Die Amazon-Cognito-Benutzerpool-API, die eine Schnittstelle für die Ressourcenverwaltung sowie eine Authentifizierungs- und Autorisierungsschnittstelle für Benutzer bildet, kombiniert die folgenden Autorisierungsmodelle bei ihren Operationen. Je nach API-Operation müssen Sie möglicherweise eine Autorisierung mit IAM-Anmeldeinformationen, einem Zugriffstoken, einem Sitzungstoken, einem Client-Schlüssel oder einer Kombination davon vornehmen. Für viele Operationen zur Authentifizierung und Autorisierung von Benutzern haben Sie die Wahl zwischen authentifizierten und nicht authentifizierten Versionen der Anforderung. Nicht authentifizierte Operationen sind eine bewährte Sicherheitsmethode für Apps, die Sie an Ihre Benutzer verteilen, z. B. mobile Apps. Dabei müssen Sie keine geheimen Schlüssel in Ihren Code aufnehmen.

Sie können Berechtigungen in IAM-Richtlinien nur für [Von IAM autorisierte Verwaltungsvorgänge](#user-pool-apis-auth-unauth-sigv4-management) und [IAM-autorisierte Benutzeroperationen](#user-pool-apis-auth-unauth-sigv4-user) zuweisen.

### Von IAM autorisierte Verwaltungsvorgänge
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

Von IAM autorisierte Verwaltungsvorgänge ändern und zeigen Ihren Benutzerpool und die App-Client-Konfiguration an, wie Sie es in der tun würden. AWS-Managementkonsole

Um beispielsweise Ihren Benutzerpool in einer [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Anfrage zu ändern, müssen Sie AWS Anmeldeinformationen und IAM-Berechtigungen angeben, um die Ressource zu aktualisieren.

Um diese Anfragen im AWS Command Line Interface (AWS CLI) oder einem AWS SDK zu autorisieren, konfigurieren Sie Ihre Umgebung mit Umgebungsvariablen oder einer Client-Konfiguration, die Ihrer Anfrage IAM-Anmeldeinformationen hinzufügt. Weitere Informationen finden Sie unter [Zugreifen AWS mit Ihren AWS Anmeldeinformationen](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) in der. *Allgemeine AWS-Referenz* Sie können auch Anforderungen direkt an die [Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) für die Benutzerpool-API von Amazon Cognito senden. Sie müssen diese Anfragen mit AWS Anmeldeinformationen autorisieren oder *signieren*, die Sie in die Kopfzeile Ihrer Anfrage einbetten. Weitere Informationen finden Sie unter [AWS API-Anfragen signieren](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).


| Von IAM autorisierte Verwaltungsvorgänge | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [Holen CSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [Holen UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [Set UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### IAM-autorisierte Benutzeroperationen
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

IAM-autorisierte Benutzeroperationen: Registrierung, Anmeldung, Verwaltung der Anmeldeinformationen, Änderung und Anzeige Ihrer Benutzer. 

Sie können beispielsweise eine serverseitige Anwendungsebene haben, die ein Web-Frontend unterstützt. Ihre serverseitige App ist ein OAuth vertraulicher Client, dem Sie privilegierten Zugriff auf Ihre Amazon Cognito Cognito-Ressourcen anvertrauen. Um einen Benutzer in der App zu registrieren, kann Ihr Server AWS Anmeldeinformationen in eine [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API-Anfrage aufnehmen. Weitere Informationen zu OAuth Clienttypen finden Sie unter [Clienttypen](https://www.rfc-editor.org/rfc/rfc6749#section-2.1) in *The OAuth 2.0 Authorization Framework*.

Um diese Anfragen im AWS CLI oder einem AWS SDK zu autorisieren, konfigurieren Sie Ihre serverseitige App-Umgebung mit Umgebungsvariablen oder einer Client-Konfiguration, die Ihrer Anfrage IAM-Anmeldeinformationen hinzufügt. Weitere Informationen finden Sie unter [Zugreifen AWS mit Ihren AWS Anmeldeinformationen](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) in der. *Allgemeine AWS-Referenz* Sie können auch Anforderungen direkt an die [Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) für die Benutzerpool-API von Amazon Cognito senden. Sie müssen diese Anfragen mit AWS Anmeldeinformationen autorisieren oder *signieren*, die Sie in die Kopfzeile Ihrer Anfrage einbetten. Weitere Informationen finden Sie unter [AWS API-Anfragen signieren](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Wenn Ihr App-Client über einen geheimen Client-Schlüssel verfügt, müssen Sie Ihre IAM-Anmeldeinformationen und, je nach Operation, den Parameter `SecretHash` oder den Wert `SECRET_HASH` in `AuthParameters` angeben. Weitere Informationen finden Sie unter [Berechnen von Werten für geheime Hashes](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| IAM-autorisierte Benutzeroperationen | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### Nicht authentifizierte Benutzeroperationen
<a name="user-pool-apis-auth-unauth-unauth"></a>

Nicht authentifizierte Benutzeroperationen können zur Registrierung und Anmeldung Ihrer Benutzer sowie zum Zurücksetzen des Passworts der Benutzer genutzt werden. Verwenden Sie nicht authentifizierte oder *öffentliche* API-Operationen, wenn Sie möchten, dass sich jeder Internetbenutzer bei Ihrer App registrieren und anmelden kann.

Um beispielsweise einen Benutzer in Ihrer App zu registrieren, können Sie einen OAuth öffentlichen Client bereitstellen, der keinen privilegierten Zugriff auf geheime Daten gewährt. Sie können diesen Benutzer mit der API-Operation ohne Authentifizierung registrieren. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Um diese Anfragen in einem öffentlichen Client zu senden, den Sie mit einem AWS SDK entwickelt haben, müssen Sie keine Anmeldeinformationen konfigurieren. Sie können Anforderungen auch direkt an die [Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) für die Benutzerpool-API von Amazon Cognito ohne zusätzliche Autorisierung senden.

Wenn Ihr App-Client über einen geheimen Client-Schlüssel verfügt, müssen Sie je nach Operation den Parameter `SecretHash` oder den Wert `SECRET_HASH` in `AuthParameters` angeben. Weitere Informationen finden Sie unter [Berechnen von Werten für geheime Hashes](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Nicht authentifizierte Benutzeroperationen | 
| --- |
| [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) | 
| [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | 
| [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) | 
| [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### Über Token autorisierte Benutzeroperationen
<a name="user-pool-apis-auth-unauth-token-auth"></a>

Über Token autorisierte Benutzeroperationen können zum Abmelden, Ändern und Anzeigen Ihrer Benutzer sowie zur Verwaltung der Anmeldeinformationen für Ihre Benutzer verwendet werden, nachdem sich diese angemeldet bzw. den Anmeldevorgang gestartet haben. Verwenden Sie über Token autorisierte API-Operationen, wenn Sie keine geheimen Schlüssel in Ihrer App verteilen und Anforderungen mit den eigenen Anmeldeinformationen des Benutzers autorisieren möchten. Wenn Ihr Benutzer die Anmeldung abgeschlossen hat, müssen Sie seine über Token autorisierte API-Anforderung mit einem Zugriffstoken autorisieren. Wenn sich der Benutzer gerade in einem Anmeldevorgang befindet, müssen Sie seine über Token autorisierte API-Anforderung mit einem Sitzungstoken autorisieren, das Amazon Cognito in der Antwort auf die vorherige Anforderung zurückgegeben hat.

Vielleicht möchten Sie beispielsweise in einem öffentlichen Client das Profil eines Benutzers so aktualisieren, dass der Schreibzugriff auf das eigene Profil des Benutzers beschränkt ist. Um dieses Update durchzuführen, kann Ihr Client das Zugriffstoken des Benutzers in eine [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API-Anfrage aufnehmen.

Um diese Anfragen in einem öffentlichen Client zu senden, den Sie mit einem AWS SDK entwickelt haben, müssen Sie keine Anmeldeinformationen konfigurieren. Fügen Sie Ihrer Anforderung einen Parameter `AccessToken` oder `Session` hinzu. Sie können auch Anforderungen direkt an die [Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) für die Benutzerpool-API von Amazon Cognito senden. Um eine Anforderung an einen Service-Endpunkt zu autorisieren, fügen Sie das Zugriffs- oder Sitzungstoken in den POST-Text Ihrer Anforderung ein.

Um eine API-Anforderung für eine über Token autorisierte Operation zu signieren, fügen Sie das Zugriffs-Token als `Authorization`-Header in die Anforderung ein, und zwar im Format `Bearer <Base64-encoded access token>`.


| Über Token autorisierte Benutzeroperationen | AccessToken | Sitzung | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` und verwenden `GetTokensFromRefreshToken` Sie Aktualisierungstoken als Autorisierungsparameter. Das Aktualisierungstoken dient als Autorisierungstoken und als Zielressource.

# Benutzerpool-Anmeldung mit externen Identitätsanbietern
<a name="cognito-user-pools-identity-federation"></a>

Ihre App-Benutzer können sich entweder direkt über einen Benutzerpool anmelden oder sich über einen externen Identitätsanbieter (IdP) zusammenschließen. Der Benutzerpool verwaltet den Aufwand für die Verwaltung der Token, die bei der Anmeldung in sozialen Netzwerken über Facebook, Google, Amazon und Apple sowie von OpenID Connect (OIDC) und SAML zurückgegeben werden. IdPs Mit der integrierten gehosteten Weboberfläche bietet Amazon Cognito die Token-Handhabung und -Verwaltung für authentifizierte Benutzer aller Art. IdPs Auf diese Weise können Ihre Backend-Systeme auf einen Satz von Benutzerpool-Token standardisiert werden.

## Funktionsweise der Verbundanmeldung in Amazon-Cognito-Benutzerpools
<a name="cognito-user-pools-identity-federation-how-it-works"></a>

Die Anmeldung über einen Drittanbieter (Verbund) in Amazon-Cognito-Benutzerpools wird unterstützt. Diese Funktion ist unabhängig von Verbund über Amazon-Cognito-Identitätspools (Verbundidentitäten).

![\[Authentifizierung mit sozialer Anmeldung – Übersicht\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-cup.png)


Amazon Cognito ist ein Benutzerverzeichnis und ein OAuth 2.0-Identitätsanbieter (IdP). Wenn Sie *lokale Benutzer* im Amazon-Cognito-Verzeichnis anmelden, ist Ihr Benutzerpool ein IDP für Ihre App. Ein lokaler Benutzer existiert ausschließlich in Ihrem Benutzerpool-Verzeichnis ohne Verbund über einen externen IdP.

Wenn Sie Amazon Cognito mit Social, SAML oder OpenID Connect (OIDC) verbinden IdPs, fungiert Ihr Benutzerpool als Brücke zwischen mehreren Dienstanbietern und Ihrer App. Für Ihren IDP ist Amazon Cognito ein Serviceanbieter (SP). Sie IdPs übergeben ein OIDC-ID-Token oder eine SAML-Assertion an Amazon Cognito. Amazon Cognito liest die Ansprüche über Ihren Benutzer im Token oder in der Assertion und ordnet diese Ansprüche einem neuen Benutzerprofil in Ihrem Benutzerpool-Verzeichnis zu.

Amazon Cognito erstellt dann ein Benutzerprofil für Ihren Verbundbenutzer in seinem eigenen Verzeichnis. Amazon Cognito fügt Ihrem Benutzer basierend auf den Ansprüchen Ihres IDP Attribute hinzu und bei OIDC- und Social-Identitätsanbietern außerdem einen IDP-betriebenen öffentlichen `userinfo`-Endpunkt. Die Attribute Ihres Benutzers ändern sich in Ihrem Benutzerpool, wenn sich ein zugeordnetes IDP-Attribut ändert. Sie können auch weitere Attribute hinzufügen, die unabhängig von denen des IDP sind.

Nachdem Amazon Cognito ein Profil für Ihren Verbundbenutzer erstellt hat, ändert es seine Funktion und präsentiert sich als IDP für Ihre App, die jetzt der SP ist. Amazon Cognito ist eine Kombination aus OIDC und OAuth 2.0 IdP. Es generiert Zugriffstoken, ID-Token und Aktualisierungs-Token. Weitere Informationen über Token finden Sie unter [JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

Sie müssen eine App entwickeln, die in Amazon Cognito integriert ist, um Ihre Benutzer zu authentifizieren und zu autorisieren, unabhängig davon, ob es sich um Verbund- oder lokale Benutzer handelt.

## Die Verantwortlichkeiten einer App als SP für Amazon Cognito
<a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a><a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a>

**Die Informationen in den Token überprüfen und verarbeiten**  
In den meisten Szenarien leitet Amazon Cognito Ihren authentifizierten Benutzer an eine App-URL um, die es mit einem Autorisierungscode anhängt. Ihre App [tauscht den Code](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html) durch Zugriffs-, ID- und Aktualisierungs-Token aus. Dann muss sie [die Gültigkeit der Token überprüfen](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html) und basierend auf den Ansprüchen in den Token Informationen an Ihren Benutzer senden.

**Antworten auf Authentifizierungsereignisse mit API-Anfragen von Amazon-Cognito**  
Ihre App muss in der [API für Amazon-Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) und in die [ Authentifizierungs-API-Endpunkte](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) integriert sein. Die Authentifizierungs-API meldet Ihren Benutzer an und ab und verwaltet Token. Die Benutzerpool-API verfügt über eine Vielzahl von Operationen, die Ihren Benutzerpool, Ihre Benutzer und die Sicherheit Ihrer Authentifizierungsumgebung verwalten. Ihre App muss wissen, was als Nächstes zu tun ist, wenn sie eine Antwort von Amazon Cognito erhält.

## Wissenswertes über die Anmeldung von Drittanbietern bei Amazon-Cognito-Benutzerpools
<a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a><a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a>
+ Wenn Sie möchten, dass sich Ihre Benutzer bei Verbundanbietern anmelden, müssen Sie eine Domäne auswählen. [Dadurch werden die Seiten für die verwaltete Anmeldung eingerichtet.](cognito-userpools-server-contract-reference.md) Weitere Informationen finden Sie unter [Verwenden Sie Ihre eigene Domain für die verwaltete Anmeldung](cognito-user-pools-add-custom-domain.md).
+ Sie können Verbundbenutzer nicht mit API-Operationen wie [ InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)anmelden. Verbundbenutzer können sich nur mit dem [Login-Endpunkt](login-endpoint.md) oder dem [Autorisieren des Endpunkts](authorization-endpoint.md) anmelden.
+ [Autorisieren des Endpunkts](authorization-endpoint.md) ist ein *Umleitungsendpunkt*. Wenn Sie in Ihrer Anfrage einen `identity_provider` Parameter `idp_identifier` oder angeben, leitet er unbemerkt an Ihren IdP weiter und umgeht so die verwaltete Anmeldung. Andernfalls wird es zur verwalteten Anmeldung weitergeleitet. [Login-Endpunkt](login-endpoint.md)
+ Wenn die verwaltete Anmeldung eine Sitzung an einen föderierten IdP weiterleitet, nimmt Amazon Cognito den `user-agent` Header `Amazon/Cognito` in die Anfrage auf.
+ Amazon Cognito leitet das Attribut `username` für ein Verbundbenutzerprofil aus einer Kombination aus einer festen Kennung und dem Namen Ihres IDP ab. Wenn Sie einen Benutzernamen generieren möchten, der Ihren benutzerdefinierten Anforderungen entspricht, erstellen Sie eine Zuordnung zum Attribut `preferred_username`. Weitere Informationen finden Sie unter [Wissenswertes über Mappings](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping-requirements).

  Beispiel: `MyIDP_bob@example.com`
+ Amazon Cognito erstellt eine [Benutzergruppe](cognito-user-pools-user-groups.md) für jeden OIDC und jeden sozialen IdP SAMl, den Sie Ihrem Benutzerpool hinzufügen. Der Name der Gruppe hat das Format`[user pool ID]_[IdP name]`, zum Beispiel oder. `us-east-1_EXAMPLE_MYSSO` `us-east-1_EXAMPLE_Google` Jedes eindeutige automatisch generierte IdP-Benutzerprofil wird automatisch zu dieser Gruppe hinzugefügt. [Verknüpfte Benutzer](cognito-user-pools-identity-federation-consolidate-users.md) werden dieser Gruppe nicht automatisch hinzugefügt, aber Sie können ihre Profile der Gruppe in einem separaten Prozess hinzufügen.
+ Amazon Cognito zeichnet Informationen über die Identität Ihres Verbundbenutzers in einem Attribut und einen Anspruch im ID-Token, mit den Namen `identities`, auf. Dieser Anspruch enthält den Anbieter Ihres Benutzers und seine eindeutige ID vom Anbieter. Sie können das Attribut `identities` nicht direkt in einem Benutzerprofil ändern. Weitere Informationen zur Verknüpfung eines Verbundbenutzers finden Sie unter [Verknüpfen von Verbundbenutzern mit einem vorhandenen Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md).
+ Wenn Sie Ihren IdP in einer [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API-Anfrage aktualisieren, kann es bis zu einer Minute dauern, bis Ihre Änderungen in der verwalteten Anmeldung angezeigt werden.
+ Amazon Cognito unterstützt bis zu 20 HTTP-Umleitungen zwischen Amazon Cognito und Ihrem IDP.
+ Wenn sich Ihr Benutzer mit der verwalteten Anmeldung anmeldet, speichert sein Browser ein verschlüsseltes Anmeldesitzungscookie, das den Client und den Anbieter aufzeichnet, mit dem er sich angemeldet hat. Wenn sie erneut versuchen, sich mit denselben Parametern anzumelden, verwendet die verwaltete Anmeldung jede noch *nicht abgelaufene* bestehende Sitzung wieder, und der Benutzer authentifiziert sich, ohne erneut Anmeldeinformationen einzugeben. Wenn sich Ihr Benutzer erneut mit einem anderen IdP anmeldet, einschließlich eines Wechsels zu oder von der lokalen Benutzerpool-Anmeldung, muss er Anmeldeinformationen angeben und eine neue Anmeldesitzung erstellen.

  Sie können einen beliebigen Benutzerpool einem IdPs beliebigen App-Client zuweisen, und Benutzer können sich nur mit einem IdP anmelden, den Sie ihrem App-Client zugewiesen haben.

**Topics**
+ [Funktionsweise der Verbundanmeldung in Amazon-Cognito-Benutzerpools](#cognito-user-pools-identity-federation-how-it-works)
+ [Die Verantwortlichkeiten einer App als SP für Amazon Cognito](#cognito-user-pools-identity-federation-how-it-works-app-responsibilities)
+ [Wissenswertes über die Anmeldung von Drittanbietern bei Amazon-Cognito-Benutzerpools](#cognito-user-pools-identity-federation-how-it-works-considerations)
+ [Konfigurieren von Identitätsanbietern für Ihren Benutzerpool.](cognito-user-pools-identity-provider.md)
+ [Verwenden von Anbietern für soziale Identitäten mit einem Benutzerpool](cognito-user-pools-social-idp.md)
+ [Verwendung von SAML-Identitätsanbietern mit einem Benutzerpool](cognito-user-pools-saml-idp.md)
+ [Verwendung von OIDC-Identitätsanbietern mit einem Benutzerpool](cognito-user-pools-oidc-idp.md)
+ [Zuordnung von IdP-Attributen zu Profilen und Tokens](cognito-user-pools-specifying-attribute-mapping.md)
+ [Verknüpfen von Verbundbenutzern mit einem vorhandenen Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md)

# Konfigurieren von Identitätsanbietern für Ihren Benutzerpool.
<a name="cognito-user-pools-identity-provider"></a>

Mit Benutzerpools können Sie die Anmeldung über eine Vielzahl von externen Identitätsanbietern () IdPs implementieren. Dieser Abschnitt des Handbuchs enthält Anweisungen zur Einrichtung dieser Identitätsanbieter mit Ihrem Benutzerpool in der Amazon Cognito Cognito-Konsole. Alternativ können Sie die Benutzerpools-API und ein AWS SDK verwenden, um Benutzerpool-Identitätsanbieter programmgesteuert hinzuzufügen. Weitere Informationen finden Sie unter [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html).

Zu den unterstützten Identitätsanbieter-Optionen gehören soziale Anbieter wie Facebook, Google und Amazon sowie OpenID Connect (OIDC) und SAML 2.0-Anbieter. Bevor Sie beginnen, richten Sie sich Administratoranmeldedaten für Ihren IdP ein. Für jeden Anbietertyp müssen Sie Ihre Anwendung registrieren, die erforderlichen Anmeldeinformationen abrufen und dann die Anbieterdetails in Ihrem Benutzerpool konfigurieren. Ihre Benutzer können sich dann mit ihren bestehenden Konten bei den verbundenen Identitätsanbietern bei Ihrer Anwendung registrieren und anmelden.

Das Menü **Soziale und externe Anbieter** unter **Authentifizierung** fügt den Benutzerpool hinzu und aktualisiert ihn IdPs. Weitere Informationen finden Sie unter [Benutzerpool-Anmeldung mit externen Identitätsanbietern](cognito-user-pools-identity-federation.md).

**Topics**
+ [Einrichten der Benutzeranmeldung mit einem sozialen IdP](#cognito-user-pools-facebook-provider)
+ [Einrichten der Benutzeranmeldung mit einem OIDC IdP](#cognito-user-pools-oidc-providers)
+ [Einrichten der Benutzeranmeldung mit einem SAML IdP](#cognito-user-pools-saml-providers)

## Einrichten der Benutzeranmeldung mit einem sozialen IdP
<a name="cognito-user-pools-facebook-provider"></a>

Sie können einen Verbund für Amazon-Cognito-Benutzerpools verwenden, um eine Integration von sozialen Identitäts-Anbietern vorzunehmen, wie Facebook, Google oder Login with Amazon.

Um einen Social Identity-Anbieter hinzuzufügen, erstellen Sie zunächst ein Entwickler-Konto bei dem Identitätsanbieter. Sobald Sie Ihr Entwicklerkonto haben, registrieren Sie Ihre Anwendung beim Identitätsanbieter. Der Identitätsanbieter erstellt eine App-ID und einen geheimen App-Schlüssel für Ihre Anwendung, und Sie konfigurieren diese Werte in Ihrem Amazon-Cognito-Benutzerpool.
+ [Google Identity Platform](https://developers.google.com/identity/)
+ [Facebook for Developers](https://developers.facebook.com/docs/facebook-login)
+ [Login mit Amazon](https://developer.amazon.com/login-with-amazon)
+ [Mit Apple anmelden](https://developer.apple.com/sign-in-with-apple/)

**So integrieren Sie die Benutzeranmeldung mit einem sozialen IdP**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie im Navigationsbereich erst **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie das Menü **Soziale Netzwerke und externe Anbieter**.

1. Wählen Sie **Add an identity provider** (Identitätsanbieter hinzufügen) aus oder den **Facebook**-, **Google**-, **Amazon**- oder **Apple**-Identitätsanbieter, den Sie konfiguriert haben. Suchen Sie danach nach **Identity provider information** (Informationen zu Identitätsanbietern) und wählen Sie **Edit** (Bearbeiten) aus. Weitere Informationen zum Hinzufügen eines Social-Identity-Anbieters finden Sie unter [Verwenden von Anbietern für soziale Identitäten mit einem Benutzerpool](cognito-user-pools-social-idp.md).

1. Geben Sie die Informationen Ihres Social-Identity-Anbieters ein, indem Sie je nach Wahl des IdP einen der folgenden Schritte ausführen:  
**Für Facebook, Google und Login with Amazon:**  
Geben Sie die App-ID und den geheimen App-Schlüssel ein, den Sie beim Erstellen Ihrer Client-App erhalten haben.  
**Mit Apple anmelden**  
Geben Sie die Service-ID ein, die Sie bei Apple angegeben haben, sowie die Team-ID, Schlüssel-ID und den privaten Schlüssel, den Sie beim Erstellen Ihres App-Clients erhalten haben.

1. Für **Authorize scopes** (Bereiche autorisieren) geben Sie den Namen der Social-Identity-Anbieterbereiche ein, die Sie Benutzerpool-Attributen zuordnen möchten. Bereiche definieren, auf welche Benutzerattribute (z. B. Name und E-Mail-Adresse) Sie mit Ihrer Anwendung zugreifen möchten. Verwenden Sie bei der Eingabe von Bereichen die folgenden Richtlinien basierend auf Ihrer Wahl des IdP:
   + **Facebook** – Trennen Sie Bereiche durch Kommas. Beispiel:

     `public_profile, email`
   + **Google, Login with Amazon und Mit Apple anmelden** – Trennen Sie Bereiche durch Leerzeichen. Beispiel:
     + **Google:** `profile email openid`
     + **Login with Amazon:** `profile postal_code`
     + **Mit Apple anmelden:** `name email`
**Anmerkung**  
Verwenden Sie für „Mit Apple anmelden“ (Konsole) die Kontrollkästchen zur Auswahl des Bereichs.

1. Wählen Sie **Änderungen speichern ** aus.

1. Wählen Sie im Menü **App-Clients** einen App-Client aus der Liste aus und wählen Sie dann **Bearbeiten** aus. Fügen Sie unter **Identity providers** (Identitätsanbieter) den neuen Social-Identity-Anbieter zum App-Client hinzu.

1. Wählen Sie **Änderungen speichern ** aus.

Weitere Informationen zu sozialen IdPs Netzwerken finden Sie unter[Verwenden von Anbietern für soziale Identitäten mit einem Benutzerpool](cognito-user-pools-social-idp.md).

## Einrichten der Benutzeranmeldung mit einem OIDC IdP
<a name="cognito-user-pools-oidc-providers"></a>

Sie können die Benutzeranmeldung in einen OpenID Connect (OIDC)-Identitätsanbieter integrieren, z. B. Salesforce oder Ping Identity.

**So fügen Sie einem Benutzerpool einen OIDC-Anbieter hinzu**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus dem Navigationsmenü 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ü **Soziale Netzwerke und externe Anbieter** und wählen Sie **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie einen **OpenID-Connect-Identitätsanbieter** aus.

1. Geben Sie einen eindeutigen Namen in **Provider name** (Anbietername) ein.

1. Geben Sie die Kunden-ID, die Sie von Ihrem Anbieter erhalten haben, in **Client ID** (Client-ID) ein.

1. Geben Sie das Kundengeheimnis, das Sie von Ihrem Anbieter erhalten haben, in **Client secret** (Client-Geheimnis) ein.

1. Geben Sie **Authorized scopes** (Autorisierte Bereiche) für diesen Anbieter ein. Bereiche definieren, welche Gruppen von Benutzerattributen (z. B. `name` und `email`) Ihre Anwendung von Ihrem Anbieter anfordert. Bereiche müssen gemäß der [OAuth 2.0-Spezifikation](https://tools.ietf.org/html/rfc6749#section-3.3) durch Leerzeichen getrennt werden.

   Ihr Benutzer wird aufgefordert, dem Versand dieser Attribute an Ihre Anwendung zuzustimmen.

1. Wählen Sie eine **Attributanforderungsmethode** aus, um Amazon Cognito die HTTP-Methode (entweder GET oder POST) bereitzustellen, mit der Amazon Cognito die Details des Benutzers vom Endpunkt **userInfo** abruft, der von Ihrem Anbieter betrieben wird.

1. Wählen Sie eine **Einrichtungsmethode**, um OpenID-Connect-Endpunkte abzurufen, entweder durch **Auto fill through issuer URL** (Automatisches Ausfüllen durch Aussteller-URL) oder **Manual input** (Manuelle Eingabe). Verwenden **Sie das automatische Ausfüllen der Aussteller-URL**, wenn Ihr Anbieter über einen öffentlichen `.well-known/openid-configuration` Endpunkt verfügt, an dem Amazon Cognito die URLs Endpunkte`authorization`, `token``userInfo`, und `jwks_uri` abrufen kann.

1. Geben Sie die Aussteller-URL oder`authorization`, `token``userInfo`, und den `jwks_uri` Endpunkt URLs Ihres IdP ein.
**Anmerkung**  
Sie können nur die Portnummern 443 und 80 mit Erkennung verwenden, die automatisch ausgefüllt und manuell eingegeben wurden URLs. Benutzeranmeldungen schlagen fehl, wenn Ihr OIDC-Anbieter nicht standardmäßige TCP-Ports verwendet.  
Die Aussteller-URL muss mit `https://` beginnen und darf nicht mit dem Zeichen `/` enden. Beispielsweise verwendet Salesforce diese URL:  
`https://login.salesforce.com`   
Das mit Ihrer Aussteller-URL verknüpfte `openid-configuration` Dokument muss HTTPS URLs für die folgenden Werte enthalten:`authorization_endpoint`, `token_endpoint``userinfo_endpoint`, und. `jwks_uri` Ebenso können Sie, wenn Sie **Manuelle Eingabe** wählen, nur HTTPS URLs eingeben.

1. Standardmäßig wird **sub** des OIDC-Anspruchs dem Benutzerpool-Attribut **Username** (Benutzername) zugeordnet. Sie können Benutzerpool-Attributen weitere OIDC-[Ansprüche](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) hinzufügen. Geben Sie den OIDC-Anspruch ein, und wählen Sie das entsprechende Benutzerpool-Attribut aus der Dropdown-Liste aus. Beispielsweise wird der Anspruch **email (E-Mail)** häufig dem Benutzerpool-Attribut **Email (E-Mail)** hinzugefügt.

1. Ordnen Sie Ihrem Benutzerpool zusätzliche Attribute von Ihrem Identitätsanbieter zu. Weitere Informationen finden Sie unter [Geben Sie die Identitätsanbieter-Attributzuordnungen für Ihren Benutzerpool an](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html).

1. Wählen Sie **Erstellen** aus.

1. Wählen Sie im Menü **App-Clients** einen App-Client aus der Liste aus. Um den neuen SAML-Identitätsanbieter zum App-Client hinzuzufügen, navigieren Sie zur Registerkarte **Anmeldeseiten** und wählen Sie in der **Konfiguration der verwalteten Anmeldeseiten** die Option **Bearbeiten** aus.

1. Wählen Sie **Änderungen speichern ** aus.

Weitere Informationen zu OIDC IdPs finden Sie unter. [Verwendung von OIDC-Identitätsanbietern mit einem Benutzerpool](cognito-user-pools-oidc-idp.md)

## Einrichten der Benutzeranmeldung mit einem SAML IdP
<a name="cognito-user-pools-saml-providers"></a>

Sie können einen Verbund für Amazon-Cognito-Benutzerpools zur Integration mit einem SAML-Identitätsanbieter (IdP) verwenden. Sie stellen ein Metadaten-Dokument bereit, entweder durch Hochladen der Datei oder durch das Angeben einer Metadaten-Dokument-Endpunkt-URL. Informationen zum Abrufen von Metadatendokumenten für SAML IdPs von Drittanbietern finden Sie unter. [Konfiguration Ihres externen SAML-Identitätsanbieters](cognito-user-pools-integrating-3rd-party-saml-providers.md)

**So konfigurieren Sie einen SAML-2.0-Identitätsanbieter in Ihrem Benutzerpool:**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. 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ü **Soziale Netzwerke und externer Anbieter** und wählen Sie **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie einen **SAML**-Identitätsanbieter aus.

1. Geben Sie **IDs** durch Kommas getrennt ein. Eine ID weist Amazon Cognito an, dass die E-Mail-Adresse zu überprüfen, die ein Benutzer bei der Anmeldung eingibt. Anschließend wird der Benutzer zu dem Anbieter weitergeleitet, der seiner Domäne entspricht.

1. Wählen Sie **Add sign-out flow** (Abmeldeablauf hinzufügen) aus, wenn Amazon Cognito signierte Abmeldeanfragen an Ihren Anbieter senden soll, wenn sich ein Benutzer abmeldet. Konfigurieren Sie Ihren SAML 2.0-Identitätsanbieter so, dass er Abmeldeantworten an den `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` Endpunkt sendet, den Amazon Cognito erstellt, wenn Sie die verwaltete Anmeldung konfigurieren. Dieser `saml2/logout`-Endpunkt verwendet POST-Binding.
**Anmerkung**  
Wenn Sie diese Option auswählen und Ihr SAML-Identitätsanbieter eine signierte Abmeldeanforderung erwartet, müssen Sie auch das Signaturzertifikat konfigurieren, das von Amazon Cognito mit Ihrem SAML-IdP bereitgestellt wird.   
Der SAML-IdP verarbeitet die signierte Abmeldeanforderung und die Abmeldung Ihres Benutzers von der Amazon-Cognito-Sitzung.

1. Wählen Sie eine **Metadaten-Dokumentquelle** aus. Wenn Ihr Identitätsanbieter SAML-Metadaten unter einer öffentlichen URL anbietet, können Sie **Metadata document URL** (URL für Metadatendokumente) auswählen und die öffentliche URL eingeben. Wählen Sie andernfalls **Upload metadata document** (Hochladen eines Metadatendokuments) und anschließend eine Metadatendatei aus, die Sie zuvor von Ihrem Anbieter heruntergeladen haben.
**Anmerkung**  
Wenn Ihr Anbieter einen öffentlichen Endpunkt besitzt, empfehlen wir Ihnen, eine Metadaten-Dokument-URL einzugeben und kein Dokument hochzuladen. Wenn Sie die URL verwenden, aktualisiert Amazon Cognito Metadaten automatisch. Normalerweise werden die Metadaten alle sechs Stunden oder bevor sie ablaufen aktualisiert, je nachdem, was zuerst eintritt.

1. **Ordnen Sie Attribute zwischen Ihrem SAML-Anbieter und Ihrer Anwendung zu**, um SAML-Anbieterattribute dem Benutzerprofil in Ihrem Benutzerpool zuzuordnen. Fügen Sie die erforderlichen Attribute Ihres Benutzerpools in Ihre Attributzuordnung ein. 

   Wenn Sie beispielsweise das **Benutzerpool-Attribut** `email`auswählen, geben Sie den SAML-Attributnamen so ein, wie dieser in der SAML-Assertion Ihres Identitätsanbieters angezeigt wird. Ihr Identitätsanbieter bietet möglicherweise SAML-Assertions als Referenz an. Einige Identitätsanbieter verwenden einfache Namen wie z. B. `email`, während andere URL-formatierte Attributnamen verwenden, die wie folgt aussehen:

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. Wählen Sie **Erstellen** aus.

**Anmerkung**  
Falls die Meldung `InvalidParameterException` angezeigt wird, während Sie einen SAML-IdP mit HTTPS-Metadaten-Endpunkt-URL erstellen, stellen Sie sicher, dass der Metadaten-Endpunkt eine korrekte SSL hat und ein gültiges SSL-Zertifikat vorliegt. Ein Beispiel für eine solche Ausnahme wäre „Fehler beim Abrufen von Metadaten von“. *<metadata endpoint>*

**So richten Sie den SAML-IdP zum Hinzufügen eines Signaturzertifikats ein**
+ Gehen Sie wie folgt vor, um das Zertifikat zu erhalten, das den öffentlichen Schlüssel enthält, den der IdP zur Überprüfung der signierten Abmeldeanforderung verwendet:

  1. Gehen Sie in Ihrem Benutzerpool zum Menü **Soziale Dienste und externe Anbieter**.

  1. Wählen Sie Ihren SAML-Anbieter aus,

  1. Wählen Sie **Signaturzertifikat anzeigen**.

Weitere Informationen zu SAML IdPs finden Sie unter[Verwendung von SAML-Identitätsanbietern mit einem Benutzerpool](cognito-user-pools-saml-idp.md).

# Verwenden von Anbietern für soziale Identitäten mit einem Benutzerpool
<a name="cognito-user-pools-social-idp"></a>

Die Benutzer Ihrer Web- und mobilen App können sich über Social-Identity-Anbieter (IdP) wie Facebook, Google und Amazon anmelden. Mit der integrierten gehosteten Web-UI bietet Amazon Cognito Token-Handling und Verwaltung für authentifizierte Benutzer aller Identitätsanbieter. Auf diese Weise können Ihre Backend-Systeme auf einen Satz von Benutzerpool-Token standardisiert werden. Sie müssen die verwaltete Anmeldung aktivieren, um die Integration mit unterstützten Anbietern von sozialen Identitäten zu ermöglichen. Wenn Amazon Cognito Ihre verwalteten Anmeldeseiten erstellt, erstellt es OAuth 2.0-Endpunkte, die Amazon Cognito und Ihr OIDC und Ihre sozialen Netzwerke IdPs zum Informationsaustausch verwenden. Weitere Informationen finden Sie unter [Auth-API-Referenz des Amazon-Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html).

Sie können einen sozialen IdP in der hinzufügen AWS-Managementkonsole, oder Sie können die AWS CLI oder die Amazon Cognito Cognito-API verwenden. 

**Anmerkung**  
Die Anmeldung über einen Drittanbieter (Verbund) in Amazon-Cognito-Benutzerpools wird unterstützt. Diese Funktion ist unabhängig von Verbund über Amazon-Cognito-Identitätspools (Verbundidentitäten).

**Topics**
+ [Richten Sie ein Social IdP-Entwicklerkonto und eine Anwendung ein](#cognito-user-pools-social-idp-step-1)
+ [Konfigurieren Sie Ihren Benutzerpool mit einem sozialen IdP](#cognito-user-pools-social-idp-step-2)
+ [Testen der Konfiguration Ihres Social-Identity-Anbieters](#cognito-user-pools-social-idp-step-3)

## Richten Sie ein Social IdP-Entwicklerkonto und eine Anwendung ein
<a name="cognito-user-pools-social-idp-step-1"></a>

Bevor Sie einen soziale IdP mit Amazon Cognito anlegen, müssen Sie Ihre Anwendung bei dem sozialen IdP registrieren, um eine Kunden-ID und einen geheimen Client-Schlüssel zu erhalten.

------
#### [ Facebook ]

Aktuelle Informationen zur Konfiguration von Meta-Entwicklerkonten und zur Authentifizierung finden Sie unter [Meta-App-Entwicklung](https://developers.facebook.com/docs/development).

**Wie registriere ich eine Anwendung bei Facebook/Meta**

1. Erstellen Sie ein [Entwickler-Konto bei Facebook](https://developers.facebook.com/docs/facebook-login).

1. [Melden Sie sich](https://developers.facebook.com/) mit Ihren Facebook-Anmeldeinformationen an.

1. Wählen Sie im Menü **My Apps (Meine Apps)** den Eintrag **Create New App (Neue App erstellen)**.

1. Geben Sie einen Namen für Ihre Facebook-App ein und wählen Sie dann **Create App ID** (App-ID erstellen) aus.

1. Wählen Sie in der linken Navigationsleiste **Settings** (Einstellungen) aus und dann **Basic** (Grundlegend).

1. Notieren Sie die **App ID** und das **App Secret (Geheimer Schlüssel für die App)**. Sie brauchen diese Informationen im nächsten Abschnitt.

1. Wählen Sie unten auf der Seite **\$1 Add Platform (\$1 Plattform hinzufügen)**.

1. Wählen Sie **Website**.

1. Geben Sie unter **Website** den Pfad zur Anmeldeseite Ihrer Anwendung unter **Site URL** (Website-URL) ein.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
   ```

1. Wählen Sie **Save Changes**.

1. Geben Sie den Pfad zum Stammverzeichnis Ihrer Benutzerpool-Domäne in **App Domains** (Anwendungsdomänen) ein.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

1. Wählen Sie **Save Changes**.

1. Wählen Sie auf der Navigationsleiste **Add Product** (Produkte hinzufügen) und dann **Set up** (Einrichten) für **Facebook Login** (Facebook-Anmeldung).

1. Wählen Sie in der linken Navigationsleiste **Facebook Login (Facebook-Anmeldung)** und dann **Settings (Einstellungen)**.

   Geben Sie den Pfad zum `/oauth2/idpresponse` Endpunkt für Ihre Benutzerpool-Domain in ** OAuthValid** Redirect ein. URIs

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ Login with Amazon ]

Aktuelle Informationen zur Konfiguration der Login with Amazon Amazon-Entwicklerkonten und zur Authentifizierung finden Sie in der [Dokumentation Login with Amazon](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html).

**So registrieren Sie eine Anwendung mit Login with Amazon**

1. Erstellen Sie ein [Entwickler-Konto bei Amazon](https://developer.amazon.com/login-with-amazon).

1. [Melden Sie sich](https://developer.amazon.com/lwa/sp/overview.html) mit Ihren Amazon-Anmeldeinformationen an.

1. Sie müssen ein Amazon Sicherheitsprofil erstellen, um die Amazon-Client-ID und den geheimen Client-Schlüssel zu erhalten.

   Wählen Sie **Apps and Services (Apps und Services)** aus der Navigationsleiste oben auf der Seite und wählen Sie dann **Login with Amazon (Anmeldung mit Amazon)**.

1. Wählen Sie **Create a Security Profile (Ein Sicherheitsprofil erstellen)** aus.

1. Geben Sie einen **Security Profile Name** (Sicherheitsprofilnamen), eine **Security Profile Description** (Sicherheitsprofilbeschreibung) und eine **Consent Privacy Notice URL** (URL zur Zustimmung zum Datenschutzhinweis) ein.

1. Wählen Sie **Save (Speichern)** aus.

1. Wählen Sie **Client ID (Client-ID)** und **Client Secret (Clientschlüssel)**, um die Client-ID und den Clientschlüssel anzuzeigen. Sie brauchen diese Informationen im nächsten Abschnitt.

1. Bewegen Sie den Mauszeiger über das Zahnrad, wählen Sie **Web Settings** (Web-Einstellungen) und dann **Edit** (Bearbeiten) aus.

1. Geben Sie Ihre Benutzerpool-Domäne in **Allowed Origins** (Autorisierte Quellen) ein.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

1. Geben Sie Ihre Benutzerpool-Domain mit dem `/oauth2/idpresponse` Endpunkt in **Allowed Return** ein URLs.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

1. Wählen Sie **Speichern**.

------
#### [ Google ]

Weitere Informationen zu OAuth 2.0 auf der Google Cloud-Plattform finden [Sie in der Dokumentation zu Google Workspace für Entwickler unter Weitere Informationen zur Authentifizierung und Autorisierung](https://developers.google.com/workspace/guides/auth-overview).

**Wie registriere ich eine Anwendung bei Google**

1. Erstellen Sie ein [Entwickler-Konto bei Google](https://developers.google.com/identity).

1. Melden Sie sich bei der [Konsole für Google Cloud Platform](https://console.cloud.google.com/home/dashboard) an.

1. Klicken Sie in der oberen Navigationsleiste auf **Select a project** (Projekt auswählen). Wenn Sie bereits ein Projekt auf der Google-Plattform haben, zeigt dieses Menü stattdessen Ihr Standardprojekt an.

1. Wählen Sie **NEW PROJECT** (NEUES PROJEKT) aus.

1. Geben Sie einen Namen für Ihr Projekt ein und wählen Sie dann **CREATE** (ERSTELLEN) aus.

1. Wählen Sie in der linken Navigationsleiste **Dienste APIs und** dann den Bildschirm mit der **Zustimmung von OAuth** aus.

1. Geben Sie App-Informationen, eine **App domain** (App-Domäne), **Authorized domains** (Autorisierte Domänen) und **Developer contact information** (Kontaktinformationen für Entwickler) ein. Ihre **Authorized domains** (Autorisierte Domänen) müssen `amazoncognito.com` und das Stammverzeichnis Ihrer benutzerdefinierten Domäne, z. B. `example.com`, enthalten. Wählen Sie **SAVE AND CONTINUE** (SPEICHERN UND FORTFAHREN) aus.

1. 1. Wählen Sie unter **Bereiche** die Option Bereiche **hinzufügen oder entfernen und wählen Sie mindestens die folgenden Bereiche** aus. OAuth 

   1. `.../auth/userinfo.email`

   1. `.../auth/userinfo.profile`

   1. openid

1. Wählen Sie unter **Test users** (Testbenutzer) die Option **Add users** (Benutzer hinzufügen) aus. Geben Sie Ihre E-Mail-Adresse und weitere autorisierte Testbenutzer ein und wählen Sie dann **SAVE AND CONTINUE** (SPEICHERN UND FORTFAHREN) aus.

1. **Erweitern Sie die linke Navigationsleiste erneut und wählen Sie **Dienste APIs und** dann Anmeldeinformationen aus.** 

1. Wählen Sie **CREATE CREDENTIALS** und dann **OAuth Client-ID** aus.

1. Wählen Sie einen **Application type** (Anwendungstyp) aus und geben Sie Ihrem Client im Feld **Name** (Name) einen Namen.

1. Wählen Sie unter **Autorisierte JavaScript Ursprünge** die Option **URI HINZUFÜGEN** aus. Geben Sie Ihre Benutzerpool-Domäne ein.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

1. Wählen Sie unter **Autorisierte Weiterleitung URIs** die Option **URI HINZUFÜGEN** aus. Geben Sie den Pfad zum Endpunkt `/oauth2/idpresponse` Ihrer Benutzerpool-Domäne ein.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

1. Wählen Sie **CREATE** (Erstellen) aus.

1. Speichern Sie die Werte sicher, die Google unter **Your client ID** (Ihre Client-ID) und **Your client secret** (Ihr Client-Schlüssel) anzeigt. Stellen Sie diese Werte Amazon Cognito zur Verfügung, wenn Sie einen Google-IDP hinzufügen.

------
#### [ Sign in with Apple ]

Die meisten up-to-date Informationen zur Einrichtung von Sign in with Apple finden Sie unter [Konfiguration Ihrer Umgebung für die Anmeldung mit Apple](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple) in der Apple-Dokumentation für Entwickler.

**Wie registriere ich eine Anwendung mit Sign in with Apple (SIWA)**

1. Erstellen Sie ein [Entwickler-Konto bei Apple](https://developer.apple.com/programs/enroll/).

1. [Melden Sie sich](https://developer.apple.com/account/#/welcome) mit Ihren Apple-Anmeldeinformationen an.

1. Wählen Sie in der linken Navigationsleiste **Certificates, Identifiers & Profiles** (Zertifikate, IDs und Profile) aus.

1. Wählen Sie in der linken Navigationsleiste **Kennungen** aus.

1. Wählen Sie auf der Seite **Kennungen** das Symbol **\$1** aus.

1. Wählen Sie auf der Seite „**Neuen Identifier registrieren**“ die Option **App IDs** und dann **Weiter** aus.

1. Wählen Sie auf der Seite **Select a type** (Typ auswählen) die Option **App** und dann **Continue** (Weiter) aus.

1. Machen Sie auf der Seite **Registrieren einer App-ID** das Folgende:

   1. Geben Sie unter **Description** (Beschreibung) eine Beschreibung ein.

   1. Geben Sie unter **App ID Prefix** (App-ID-Präfix) eine **Bundle ID** (Bündel-ID) ein. Notieren Sie sich den Wert unter **App ID Prefix** (App-ID-Präfix). Sie benötigen diesen Wert, nachdem Sie Apple als Identitätsanbieter in [Konfigurieren Sie Ihren Benutzerpool mit einem sozialen IdP](#cognito-user-pools-social-idp-step-2) ausgewählt haben.

   1. Wählen Sie unter **Funktionen** die Option **Mit Apple anmelden** und dann **Bearbeiten** aus.

   1. Wählen Sie auf der Seite „**Mit Apple anmelden: App-ID-Konfiguration**“ aus, ob Sie die App entweder als primäre App oder als Gruppe mit einer anderen App einrichten möchten IDs, und wählen Sie dann **Speichern** aus.

   1. Klicken Sie auf **Continue**.

1. Wählen Sie auf der Seite **App-ID bestätigen** die Option **Registrieren** aus.

1. Wählen Sie auf der Seite **Kennungen** das Symbol **\$1** aus.

1. Wählen Sie auf der Seite „**Neue Kennung registrieren**“ die Option **Dienste IDs** und anschließend „**Fortfahren**“ aus.

1. Machen Sie auf der Seite **Registrieren einer Service-ID** das Folgende:

   1. Geben Sie unter **Beschreibung** eine Beschreibung ein.

   1. Geben Sie unter **Kennungen** eine Kennung ein. Notieren Sie sich diese Service-ID, da Sie diesen Wert benötigen, nachdem Sie Apple als Identitätsanbieter in ausgewählt haben [Konfigurieren Sie Ihren Benutzerpool mit einem sozialen IdP](#cognito-user-pools-social-idp-step-2).

   1. Wählen Sie **Continue** (Weiter) und dann **Register** (Registrieren) aus.

1. Wählen Sie auf der Seite „Identifiers“ (Bezeichner) die gerade erstellte Service-ID aus.

   1. Wählen Sie **Mit Apple anmelden** und dann **Konfigurieren** aus.

   1. Wählen Sie auf der Seite **Web Authentication Configuration** (Konfiguration der Web-Authentifizierung) die App-ID, die Sie zuvor erstellt haben, als **Primary App ID** (Primäre App-ID) aus. 

   1. Wählen Sie das **Pluszeichen** neben **Website** aus URLs. 

   1. Geben Sie unter **Domains and subdomains** (Domänen und Subdomänen) Ihre Benutzerpool-Domäne ohne das Präfix `https://` ein.

      ```
      mydomain.auth.us-east-1.amazoncognito.com
      ```

   1. Geben Sie URLs unter **Zurück** den Pfad zum `/oauth2/idpresponse` Endpunkt Ihrer Benutzerpool-Domain ein.

      ```
      https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
      ```

   1. Wählen Sie **Next** (Weiter) und anschließend **Done** (Fertig) aus. Sie müssen die Domäne nicht verifizieren.

   1. Wählen Sie **Continue** (Weiter) und anschließend **Save** (Speichern) aus.

1. Wählen Sie in der linken Navigationsleiste die Option **Schlüssel** aus.

1. Klicken Sie auf der Seite **Schlüssel** auf das Symbol **\$1**.

1. Machen Sie auf der Seite **Registrieren eines neuen Schlüssels** das Folgende:

   1. Geben Sie unter **Key Name** (Schlüsselname) einen Schlüsselnamen ein. 

   1. Wählen Sie **Mit Apple anmelden** und dann **Konfigurieren** aus.

   1. Wählen Sie auf der Seite **Configure Key** (Schlüssel konfigurieren) die App-ID, die Sie zuvor erstellt haben, als **Primary App ID** (Primäre App-ID) aus. Wählen Sie **Speichern**.

   1. Wählen Sie **Weiter** und dann **Registrieren** aus.

1. Wählen Sie auf der Seite **Download Your Key** (Schlüssel herunterladen) die Option **Download** (Herunterladen) aus, um den privaten Schlüssel herunterzuladen. Notieren Sie die angezeigte **Schlüssel-ID** und klicken Sie anschließend auf **Done** (Fertig). Sie benötigen diesen privaten Schlüssel und den auf dieser Seite angezeigten Wert für die **Schlüssel-ID**, nachdem Sie Apple als Identitätsanbieter in [Konfigurieren Sie Ihren Benutzerpool mit einem sozialen IdP](#cognito-user-pools-social-idp-step-2) ausgewählt haben.

------

## Konfigurieren Sie Ihren Benutzerpool mit einem sozialen IdP
<a name="cognito-user-pools-social-idp-step-2"></a>

**Um einen Benutzerpool (Social IdP) mit dem zu konfigurieren AWS-Managementkonsole**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen Benutzerpool.

1. Wählen Sie das Menü **Soziale Netzwerke und externe Anbieter** und wählen Sie dann **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie einen Social-IdP aus: **Facebook**, **Google**, **Login with Amazon** oder **Mit Apple anmelden**.

1. Wählen Sie basierend auf Ihrer Wahl des Social-IdP einen der folgenden Schritte aus:
   + **Google** und **Login with Amazon** – Geben Sie die **App-Client-ID** und das **App-Clientgeheimnis** ein, das Sie im vorherigen Abschnitt erstellt haben.
   + **Facebook** – Geben Sie die **App-Client-ID** und das **App-Clientgeheimnis** ein, das Sie im vorherigen Abschnitt erstellt haben. Wählen Sie anschließend eine API-Version aus (z. B. Version 2.12). Wir empfehlen, die neueste Version auszuwählen, da jede Facebook-API-Version einen Lebenszyklus und ein Abkündigungsdatum hat. Facebook-Bereiche und Attribute können zwischen API-Versionen variieren. Wir empfehlen, Ihre Social-Identity-Anmeldung mit Facebook zu testen, um sicherzustellen, dass der Verbund wie vorgesehen funktioniert.
   + **Mit Apple anmelden** – Geben Sie die **Service-ID**, **Team-ID**, **Schlüssel-ID** und den **privaten Schlüssel** ein, die/den Sie im vorherigen Abschnitt erstellt haben.

1. Geben Sie die Namen der **autorisierten Bereiche** ein, die Sie verwenden möchten. Bereiche definieren, auf welche Benutzerattribute (wie z. B. `name` und `email`) mit Ihrer App zugreifen möchten. Für Facebook müssen diese durch Kommata voneinander getrennt werden. Für Google und "Login with Amazon (Anmelden mit Amazon)" müssen die Werte mit Leerzeichen getrennt werden. Aktivieren Sie für "Sign in with Apple (Mit Apple anmelden)" die Kontrollkästchen der Bereiche, auf die Sie Zugriff benötigen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-social-idp.html)

   Der App-Benutzer wird aufgefordert, der Bereitstellung dieser Attribute für die App zuzustimmen. Weitere Informationen zu den jeweiligen Bereichen enthält die Dokumentation von Google, Facebook, Login with Amazon oder Mit Apple anmelden. 

   Bei Verwendung von „Mit Apple anmelden“ werden Bereiche in den folgenden Benutzerszenarien unter Umständen nicht zurückgegeben:
   + Bei einem Endbenutzer kommt es nach dem Verlassen der Anmeldeseite von Apple zu Fehlern (interne Fehler von Amazon Cognito oder Probleme in dem vom Entwickler geschriebenen Quelltext).
   + Die Dienst-ID-ID wird in allen Benutzerpools und and/or anderen Authentifizierungsdiensten verwendet
   + Ein Entwickler fügt Bereiche hinzu, nachdem der betreffende Endbenutzer sich angemeldet hat (es werden keine neuen Informationen abgerufen).
   + Ein Entwickler löscht den Benutzer und der Benutzer meldet sich dann erneut an, ohne die App zuvor aus seinem Apple-ID-Profil zu entfernen.

1. Ordnen Sie Ihrem Benutzerpool Attribute von Ihrem IdP zu. Weitere Informationen finden Sie unter [Geben Sie die Identitätsanbieter-Attributzuordnungen für Ihren Benutzerpool an](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html).

1. Wählen Sie **Erstellen** aus.

1. Wählen Sie im Menü **App-Clients** einen App-Client aus der Liste aus. Um den neuen Social Identity Provider zum App-Client hinzuzufügen, navigieren Sie zur Registerkarte **Anmeldeseiten** und wählen Sie in der **Konfiguration Verwaltete Anmeldeseiten** **bearbeiten** aus.

1. Wählen Sie **Änderungen speichern ** aus.

## Testen der Konfiguration Ihres Social-Identity-Anbieters
<a name="cognito-user-pools-social-idp-step-3"></a>

In Ihrer Anwendung müssen Sie im Client des Benutzers einen Browser aufrufen, damit er sich bei seinem sozialen Anbieter anmelden kann. Testen Sie die Anmeldung bei Ihrem sozialen Anbieter, nachdem Sie die Einrichtungsverfahren in den vorherigen Abschnitten abgeschlossen haben. Die folgende Beispiel-URL lädt die Anmeldeseite für Ihren Benutzerpool mit einer Präfix-Domain.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

Dieser Link ist die Seite, zu der Sie Amazon Cognito weiterleitet, wenn Sie zum Menü **App-Clients** gehen, einen App-Client auswählen, zum Tab **Anmeldeseiten** navigieren und **Anmeldeseite anzeigen** auswählen. Weitere Informationen zu Benutzerpool-Domains finden Sie unter[Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md). Weitere Informationen zu App-Clients, einschließlich Client IDs und Callback URLs, finden Sie unter[Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).

Mit dem folgenden Beispiel-Link wird eine automatische Weiterleitung von [Autorisieren des Endpunkts](authorization-endpoint.md) mit einem `identity_provider` Abfrageparameter zu einem sozialen Anbieter eingerichtet. Diese URL umgeht die interaktive Benutzerpool-Anmeldung mit verwalteter Anmeldung und leitet direkt zur IdP-Anmeldeseite weiter.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=Facebook|Google|LoginWithAmazon|SignInWithApple&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

# Verwendung von SAML-Identitätsanbietern mit einem Benutzerpool
<a name="cognito-user-pools-saml-idp"></a>

[Sie können wählen, ob sich Ihre Web- und mobilen App-Benutzer über einen SAML-Identitätsanbieter (IdP) wie [Microsoft Active Directory Federation Services (ADFS)](https://msdn.microsoft.com/en-us/library/bb897402.aspx) oder Shibboleth anmelden.](http://www.shibboleth.net/) Sie müssen einen SAML-IdP auswählen, der den [SAML-2.0-Standard](http://saml.xml.org/saml-specifications) unterstützt.

Mit verwalteter Anmeldung authentifiziert Amazon Cognito lokale IdP-Benutzer und Drittanbieter-IdP-Benutzer und gibt JSON-Webtoken aus (). JWTs Mit den Tokens, die Amazon Cognito ausgibt, können Sie mehrere Identitätsquellen in einem universellen OpenID Connect (OIDC) -Standard für all Ihre Apps konsolidieren. Amazon Cognito kann SAML-Assertionen von Ihren Drittanbietern in diesen SSO-Standard umwandeln. Sie können einen SAML-IdP in der AWS-Managementkonsole, über oder mit der Amazon Cognito Cognito-Benutzerpools-API erstellen und verwalten. AWS CLI Informationen zum Erstellen Ihres ersten SAML-IdP in der finden Sie AWS-Managementkonsole unter. [Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool](cognito-user-pools-managing-saml-idp.md)

![\[Übersicht über die Authentifizierung mit SAML-Anmeldung\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-saml.png)


**Anmerkung**  
Der Verbund mit Anmeldung über einen Drittanbieter-IdP ist eine Funktion der Amazon Cognito Cognito-Benutzerpools. Amazon Cognito-Identitätspools, manchmal auch Amazon Cognito Federated Identities genannt, sind eine Implementierung von Federation, die Sie in jedem Identitätspool separat einrichten müssen. Ein Benutzerpool kann ein Drittanbieter-IdP für einen Identitätspool sein. Weitere Informationen finden Sie unter [Amazon-Cognito-Identitätspools](cognito-identity.md).

## Kurzreferenz für die IdP-Konfiguration
<a name="cognito-user-pools-saml-idp-reference"></a>

Sie müssen Ihren SAML-IdP so konfigurieren, dass er Anfragen akzeptiert und Antworten an Ihren Benutzerpool sendet. Die Dokumentation für Ihren SAML-IdP enthält Informationen darüber, wie Sie Ihren Benutzerpool als vertrauende Partei oder Anwendung für Ihren SAML 2.0-IdP hinzufügen können. Die folgende Dokumentation enthält die Werte, die Sie für die SP-Entitäts-ID und die URL des Assertion Consumer Service (ACS) angeben müssen.Kurzübersicht zu den SAML-Werten für den Benutzerpool

**SP-Entitäts-ID**  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```

**ACS-URL**  

```
https://Your user pool domain/saml2/idpresponse
```

Sie müssen Ihren Benutzerpool so konfigurieren, dass er Ihren Identitätsanbieter unterstützt. Die allgemeinen Schritte zum Hinzufügen eines externen SAML-IdP lauten wie folgt.

1. Laden Sie SAML-Metadaten von Ihrem IdP herunter oder rufen Sie die URL zu Ihrem Metadaten-Endpunkt ab. Siehe [Konfiguration Ihres externen SAML-Identitätsanbieters](cognito-user-pools-integrating-3rd-party-saml-providers.md).

1. Fügen Sie Ihrem Benutzerpool einen neuen IdP hinzu. Laden Sie die SAML-Metadaten hoch oder geben Sie die Metadaten-URL an. Siehe [Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool](cognito-user-pools-managing-saml-idp.md).

1. Weisen Sie den IdP Ihren App-Clients zu. Siehe [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).

**Topics**
+ [Kurzreferenz für die IdP-Konfiguration](#cognito-user-pools-saml-idp-reference)
+ [Wissenswertes über SAML IdPs in Amazon Cognito Cognito-Benutzerpools](cognito-user-pools-saml-idp-things-to-know.md)
+ [Groß- und Kleinschreibung von SAML-Benutzernamen](#saml-nameid-case-sensitivity)
+ [Konfiguration Ihres externen SAML-Identitätsanbieters](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool](cognito-user-pools-managing-saml-idp.md)
+ [Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools](cognito-user-pools-SAML-session-initiation.md)
+ [SAML-Benutzer mit Single Sign-Out abmelden](cognito-user-pools-saml-idp-sign-out.md)
+ [SAML-Signatur und Verschlüsselung](cognito-user-pools-SAML-signing-encryption.md)
+ [Namen und Kennungen von SAML-Identitätsanbietern](cognito-user-pools-managing-saml-idp-naming.md)

# Wissenswertes über SAML IdPs in Amazon Cognito Cognito-Benutzerpools
<a name="cognito-user-pools-saml-idp-things-to-know"></a>

Die Implementierung eines SAML 2.0-IdP ist mit einigen Anforderungen und Einschränkungen verbunden. Lesen Sie diesen Abschnitt, wenn Sie Ihren IdP implementieren. Sie finden dort auch Informationen, die für die Behebung von Fehlern beim SAML-Verbund mit einem Benutzerpool nützlich sind.

**Amazon Cognito verarbeitet SAML-Assertionen für Sie**  
Amazon-Cognito-Benutzerpools unterstützen den SAML-2.0-Verbund mit POST-Binding-Endpunkten. Auf diese Weise ist es nicht mehr notwendig, dass Ihre Anwendung SAML-Assertion-Rückmeldungen lädt oder analysiert, da der Benutzerpool die SAML-Rückmeldungen nun direkt von Ihrem IdP über einen Benutzeragenten erhält. Ihr Benutzerpool fungiert als Dienstanbieter (SP) im Namen Ihrer Anwendung. [Amazon Cognito unterstützt SP-initiiertes und IdP-initiiertes Single Sign-On (SSO), wie in den Abschnitten 5.1.2 und 5.1.4 der technischen Übersicht über SAML V2.0 beschrieben.](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html)

**Geben Sie ein gültiges IdP-Signaturzertifikat an**  
Das Signaturzertifikat in Ihren SAML-Provider-Metadaten darf nicht abgelaufen sein, wenn Sie den SAML-IdP in Ihrem Benutzerpool konfigurieren.

**Benutzerpools unterstützen mehrere Signaturzertifikate**  
Wenn Ihr SAML-IdP mehr als ein Signaturzertifikat in SAML-Metadaten enthält, stellt Ihr Benutzerpool bei der Anmeldung fest, dass die SAML-Assertion gültig ist, sofern sie mit einem Zertifikat in den SAML-Metadaten übereinstimmt. Jedes Signaturzertifikat darf nicht länger als 4.096 Zeichen sein.

**Behalten Sie den Relay-State-Parameter bei**  
Amazon Cognito und Ihr SAML-IdP verwalten Sitzungsinformationen mit einem `relayState`-Parameter.  

1. Amazon Cognito unterstützt `relayState`-Werte, die größer als 80 Byte sind. In SAML-Spezifikationen ist zwar angegeben, dass der Wert für `relayState` nicht größer als 80 Byte sein darf, aber in der Branche wird hiervon derzeit häufiger abgewichen. Die Folge ist, dass die Ablehnung von `relayState`-Werten mit mehr als 80 Byte dazu führt, dass für viele Standardintegrationen von SAML-Anbietern Fehler auftreten.

1. Das `relayState` Token ist ein undurchsichtiger Verweis auf Statusinformationen, die von Amazon Cognito verwaltet werden. Amazon Cognito übernimmt keine Garantie für den Inhalt des `relayState`-Parameters. Parsen Sie den Inhalt nicht so, dass Ihre App vom Ergebnis abhängig ist. Weitere Informationen finden Sie in der [Spezifikation zu SAML 2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).

**Identifizieren Sie den ACS-Endpunkt**  
Ihr SAML-Identitätsanbieter verlangt, dass Sie einen Assertions-Verbraucher-Endpunkt festlegen. Ihr IdP leitet Ihre Benutzer mit ihrer SAML-Assertion an diesen Endpunkt weiter. Konfigurieren Sie den folgenden Endpunkt in Ihrer Benutzerpool-Domäne für SAML-2.0-POST-Binding Ihres SAML-Identitätsanbieters.  

```
https://Your user pool domain/saml2/idpresponse
With an Amazon Cognito domain:
https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
With a custom domain:
https://auth.example.com/saml2/idpresponse
```
Weitere Informationen zum Erstellen von Benutzerpool-Domänen finden Sie unter [Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md).

**Keine wiederholten Assertionen**  
Sie können eine SAML-Assertion nicht wiederholen und nicht erneut an Ihren Amazon-Cognito-`saml2/idpresponse`-Endpunkt *wiedergeben*. Eine erneut wiedergegebene SAML-Zusicherung hat eine Assertion-ID, die die ID einer früheren IdP-Antwort dupliziert.

**Die Benutzerpool-ID ist die SP-Entitäts-ID**  
Sie müssen Ihrem IdP Ihre Benutzerpool-ID im Service Provider (SP) mitteilen`urn`, die auch als *Zielgruppen-URI* oder *SP-Entitäts-ID* bezeichnet wird. Der Zielgruppen-URI für Ihren Benutzerpool hat das folgende Format.  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```
Sie finden Ihre Benutzerpool-ID unter **Benutzerpool-Übersicht** in der [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito/home).

**Ordnen Sie alle erforderlichen Attribute zu**  
Konfigurieren Sie Ihren SAML-IdP so, dass dieser Werte für alle in Ihrem Benutzerpool erforderlichen Attribute bereitstellt. Beispielsweise ist `email` ein typisches erforderliches Attribut für Benutzerpools. Bevor sich Ihre Benutzer anmelden können, müssen Ihre SAML-IdP-Assertions einen Anspruch enthalten, den Sie dem **Benutzerpool-Attribut** `email` zuordnen. Weitere Informationen zu Attributzuordnung finden Sie unter [Zuordnung von IdP-Attributen zu Profilen und Tokens](cognito-user-pools-specifying-attribute-mapping.md).

**Für das Assertion-Format gelten spezifische Anforderungen**  
Ihr SAML-IdP muss die folgenden Ansprüche in die SAML-Assertion aufnehmen.  
+ `NameID`Ein Anspruch. Amazon Cognito ordnet dem Zielbenutzer von eine SAML-Assertion zu. `NameID` Bei `NameID` Änderungen geht Amazon Cognito davon aus, dass die Assertion für einen neuen Benutzer gilt. Das Attribut, auf das Sie `NameID` in Ihrer IdP-Konfiguration festgelegt haben, muss einen dauerhaften Wert haben. Um SAML-Benutzer einem konsistenten Benutzerprofil in Ihrem Benutzerpool zuzuweisen, weisen Sie Ihren `NameID` Anspruch anhand eines Attributs mit einem Wert zu, der sich nicht ändert.

  ```
  <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent">
    carlos
  </saml2:NameID>
  ```

  Ein Wert `Format` in Ihrem `NameID` IdP-Anspruch von `urn:oasis:names:tc:SAML:1.1:nameid-format:persistent` bedeutet, dass Ihr IdP einen unveränderlichen Wert übergibt. Amazon Cognito benötigt diese Formatdeklaration nicht und weist ein Format von zu, `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` falls Ihr IdP kein Format für den Anspruch angibt. `NameID` [Dieses Verhalten entspricht Abschnitt 2.2.2 *Complex Type Name der SAML IDType* 2.0-Spezifikation.](https://groups.oasis-open.org/higherlogic/ws/public/download/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf/latest)
+ Ein `AudienceRestriction`-Anspruch mit einem `Audience`-Wert, der die SP-Entitäts-ID Ihres Benutzerpools als Ziel der Antwort festlegt.

  ```
  <saml:AudienceRestriction>
    <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE
  </saml:AudienceRestriction>
  ```
+ Bei SP-initiiertem Single Sign-On ein `Response` Element mit einem `InResponseTo` Wert der ursprünglichen SAML-Anforderungs-ID.

  ```
  <saml2p:Response Destination="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  ```
**Anmerkung**  
IDP-initiierte SAML-Assertionen dürfen *keinen* Wert enthalten. `InResponseTo`
+ Ein `SubjectConfirmationData` Element mit dem `Recipient` Wert Ihres `saml2/idpresponse` Benutzerpool-Endpunkts und, bei SP-initiiertem SAML, einem `InResponseTo` Wert, der der ursprünglichen SAML-Anforderungs-ID entspricht.

  ```
  <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse"/>
  ```

**Von SP initiierte Anmeldeanfragen**  
Wenn der [Autorisieren des Endpunkts](authorization-endpoint.md) Ihren Benutzer zur Anmeldeseite Ihres IDP umleitet, schließt Amazon Cognito eine *SAML-Anforderung* in einem URL-Parameter der `HTTP GET`-Anforderung ein. Eine SAML-Anfrage enthält Informationen über Ihren Benutzerpool, einschließlich Ihres ACS-Endpunkts. Sie können diese Anfragen optional mit einer kryptografischen Signatur versehen.

**Signieren Sie Anfragen und verschlüsseln Sie Antworten**  
Jeder Benutzerpool mit einem SAML-Anbieter generiert ein asymmetrisches key pair und ein *Signaturzertifikat* für eine digitale Signatur, die Amazon Cognito SAML-Anfragen zuweist. Jeder externe SAML-IdP, den Sie für die Unterstützung verschlüsselter SAML-Antworten konfigurieren, veranlasst Amazon Cognito, ein neues key pair und ein neues *Verschlüsselungszertifikat* für diesen Anbieter zu generieren. Um die Zertifikate mit dem öffentlichen Schlüssel anzusehen und herunterzuladen, wählen Sie in der Amazon Cognito Cognito-Konsole im Menü **Soziale Netzwerke und externe Anbieter** Ihren IdP aus.  
Um SAML-Anfragen aus Ihrem Benutzerpool vertrauenswürdig zu machen, stellen Sie Ihrem IdP eine Kopie Ihres SAML 2.0-Signaturzertifikats Ihres Benutzerpools zur Verfügung. Ihr IdP ignoriert möglicherweise SAML-Anfragen, die Ihr Benutzerpool signiert hat, wenn Sie den IdP nicht so konfigurieren, dass er signierte Anfragen akzeptiert.  

1. Amazon Cognito wendet eine digitale Signatur auf SAML-Anfragen an, die Ihr Benutzer an Ihren IdP weiterleitet. Ihr Benutzerpool signiert alle Single Logout (SLO) -Anfragen, und Sie können Ihren Benutzerpool so konfigurieren, dass Single Sign-On-Anfragen (SSO) für jeden externen SAML-IdP signiert werden. Wenn Sie eine Kopie des Zertifikats bereitstellen, kann Ihr IdP die Integrität der SAML-Anfragen Ihrer Benutzer überprüfen. 

1. Ihr SAML-IdP kann SAML-Antworten mit dem Verschlüsselungszertifikat verschlüsseln. Wenn Sie einen IdP mit SAML-Verschlüsselung konfigurieren, darf Ihr IdP nur verschlüsselte Antworten senden.

**Kodieren Sie nicht-alphanumerische Zeichen**  
Amazon Cognito akzeptiert keine 4-Byte-UTF-8-Zeichen wie 😐 oder 𠮷 die Ihr IdP als Attributwert weitergibt. Sie können das Zeichen mit Base64 codieren, um es als Text zu übergeben, und es dann in Ihrer App decodieren.  
Im folgenden Beispiel wird der Attributanspruch nicht akzeptiert:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue>
</saml2:Attribute>
```
Im Gegenteil zum vorherigen Beispiel wird der Attributanspruch akzeptiert:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue>
</saml2:Attribute>
```

**Der Metadaten-Endpunkt muss über eine gültige Transportschichtsicherheit verfügen**  
Wenn Sie `InvalidParameterException` beim Erstellen eines SAML-IdP mit einer HTTPS-Metadatenendpunkt-URL beispielsweise „Fehler beim Abrufen von Metadaten von“ sehen*<metadata endpoint>*, stellen Sie sicher, dass für den Metadaten-Endpunkt SSL korrekt eingerichtet ist und dass ihm ein gültiges SSL-Zertifikat zugeordnet ist. Weitere Informationen zur Validierung von Zertifikaten finden Sie unter [Was ist](https://aws.amazon.com/what-is/ssl-certificate/) ein Zertifikat? SSL/TLS .

**Der Metadaten-Endpunkt muss sich auf dem Standard-TCP-Port für HTTP oder HTTPS befinden**  
Amazon Cognito akzeptiert nur Metadaten URLs für SAML-Anbieter auf den Standard-TCP-Ports 80 für HTTP und 443 für HTTPS. Aus Sicherheitsgründen empfiehlt es sich, SAML-Metadaten unter einer TLS-verschlüsselten URL mit dem Präfix zu hosten. `https://` Geben Sie Metadaten URLs im Format oder ein. *`http://www.example.com/saml2/metadata.xml`* *`https://www.example.com/saml2/metadata.xml`* Die Amazon Cognito Cognito-Konsole akzeptiert Metadaten URLs nur mit dem `https://` Präfix. Sie können IdP-Metadaten auch mit [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)und [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)konfigurieren.

**App-Clients mit IDP-initiierter SAML können sich nur mit SAML anmelden**  
Wenn Sie die Unterstützung für einen SAML 2.0-IdP aktivieren, der die vom IdP initiierte Anmeldung in einem App-Client unterstützt, können Sie diesem App-Client nur andere SAML IdPs 2.0-Dateien hinzufügen. Sie dürfen das Benutzerverzeichnis im Benutzerpool *und* alle externen Identitätsanbieter, die keine SAML sind, nicht zu einem auf diese Weise konfigurierten App-Client hinzufügen.

**Bei Abmeldeantworten muss die POST-Bindung verwendet werden**  
Der `/saml2/logout` Endpunkt akzeptiert `LogoutResponse` `HTTP POST` AS-Anfragen. Benutzerpools akzeptieren keine `HTTP GET` verbindlichen Abmeldeantworten.

**Rotation von Zertifikaten für die Signierung**  
Amazon Cognito speichert SAML-Metadaten für bis zu sechs Stunden im Cache, wenn Sie Metadaten mit einer URL angeben. Wenn Sie eine Zertifikatsrotation für die Signatur von Metadaten durchführen, konfigurieren Sie Ihre Metadatenquelle so, dass *sowohl* das ursprüngliche als auch das neue Zertifikat für mindestens sechs Stunden veröffentlicht werden. Wenn Amazon Cognito den Cache über die Metadaten-URL aktualisiert, behandelt es jedes Zertifikat als gültig und Ihr SAML-IdP kann beginnen, SAML-Assertionen mit dem neuen Zertifikat zu signieren. Nach Ablauf dieses Zeitraums können Sie das Originalzertifikat aus den veröffentlichten Metadaten entfernen.

## Groß- und Kleinschreibung von SAML-Benutzernamen
<a name="saml-nameid-case-sensitivity"></a>

Wenn ein Verbundbenutzer versucht, sich anzumelden, übergibt der SAML-Identitätsanbieter (IdP) in der SAML-Assertion des Benutzers einen eindeutigen `NameId` Wert für Amazon Cognito. Amazon Cognito identifiziert einen SAML-Verbundbenutzer anhand seines `NameId`-Anspruchs. Unabhängig von den Einstellungen für die Berücksichtigung von Groß- und Kleinschreibung in Ihrem Benutzerpool erkennt Amazon Cognito einen zurückkehrenden Verbundbenutzer von einem SAML-IdP, wenn er seinen eindeutigen Antrag unter Berücksichtigung der Groß- und Kleinschreibung weitergibt. `NameId` Wenn Sie ein Attribut wie `email` `NameId` zuordnen und Ihr Benutzer seine E-Mail-Adresse ändert, kann er sich nicht bei Ihrer App anmelden.

Ordnen Sie `NameId` in Ihren SAML-Assertionen von einem IDP-Attribut zu, das Werte enthält, die sich nicht ändern.

Carlos verfügt beispielsweise über ein Benutzerprofil in Ihrem Benutzerpool ohne Berücksichtigung der Groß- und Kleinschreibung aus einer SAML-Assertion von Active Directory Federation Services (ADFS), die den `NameId`-Wert `Carlos@example.com` übergibt. Wenn Carlos das nächste Mal versucht, sich anzumelden, übergibt Ihr ADFS-IDP den `NameId`-Wert `carlos@example.com`. Da die Groß- und Kleinschreibung von `NameId` exakt übereinstimmen muss, ist die Anmeldung nicht erfolgreich.

Wenn Ihre Benutzer sich nicht anmelden können, nachdem sich ihre `NameID` geändert hat, löschen Sie ihre Benutzerprofile aus Ihrem Benutzerpool. Amazon Cognito erstellt bei der nächsten Anmeldung neue Benutzerprofile.

**Topics**
+ [Kurzreferenz für die IdP-Konfiguration](#cognito-user-pools-saml-idp-reference)
+ [Wissenswertes über SAML IdPs in Amazon Cognito Cognito-Benutzerpools](cognito-user-pools-saml-idp-things-to-know.md)
+ [Groß- und Kleinschreibung von SAML-Benutzernamen](#saml-nameid-case-sensitivity)
+ [Konfiguration Ihres externen SAML-Identitätsanbieters](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool](cognito-user-pools-managing-saml-idp.md)
+ [Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools](cognito-user-pools-SAML-session-initiation.md)
+ [SAML-Benutzer mit Single Sign-Out abmelden](cognito-user-pools-saml-idp-sign-out.md)
+ [SAML-Signatur und Verschlüsselung](cognito-user-pools-SAML-signing-encryption.md)
+ [Namen und Kennungen von SAML-Identitätsanbietern](cognito-user-pools-managing-saml-idp-naming.md)

# Konfiguration Ihres externen SAML-Identitätsanbieters
<a name="cognito-user-pools-integrating-3rd-party-saml-providers"></a>

Wenn Sie Ihrem Benutzerpool einen SAML-Identitätsanbieter (IdP) hinzufügen möchten, müssen Sie einige Konfigurationsaktualisierungen in der Verwaltungsoberfläche Ihres IdP vornehmen. In diesem Abschnitt wird beschrieben, wie Sie die Werte formatieren, die Sie Ihrem IdP zur Verfügung stellen müssen. Sie können auch erfahren, wie Sie das statische oder aktive URL-Metadatendokument abrufen, das den IdP und seine SAML-Ansprüche an Ihren Benutzerpool identifiziert.

Um SAML 2.0-Identitätsanbieter (IdP) -Lösungen von Drittanbietern so zu konfigurieren, dass sie mit dem Verbund für Amazon Cognito Cognito-Benutzerpools funktionieren, müssen Sie Ihren SAML-IdP so konfigurieren, dass er zur folgenden Assertion Consumer Service (ACS) -URL umleitet:. `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse` Wenn Ihr Benutzerpool über eine Amazon Cognito Cognito-Domain verfügt, finden Sie Ihren Benutzerpool-Domänenpfad im **Domain-Menü** Ihres Benutzerpools in der [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito/home).

Bei einigen IdPs SAMLs müssen Sie die auch als `urn` Zielgruppen-URI oder SP-Entitäts-ID bezeichnete ID im Formular angeben. `urn:amazon:cognito:sp:us-east-1_EXAMPLE` Sie finden Ihre Benutzerpool-ID unter **Benutzerpool-Übersicht** in der Amazon Cognito Cognito-Konsole.

Sie müssen Ihren SAML-IdP auch so konfigurieren, dass er Werte für alle Attribute bereitstellt, die Sie in Ihrem Benutzerpool als *erforderliche Attribute* festgelegt haben. In der Regel `email` ist dies ein erforderliches Attribut für Benutzerpools. In diesem Fall muss der SAML-IdP in seiner SAML-Assertion eine Form von `email` Anspruch angeben, und Sie müssen den Anspruch dem Attribut für diesen Anbieter zuordnen.

Die folgenden Konfigurationsinformationen für SAML 2.0-IdP-Lösungen von Drittanbietern sind ein guter Ausgangspunkt, um mit der Einrichtung eines Verbunds mit Amazon Cognito Cognito-Benutzerpools zu beginnen. Die aktuellsten Informationen finden Sie direkt in der Dokumentation Ihres Anbieters.

Um SAML-Anfragen zu signieren, müssen Sie Ihren IdP so konfigurieren, dass er Anfragen vertraut, die mit Ihrem Benutzerpool-Signaturzertifikat signiert wurden. Um verschlüsselte SAML-Antworten zu akzeptieren, müssen Sie Ihren IdP so konfigurieren, dass er *alle* SAML-Antworten an Ihren Benutzerpool verschlüsselt. Ihr Anbieter wird über eine Dokumentation zur Konfiguration dieser Funktionen verfügen. Ein Beispiel von Microsoft finden [Sie unter Microsoft Entra SAML-Tokenverschlüsselung konfigurieren](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-saml-token-encryption).

**Anmerkung**  
Amazon Cognito benötigt nur das Metadatendokument Ihres Identitätsanbieters. Ihr Anbieter bietet möglicherweise auch benutzerdefinierte Konfigurationsinformationen für den SAML 2.0-Verbund mit IAM oder. AWS IAM Identity Center Um zu erfahren, wie Sie die Amazon Cognito Cognito-Integration einrichten, suchen Sie nach allgemeinen Anweisungen zum Abrufen des Metadatendokuments und verwalten Sie den Rest der Konfiguration in Ihrem Benutzerpool.


| Lösung | Weitere Informationen | 
| --- | --- | 
| Microsoft Entra ID | [Föderations-Metadaten](https://learn.microsoft.com/en-us/entra/identity-platform/federation-metadata) | 
| Okta | [So laden Sie die IdP-Metadaten und SAML-Signaturzertifikate für eine SAML-App-Integration herunter](https://support.okta.com/help/s/article/Location-to-download-Okta-IDP-XML-metadata-for-a-SAML-app-in-the-new-Admin-User-Interface) | 
| Auth0 | [Konfigurieren Sie Auth0 als SAML-Identitätsanbieter](https://auth0.com/docs/authenticate/protocols/saml/saml-sso-integrations/configure-auth0-saml-identity-provider) | 
| Ping-Identität () PingFederate | [Exportieren von SAML-Metadaten von PingFederate](https://docs.pingidentity.com/integrations/contentful/configuring_single_sign-on/pf_contentful_integration_exporting_saml_metadata_from_pf.html) | 
| JumpCloud | [Hinweise zur SAML-Konfiguration](https://jumpcloud.com/support/saml-configuration-notes) | 
| SecureAuth | [Integration von SAML-Anwendungen](https://docs.secureauth.com/2104/en/saml-application-integration.html) | 

# Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool
<a name="cognito-user-pools-managing-saml-idp"></a>

Nachdem Sie Ihren Identitätsanbieter für die Zusammenarbeit mit Amazon Cognito konfiguriert haben, können Sie ihn zu Ihren Benutzerpools und App-Clients hinzufügen. Die folgenden Verfahren zeigen, wie Sie SAML-Anbieter in einem Amazon Cognito Cognito-Benutzerpool erstellen, ändern und löschen.

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

Sie können den verwenden AWS-Managementkonsole , um SAML-Identitätsanbieter zu erstellen und zu löschen (). IdPs

Bevor Sie einen SAML-IdP erstellen, benötigen Sie das SAML-Metadatendokument, das Sie vom Drittanbieter-IdP erhalten. Anweisungen zum Abrufen oder Generieren des erforderlichen SAML-Metadaten-Dokuments finden Sie unter [Konfiguration Ihres externen SAML-Identitätsanbieters](cognito-user-pools-integrating-3rd-party-saml-providers.md).

**Konfigurieren Sie einen SAML-2.0-IdP in Ihrem Benutzerpool wie folgt**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Geben Sie bei Aufforderung Ihre AWS -Anmeldeinformationen ein.

1. 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ü **Soziale Netzwerke und externe Anbieter** und wählen Sie dann Identitätsanbieter **hinzufügen** aus.

1. Wählen Sie einen **SAML**-IDP aus.

1. Geben Sie einen **Anbieternamen** ein. Sie können diesen benutzerfreundlichen Namen in einem `identity_provider` Anforderungsparameter an den übergeben[Autorisieren des Endpunkts](authorization-endpoint.md).

1. Geben Sie **IDs** durch Kommas getrennt ein. Eine ID teilt Amazon Cognito mit, dass die E-Mail-Adresse überprüft werden sollte, die ein Benutzer bei der Anmeldung eingibt. Anschließend werden Benutzer zu dem Anbieter weitergeleitet, der ihrer Domäne entspricht.

1. Wählen Sie **Add sign-out flow** (Abmeldeablauf hinzufügen) aus, wenn Amazon Cognito signierte Abmeldeanfragen an Ihren Anbieter senden soll, wenn sich ein Benutzer abmeldet. Sie müssen Ihren SAML 2.0-IdP so konfigurieren, dass er Abmeldeantworten an den `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` Endpunkt sendet, der bei der Konfiguration der verwalteten Anmeldung erstellt wird. Dieser `saml2/logout`-Endpunkt verwendet POST-Binding.
**Anmerkung**  
Wenn diese Option ausgewählt ist und Ihr SAML-IdP eine signierte Abmeldeanforderung erwartet, müssen Sie Ihrem SAML-IdP auch das Signaturzertifikat aus Ihrem Benutzerpool zur Verfügung stellen.  
Der SAML-IdP verarbeitet die signierte Abmeldeanforderung und meldet Ihren Benutzer von der Amazon-Cognito-Sitzung ab.

1. Wählen Sie Ihre **IDP-initiierte SAML-Anmeldekonfiguration.** Wählen Sie aus Sicherheitsgründen die Option Nur **SP-initiierte SAML-Assertionen akzeptieren**. Wenn Sie Ihre Umgebung so vorbereitet haben, dass sie unaufgeforderte SAML-Anmeldesitzungen sicher akzeptiert, wählen Sie **SP-initiierte und IdP-initiierte SAML-Assertionen akzeptieren**. Weitere Informationen finden Sie unter [Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools](cognito-user-pools-SAML-session-initiation.md).

1. Wählen Sie eine **Metadaten-Dokumentquelle** aus. Wenn Ihr IdP SAML-Metadaten unter einer öffentlichen URL anbietet, können Sie **Metadata document URL** (URL für Metadatendokumente) auswählen und die öffentliche URL eingeben. Wählen Sie andernfalls **Upload metadata document** (Hochladen eines Metadatendokuments) und anschließend eine Metadatendatei aus, die Sie zuvor von Ihrem Anbieter heruntergeladen haben.
**Anmerkung**  
Wir empfehlen, dass Sie eine URL für ein Metadaten-Dokument eingeben, wenn Ihr Anbieter über einen öffentlichen Endpunkt verfügt, anstatt eine Datei hochzuladen. Amazon Cognito aktualisiert automatisch Metadaten aus der Metadaten-URL. Normalerweise werden die Metadaten alle sechs Stunden oder bevor sie ablaufen aktualisiert, je nachdem, was zuerst eintritt.

1. **Ordnen Sie Attribute zwischen Ihrem SAML-Anbieter und Ihrem Benutzerpool** zu, um SAML-Anbieterattribute dem Benutzerprofil in Ihrem Benutzerpool zuzuordnen. Fügen Sie die erforderlichen Attribute Ihres Benutzerpools in Ihre Attributzuordnung ein. 

   Wenn Sie beispielsweise das **Benutzerpool-Attribut** `email` auswählen, geben Sie den SAML-Attributnamen so ein, wie dieser in der SAML-Assertion Ihres IdP angezeigt wird. Bietet Ihr IdP Beispiele für SAML-Assertionen, können Sie sich die Namensfindung erleichtern. Einige IdPs verwenden einfache Namen, z. B.`email`, während andere Namen wie die folgenden verwenden.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. Wählen Sie **Erstellen** aus.

------
#### [ API/CLI ]

Verwenden Sie die folgenden Befehle zum Erstellen und Verwalten eines SAML-Identitätsanbieters (IdP).

**Erstellen Sie einen IdP und laden Sie ein Metadaten-Dokument wie folgt hoch**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Beispiel mit Metadaten-Dokument: : `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Wo `details.json` enthält:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**Anmerkung**  
Wenn das *<SAML metadata XML>* Zeichen vorkommt`"`, müssen Sie es `\` als Escape-Zeichen hinzufügen:`\"`.

  Beispiel mit Metadaten-URL: : `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**So laden Sie ein neues Metadatendokument für einen Identitätsanbieter hoch**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Beispiel mit Metadaten-Dokument: : `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Wo `details.json` enthält:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**Anmerkung**  
Wenn das *<SAML metadata XML>* Zeichen vorkommt`"`, müssen Sie `\` als Escape-Zeichen Folgendes hinzufügen:`\"`.

  Beispiel mit Metadaten-URL: : `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Rufen Sie Informationen zu einem bestimmten IDP wie folgt auf**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  `aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**Um Informationen über alle aufzulisten IdPs**
+ AWS CLI: `aws cognito-idp list-identity-providers`

  Beispiel: `aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3`
+ AWS API: [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**So löschen Sie einen Identitätsanbieter**
+ AWS CLI: `aws cognito-idp delete-identity-provider`

  `aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

**So richten Sie den SAML-IdP zum Hinzufügen eines Benutzerpools als vertrauende Seite ein**
+ Der Benutzerpool-Serviceanbieter-URN lautet: `urn:amazon:cognito:sp:us-east-1_EXAMPLE`. Amazon Cognito erfordert einen Wert für die Zielgruppeneinschränkung, der dieser URN in der SAML-Antwort entspricht. Konfigurieren Sie Ihren IdP so, dass er den folgenden POST-Bindungsendpunkt für die IdP-to-SP Antwortnachricht verwendet.

  ```
  https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
  ```
+ Ihr SAML-IdP muss alle erforderlichen Attribute für Ihren Benutzerpool in der SAML-Assertion auffüllen`NameID`. `NameID`wird zur eindeutigen Identifizierung Ihres SAML-Verbundbenutzers im Benutzerpool verwendet. Ihr IdP muss die SAML-Namen-ID jedes Benutzers in einem konsistenten Format übergeben, bei dem Groß- und Kleinschreibung beachtet wird. Jede Änderung des Werts der Namen-ID eines Benutzers erstellt ein neues Benutzerprofil.

**So stellen Sie ein Signaturzertifikat für Ihren SAML-2.0-IdP bereit**
+ **Um eine Kopie des öffentlichen Schlüssels von Amazon Cognito herunterzuladen, mit dem Ihr IdP SAML-Abmeldeanfragen validieren kann, wählen Sie das Menü **Soziale Netzwerke und externe Anbieter** in Ihrem Benutzerpool, wählen Sie Ihren IdP aus und wählen Sie unter **Signaturzertifikat anzeigen** die Option Als .crt herunterladen aus.**

Sie können jeden SAML-Anbieter, den Sie in Ihrem Benutzerpool eingerichtet haben, mit der Amazon-Cognito-Konsole löschen.

**So löschen Sie einen SAML-Anbieter**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. Wählen Sie im Navigationsbereich **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. **Wählen Sie das Menü Soziale Netzwerke und externe Anbieter.**

1. Wählen Sie das Optionsfeld neben der SAML aus, die IdPs Sie löschen möchten.

1. Wenn Sie aufgefordert werden, den **Identitätsanbieter zu löschen**, geben Sie den Namen des SAML-Anbieters ein, um das Löschen zu bestätigen. Wählen Sie danach **Delete** (Löschen) aus.

# Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools
<a name="cognito-user-pools-SAML-session-initiation"></a>

Amazon Cognito unterstützt vom Service Provider initiiertes (SP-initiiertes) Single Sign-On (SSO) und IdP-initiiertes SSO. Als bewährte Sicherheitspraxis sollten Sie SP-initiiertes SSO in Ihrem Benutzerpool implementieren. Abschnitt 5.1.2 des [ SAML V2.0 Technical Overview](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.2.SP-Initiated%20SSO:%20%20Redirect/POST%20Bindings|outline) beschreibt SP-initiiertes SSO. Amazon Cognito ist der Identitätsanbieter (IDP) für Ihre App. Die App ist der Serviceanbieter (SP), der Token für authentifizierte Benutzer abruft. Wenn Sie jedoch einen IdP eines Drittanbieters verwenden, um Benutzer zu authentifizieren, ist Amazon Cognito der SP. Wenn sich Ihre SAML 2.0-Benutzer mit einem vom SP initiierten Flow authentifizieren, müssen sie immer zuerst eine Anfrage an Amazon Cognito stellen und zur Authentifizierung an den IdP weiterleiten.

In einigen Anwendungsfällen für Unternehmen beginnt der Zugriff auf interne Anwendungen mit einem Lesezeichen in einem Dashboard, das vom Unternehmens-IDP gehostet wird. Wenn ein Benutzer ein Lesezeichen auswählt, generiert der IDP eine SAML-Antwort und sendet sie an den SP, um den Benutzer bei der Anwendung zu authentifizieren.

Sie können einen SAML-IdP in Ihrem Benutzerpool so konfigurieren, dass er IdP-initiiertes SSO unterstützt. Wenn Sie die IDP-initiierte Authentifizierung unterstützen, kann Amazon Cognito nicht überprüfen, ob es die empfangene SAML-Antwort angefordert hat, da Amazon Cognito die Authentifizierung nicht mit einer SAML-Anfrage initiiert. Bei SP-initiiertem SSO legt Amazon Cognito Zustandsparameter fest, die eine SAML-Antwort anhand der ursprünglichen Anfrage validieren. Mit der SP-initiierten Anmeldung können Sie sich auch vor Cross-Site Request Forgery (CSRF) schützen.

**Topics**
+ [Implementieren Sie die SP-initiierte SAML-Anmeldung](#cognito-user-pools-saml-idp-authentication)
+ [Implementieren Sie die IDP-initiierte SAML-Anmeldung](#cognito-user-pools-SAML-session-initiation-idp-initiation)

## Implementieren Sie die SP-initiierte SAML-Anmeldung
<a name="cognito-user-pools-saml-idp-authentication"></a>

Es hat sich bewährt, eine service-provider-initiated (vom SP initiierte) Anmeldung bei Ihrem Benutzerpool zu implementieren. Amazon Cognito initiiert die Sitzung Ihres Benutzers und leitet ihn an Ihren IdP weiter. Mit dieser Methode haben Sie die größte Kontrolle darüber, wer Anmeldeanfragen stellt. Unter bestimmten Bedingungen können Sie auch die vom IdP initiierte Anmeldung zulassen.

Der folgende Prozess zeigt, wie Benutzer die SP-initiierte Anmeldung bei Ihrem Benutzerpool über einen SAML-Anbieter abschließen.

![\[Authentifizierungsflussdiagramm der von Amazon Cognito SP initiierten SAML-Anmeldung.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-saml-stepbystep.png)


1. Ihr Benutzer gibt seine E-Mail-Adresse auf einer Anmeldeseite ein. Um die Weiterleitung Ihres Benutzers zu seinem IdP zu ermitteln, können Sie seine E-Mail-Adresse in einer benutzerdefinierten Anwendung erfassen oder die verwaltete Anmeldung in der Webansicht aufrufen.

   Sie können Ihre verwalteten Anmeldeseiten so konfigurieren, dass sie eine Liste von E-Mail-Adressen anzeigen IdPs oder zur Eingabe einer E-Mail-Adresse auffordern und diese mit der ID Ihres SAML-IdP abgleichen. Um nach einer E-Mail-Adresse zu fragen, bearbeiten Sie Ihren Branding-Stil für verwaltete Logins und suchen Sie in **Foundation** nach **Authentifizierungsverhalten** und legen Sie unter **Anbieteranzeige die Option **Anzeigestil**** auf **Domain-Sucheingabe** fest.

1. Ihre App ruft Ihren Benutzerpool-Weiterleitungsendpunkt auf und fordert eine Sitzung mit der Client-ID an, die der App entspricht, und der IdP-ID, die dem Benutzer entspricht.

1. Amazon Cognito leitet Ihren Benutzer mit einer SAML-Anfrage, [optional signiert](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing.title), in einem Element an den IdP weiter. `AuthnRequest`

1. Der IdP authentifiziert den Benutzer interaktiv oder mit einer gespeicherten Sitzung in einem Browser-Cookie.

1. Der IdP leitet Ihren Benutzer mit der [optional verschlüsselten SAML-Assertion in seiner POST-Payload an den SAML-Antwortendpunkt](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing-encryption.title) Ihres Benutzerpools weiter.
**Anmerkung**  
Amazon Cognito storniert Sitzungen, die innerhalb von 5 Minuten keine Antwort erhalten, und leitet den Benutzer zur verwalteten Anmeldung weiter. Wenn Ihr Benutzer dieses Ergebnis feststellt, erhält er eine `Something went wrong` Fehlermeldung.

1. Nachdem es die SAML-Assertion verifiziert und [Benutzerattribute](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping.title) den Ansprüchen in der Antwort zugeordnet hat, erstellt oder aktualisiert Amazon Cognito intern das Benutzerprofil im Benutzerpool. In der Regel gibt Ihr Benutzerpool einen Autorisierungscode an die Browsersitzung Ihres Benutzers zurück.

1. Ihr Benutzer präsentiert seinen Autorisierungscode in Ihrer App, die den Code gegen JSON-Webtoken (JWTs) eintauscht.

1. Ihre App akzeptiert und verarbeitet das ID-Token Ihres Benutzers als Authentifizierung, generiert autorisierte Anfragen an Ressourcen mit seinem Zugriffstoken und speichert das Aktualisierungstoken.

Wenn sich ein Benutzer authentifiziert und einen Autorisierungscode erhält, gibt der Benutzerpool ID-, Zugriffs- und Aktualisierungstoken zurück. Das ID-Token ist ein Authentifizierungsobjekt für die OIDC-basierte Identitätsverwaltung. [Das Zugriffstoken ist ein Autorisierungsobjekt mit OAuth einem Gültigkeitsbereich von 2.0.](https://oauth.net/2/) Das Aktualisierungstoken ist ein Objekt, das neue ID- und Zugriffstoken generiert, wenn die aktuellen Token Ihres Benutzers abgelaufen sind. Sie können die Dauer der Benutzertoken in Ihrem Benutzerpool-App-Client konfigurieren.

Sie können auch die Dauer der Aktualisierungstoken wählen. Nachdem das Aktualisierungstoken eines Benutzers abgelaufen ist, muss er sich erneut anmelden. Wenn sie sich über einen SAML-IdP authentifiziert haben, wird die Sitzungsdauer Ihrer Benutzer durch den Ablauf ihrer Token festgelegt, nicht durch den Ablauf ihrer Sitzung mit ihrem IdP. Ihre App muss das Aktualisierungstoken jedes Benutzers speichern und seine Sitzung erneuern, wenn sie abläuft. Bei der verwalteten Anmeldung werden Benutzersitzungen in einem Browser-Cookie verwaltet, das 1 Stunde lang gültig ist.

## Implementieren Sie die IDP-initiierte SAML-Anmeldung
<a name="cognito-user-pools-SAML-session-initiation-idp-initiation"></a>

Wenn Sie Ihren Identitätsanbieter für die IDP-initiierte SAML 2.0-Anmeldung konfigurieren, können Sie SAML-Assertionen dem `saml2/idpresponse` Endpunkt in Ihrer Benutzerpool-Domäne präsentieren, ohne die Sitzung am starten zu müssen. [Autorisieren des Endpunkts](authorization-endpoint.md) Ein Benutzerpool mit dieser Konfiguration akzeptiert IDP-initiierte SAML-Assertionen von einem externen Identitätsanbieter für Benutzerpools, den der angeforderte App-Client unterstützt.

![\[Authentifizierungsflussdiagramm der Amazon Cognito IDP-initiierten SAML-Anmeldung.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-saml-idpinit.png)


1. Ein Benutzer fordert die SAML-Anmeldung mit Ihrer Anwendung an.

1. Ihre Anwendung ruft einen Browser auf oder leitet den Benutzer zur Anmeldeseite seines SAML-Anbieters weiter.

1. Der IdP authentifiziert den Benutzer interaktiv oder mit einer gespeicherten Sitzung in einem Browser-Cookie.

1. Der IdP leitet Ihren Benutzer mit der SAML-Assertion oder -Antwort in seinem POST-Text zu Ihrer Anwendung weiter.

1. Ihre Anwendung fügt die SAML-Assertion dem POST-Text einer Anfrage an Ihren Benutzerpool-Endpunkt hinzu. `saml2/idpresponse`

1. Amazon Cognito gibt Ihrem Benutzer einen Autorisierungscode aus.

1. Ihr Benutzer präsentiert seinen Autorisierungscode in Ihrer App, die den Code gegen JSON-Webtoken (JWTs) eintauscht.

1. Ihre Anwendung akzeptiert und verarbeitet das ID-Token Ihres Benutzers als Authentifizierung, generiert autorisierte Anfragen an Ressourcen mit seinem Zugriffstoken und speichert das Aktualisierungstoken.

In den folgenden Schritten wird der Gesamtprozess zur Konfiguration und Anmeldung bei einem vom IDP initiierten SAML 2.0-Anbieter beschrieben.

1. Erstellen oder bestimmen Sie einen Benutzerpool und einen App-Client.

1. Erstellen Sie einen SAML 2.0-IdP in Ihrem Benutzerpool.

1. Konfigurieren Sie Ihren IdP so, dass er die IdP-Initiierung unterstützt. Von IDP initiiertes SAML führt zu Sicherheitsüberlegungen, denen andere SSO-Anbieter nicht unterliegen. Aus diesem Grund können Sie keinem App-Client IdPs, der einen SAML-Anbieter mit IDP-initiierter Anmeldung verwendet, Nicht-SAML, einschließlich des Benutzerpools selbst, hinzufügen.

1. Ordnen Sie Ihren IDP-initiierten SAML-Anbieter einem App-Client in Ihrem Benutzerpool zu.

1. Leiten Sie Ihren Benutzer zur Anmeldeseite für Ihren SAML-IdP IdP und rufen Sie eine SAML-Assertion ab.

1. Leiten Sie Ihren Benutzer mit seiner SAML-Assertion zu Ihrem `saml2/idpresponse` Benutzerpool-Endpunkt weiter.

1. Empfangen Sie JSON-Webtoken ()JWTs.

Um unaufgeforderte SAML-Assertions in Ihrem Benutzerpool zu akzeptieren, müssen Sie die Auswirkungen auf die Sicherheit Ihrer App berücksichtigen. Wenn Sie vom IdP initiierte Anfragen annehmen, sind Anforderungs-Spoofing und CSRF-Versuche wahrscheinlich. Obwohl Ihr Benutzerpool eine vom IdP initiierte Anmeldesitzung nicht verifizieren kann, validiert Amazon Cognito Ihre Anforderungsparameter und SAML-Assertionen.

Darüber hinaus darf Ihre SAML-Assertion keinen `InResponseTo` Anspruch enthalten und muss innerhalb der letzten 6 Minuten ausgestellt worden sein.

Sie müssen Anfragen mit IDP-initiierter SAML an Ihren senden. `/saml2/idpresponse` Für SP-initiierte und verwaltete Anmeldeautorisierungsanfragen müssen Sie Parameter angeben, die Ihren angeforderten App-Client, Bereiche, Umleitungs-URI und andere Details als Abfragezeichenfolgenparameter in Anfragen identifizieren. `HTTP GET` Bei IDP-initiierten SAML-Assertionen müssen die Details Ihrer Anfrage jedoch als `RelayState` Parameter im Hauptteil einer Anfrage formatiert werden. `HTTP POST` Der Anfragetext muss auch Ihre SAML-Assertion als Parameter enthalten. `SAMLResponse`

Im Folgenden finden Sie ein Beispiel für eine Anfrage und Antwort für einen vom IDP initiierten SAML-Anbieter.

```
POST /saml2/idpresponse HTTP/1.1
User-Agent: USER_AGENT
Accept: */*
Host: example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded

SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone

HTTP/1.1 302 Found
Date: Wed, 06 Dec 2023 00:15:29 GMT
Content-Length: 0
x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb
Location: https://www.example.com?code=[Authorization code]
```

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

**So konfigurieren Sie einen IdP für IdP-initiiertes SAML**

1. Erstellen Sie einen [Benutzerpool, einen](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) [App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) und einen SAML-Identitätsanbieter.

1. Trennen Sie alle Social Media- und OIDC-Identitätsanbieter von Ihrem App-Client, falls welche verknüpft sind.

1. Navigieren Sie in Ihrem Benutzerpool zum Menü **Soziale Dienste und externe Anbieter**.

1. Bearbeiten oder fügen Sie einen SAML-Anbieter hinzu.

1. Wählen Sie unter **IDP-initiierte SAML-Anmeldung** die Option SP-initiierte und **IDP-initiierte SAML-Assertionen akzeptieren** aus.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ API/CLI ]

**So konfigurieren Sie einen IdP für IdP-initiiertes SAML**

Konfigurieren Sie IDP-initiiertes SAML mit dem `IDPInit` Parameter in einer [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)oder [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API-Anfrage. Im Folgenden finden Sie ein Beispiel für einen IdP, `ProviderDetails` der IdP-initiiertes SAML unterstützt.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# SAML-Benutzer mit Single Sign-Out abmelden
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito unterstützt SAML 2.0 [Single Logout](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline) (SLO). Mit SLO kann Ihre Anwendung Benutzer von ihren SAML-Identitätsanbietern (IdPs) abmelden, wenn sie sich aus Ihrem Benutzerpool abmelden. Auf diese Weise müssen sich Benutzer, wenn sie sich erneut bei Ihrer Anwendung anmelden möchten, mit ihrem SAML-IdP authentifizieren. Andernfalls verfügen sie möglicherweise über IdP- oder Benutzerpool-Browser-Cookies, die sie an Ihre Anwendung weiterleiten, ohne dass sie Anmeldeinformationen angeben müssen.

Wenn Sie Ihren SAML-IdP so konfigurieren, dass **er den Abmeldefluss** unterstützt, leitet Amazon Cognito Ihren Benutzer mit einer signierten SAML-Abmeldeanfrage an Ihren IdP weiter. Amazon Cognito bestimmt den Ort der Weiterleitung anhand der `SingleLogoutService` URL in Ihren IdP-Metadaten. Amazon Cognito signiert die Abmeldeanforderung mit Ihrem Benutzerpool-Signaturzertifikat.

![\[Authentifizierungsflussdiagramm der Amazon Cognito SAML-Abmeldung. Der Benutzer fordert die Abmeldung an und Amazon Cognito leitet ihn mit einer SAML-Abmeldeanfrage an seinen Anbieter weiter.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


Wenn Sie einen Benutzer mit einer SAML-Sitzung an Ihren `/logout` Benutzerpool-Endpunkt weiterleiten, leitet Amazon Cognito Ihren SAML-Benutzer mit der folgenden Anfrage an den SLO-Endpunkt weiter, der in den IdP-Metadaten angegeben ist.

```
https://[SingleLogoutService endpoint]?
SAMLRequest=[encoded SAML request]&
RelayState=[RelayState]&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature=[User pool RSA signature]
```

Ihr Benutzer kehrt dann mit einem `LogoutResponse` von seinem IdP zu Ihrem `saml2/logout` Endpunkt zurück. Ihr IdP muss eine `HTTP POST` Anfrage einreichen. `LogoutResponse` Amazon Cognito leitet sie dann von ihrer ursprünglichen Abmeldeanfrage an das Weiterleitungsziel weiter.

Ihr SAML-Anbieter sendet möglicherweise eine `LogoutResponse` mit mehr als einer`AuthnStatement`. Das `sessionIndex` in der ersten Antwort dieses Typs muss mit dem `AuthnStatement` `sessionIndex` in der SAML-Antwort, mit der der Benutzer ursprünglich authentifiziert wurde, übereinstimmen. Wenn `sessionIndex` sich das in einem anderen befindet`AuthnStatement`, erkennt Amazon Cognito die Sitzung nicht und Ihr Benutzer wird nicht abgemeldet.

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

**Um die SAML-Abmeldung zu konfigurieren**

1. Erstellen Sie einen [Benutzerpool, einen](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) [App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) und einen SAML-IdP.

1. Wenn Sie Ihren SAML-Identitätsanbieter erstellen oder bearbeiten, aktivieren Sie unter **Informationen zum Identitätsanbieter** das Kästchen mit dem Titel Abmeldefluss **hinzufügen**.

1. Wählen Sie im Menü **Soziale Netzwerke und externe Anbieter** Ihres Benutzerpools Ihren IdP aus und suchen Sie das **Signaturzertifikat**.

1. Wählen Sie **Als .crt herunterladen**.

1. Konfigurieren Sie Ihren SAML-Anbieter so, dass er SAML Single Logout und Request Signing unterstützt, und laden Sie das Benutzerpool-Signaturzertifikat hoch. Ihr IdP muss zu `/saml2/logout` Ihrer Benutzerpool-Domain weiterleiten.

------
#### [ API/CLI ]

**Um die SAML-Abmeldung zu konfigurieren**

Konfigurieren Sie Single Logout mit dem `IDPSignout` Parameter einer [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)oder [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API-Anfrage. Im Folgenden finden Sie ein Beispiel für einen IdP, `ProviderDetails` der SAML Single Logout unterstützt.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",,
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# SAML-Signatur und Verschlüsselung
<a name="cognito-user-pools-SAML-signing-encryption"></a>

Bei der SAML 2.0-Anmeldung steht der Benutzer einer Anwendung als Träger von Anfragen und Antworten in seinem Authentifizierungsablauf im Mittelpunkt. Möglicherweise möchten Sie sicherstellen, dass Benutzer diese SAML-Dokumente während der Übertragung nicht lesen oder ändern. Um dies zu erreichen, fügen Sie den SAML-Identitätsanbietern (IdPs) in Ihrem Benutzerpool SAML-Signatur und Verschlüsselung hinzu. Mit der SAML-Signatur fügen Ihre Benutzerpools SAML-Anmelde- und Abmeldeanfragen eine Signatur hinzu. Mit dem öffentlichen Schlüssel Ihres Benutzerpools kann Ihr IdP überprüfen, ob er unveränderte SAML-Anfragen empfängt. Wenn Ihr IdP dann antwortet und SAML-Assertionen an die Browsersitzungen der Benutzer weiterleitet, kann der IdP diese Antwort verschlüsseln, sodass der Benutzer seine eigenen Attribute und Berechtigungen nicht überprüfen kann.

Bei der SAML-Signatur und -Verschlüsselung müssen alle kryptografischen Operationen während SAML-Vorgängen im Benutzerpool Signaturen und Chiffretext mit user-pool-provided Schlüsseln generieren, die Amazon Cognito generiert. Derzeit können Sie einen Benutzerpool nicht so konfigurieren, dass er Anfragen signiert oder verschlüsselte Assertionen mit einem externen Schlüssel akzeptiert.

**Anmerkung**  
Ihre Benutzerpoolzertifikate sind 10 Jahre gültig. Einmal pro Jahr generiert Amazon Cognito neue Signatur- und Verschlüsselungszertifikate für Ihren Benutzerpool. Amazon Cognito gibt das neueste Zertifikat zurück, wenn Sie das Signaturzertifikat anfordern, und signiert Anfragen mit dem neuesten Signaturzertifikat. Ihr IdP kann SAML-Assertionen mit jedem Benutzerpool-Verschlüsselungszertifikat verschlüsseln, das nicht abgelaufen ist. Ihre vorherigen Zertifikate sind weiterhin für ihre gesamte Dauer gültig und der öffentliche Schlüssel ändert sich nicht zwischen den Zertifikaten. Es hat sich bewährt, das Zertifikat in Ihrer Anbieterkonfiguration jährlich zu aktualisieren.

**Topics**
+ [Verschlüsselte SAML-Antworten von Ihrem IdP akzeptieren](#cognito-user-pools-SAML-encryption)
+ [SAML-Anfragen signieren](#cognito-user-pools-SAML-signing)

## Verschlüsselte SAML-Antworten von Ihrem IdP akzeptieren
<a name="cognito-user-pools-SAML-encryption"></a>

Amazon Cognito und Ihr IdP können SAML-Antworten vertraulich behandeln, wenn sich Benutzer an- und abmelden. Amazon Cognito weist jedem externen SAML-Anbieter, den Sie in Ihrem Benutzerpool konfigurieren, ein öffentlich-privates RSA-Schlüsselpaar und ein Zertifikat zu. Wenn Sie die Antwortverschlüsselung für Ihren SAML-Anbieter für Ihren Benutzerpool aktivieren, müssen Sie Ihr Zertifikat auf einen IdP hochladen, der verschlüsselte SAML-Antworten unterstützt. Ihre Benutzerpool-Verbindung zu Ihrem SAML-IdP funktioniert nicht, bevor Ihr IdP beginnt, alle SAML-Assertionen mit dem bereitgestellten Schlüssel zu verschlüsseln.

Im Folgenden finden Sie einen Überblick über den Ablauf einer verschlüsselten SAML-Anmeldung.

1. Ihr Benutzer beginnt mit der Anmeldung und wählt seinen SAML-IdP aus.

1. Ihr Benutzerpool [Autorisieren des Endpunkts](authorization-endpoint.md) leitet Ihren Benutzer mit einer SAML-Anmeldeanfrage zu seinem SAML-IdP weiter. Ihr Benutzerpool kann dieser Anfrage optional eine Signatur beifügen, die eine Integritätsprüfung durch den IdP ermöglicht. Wenn Sie SAML-Anfragen signieren möchten, müssen Sie Ihren IdP so konfigurieren, dass er Anfragen akzeptiert, die Ihr Benutzerpool mit dem öffentlichen Schlüssel im Signaturzertifikat signiert hat.

1. Der SAML-IdP meldet Ihren Benutzer an und generiert eine SAML-Antwort. Der IdP verschlüsselt die Antwort mit dem öffentlichen Schlüssel und leitet Ihren Benutzer zu Ihrem `/saml2/idpresponse` Benutzerpool-Endpunkt weiter. Der IdP muss die Antwort gemäß der SAML 2.0-Spezifikation verschlüsseln. Weitere Informationen finden Sie unter `Element <EncryptedAssertion>` [Assertionen und Protokolle für die OASIS Security Assertion Markup](https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf) Language (SAML) V2.0.

1. Ihr Benutzerpool entschlüsselt den Chiffretext in der SAML-Antwort mit dem privaten Schlüssel und meldet Ihren Benutzer an.

**Wichtig**  
Wenn Sie die Antwortverschlüsselung für einen SAML-IdP in Ihrem Benutzerpool aktivieren, muss Ihr IdP alle Antworten mit einem öffentlichen Schlüssel verschlüsseln, der für den Anbieter spezifisch ist. Amazon Cognito akzeptiert keine unverschlüsselten SAML-Antworten von einem externen SAML-IdP, den Sie für die Unterstützung von Verschlüsselung konfigurieren. 

Jeder externe SAML-IdP in Ihrem Benutzerpool kann die Antwortverschlüsselung unterstützen, und jeder IdP erhält sein eigenes key pair.

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

**Um die SAML-Antwortverschlüsselung zu konfigurieren**

1. Erstellen Sie einen [Benutzerpool, einen](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) [App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) und einen SAML-IdP.

1. Wenn Sie Ihren SAML-Identitätsanbieter erstellen oder bearbeiten, aktivieren Sie unter **Anfragen signieren und Antworten verschlüsseln** das Kästchen mit dem Titel **Verschlüsselte SAML-Assertionen von diesem Anbieter anfordern**.

1. Wählen Sie im Menü **Soziale Netzwerke und externe Anbieter** Ihres Benutzerpools Ihren SAML-IdP aus und wählen Sie **Verschlüsselungszertifikat anzeigen** aus.

1. Wählen Sie **Als .crt herunterladen** und stellen Sie die heruntergeladene Datei Ihrem SAML-IdP zur Verfügung. Konfigurieren Sie Ihren SAML-IdP so, dass SAML-Antworten mit dem Schlüssel im Zertifikat verschlüsselt werden.

------
#### [ API/CLI ]

**Um die SAML-Antwortverschlüsselung zu konfigurieren**

Konfigurieren Sie die Antwortverschlüsselung mit dem `EncryptedResponses` Parameter einer [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)oder [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API-Anfrage. Im Folgenden finden Sie ein Beispiel für einen IdP, `ProviderDetails` der das Signieren von Anfragen unterstützt.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

Um das Verschlüsselungszertifikat aus Ihrem Benutzerpool abzurufen, stellen Sie eine [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)API-Anfrage und rufen Sie den Wert von `ActiveEncryptionCertificate` im Antwortparameter `ProviderDetails` ab. Speichern Sie dieses Zertifikat und stellen Sie es Ihrem IdP als Verschlüsselungszertifikat für Anmeldeanfragen aus Ihrem Benutzerpool zur Verfügung.

------

## SAML-Anfragen signieren
<a name="cognito-user-pools-SAML-signing"></a>

Die Fähigkeit, die Integrität von SAML 2.0-Anfragen an Ihren IdP nachzuweisen, ist ein Sicherheitsvorteil der von Amazon Cognito SP initiierten SAML-Anmeldung. Jeder Benutzerpool mit einer Domain erhält ein X.509-Signaturzertifikat für den Benutzerpool. Mit dem öffentlichen Schlüssel in diesem Zertifikat wenden Benutzerpools eine kryptografische Signatur auf die *Abmeldeanfragen* an, die Ihr Benutzerpool generiert, wenn Ihre Benutzer einen SAML-IdP auswählen. *Sie können Ihren App-Client optional so konfigurieren, dass er SAML-Anmeldeanfragen signiert.* Wenn Sie Ihre SAML-Anfragen signieren, kann Ihr IdP überprüfen, ob die Signatur in den XML-Metadaten Ihrer Anfragen mit dem öffentlichen Schlüssel in dem von Ihnen bereitgestellten Benutzerpoolzertifikat übereinstimmt.

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

**Um das Signieren von SAML-Anfragen zu konfigurieren**

1. Erstellen Sie einen [Benutzerpool, einen](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) [App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) und einen SAML-IdP.

1. Wenn Sie Ihren SAML-Identitätsanbieter erstellen oder bearbeiten, aktivieren Sie unter **Anfragen signieren und Antworten verschlüsseln** das Kästchen mit dem Titel **SAML-Anfragen an diesen Anbieter signieren**.

1. Wählen Sie im Menü **Soziale Netzwerke und externe Anbieter** Ihres Benutzerpools die Option Signaturzertifikat **anzeigen** aus.

1. Wählen Sie **Als .crt herunterladen** und stellen Sie die heruntergeladene Datei Ihrem SAML-IdP zur Verfügung. Konfigurieren Sie Ihren SAML-IdP, um die Signatur eingehender SAML-Anfragen zu überprüfen.

------
#### [ API/CLI ]

**So konfigurieren Sie das Signieren von SAML-Anfragen**

Konfigurieren Sie die Anforderungssignatur mit dem `RequestSigningAlgorithm` Parameter einer [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)oder [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API-Anfrage. Im Folgenden finden Sie ein Beispiel für einen IdP, `ProviderDetails` der das Signieren von Anfragen unterstützt.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Namen und Kennungen von SAML-Identitätsanbietern
<a name="cognito-user-pools-managing-saml-idp-naming"></a>

Wenn Sie Ihre SAML-Identitätsanbieter (IdPs) benennen und IdP-Identifikatoren zuweisen, können Sie den Fluss von SP-initiierten An- und Abmeldeanfragen an diesen Anbieter automatisieren. Informationen zu Zeichenketteneinschränkungen für den Anbieternamen finden Sie in der Eigenschaft von. `ProviderName` [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#CognitoUserPools-CreateIdentityProvider-request-ProviderName)

![\[Authentifizierungsflussdiagramm der von Amazon Cognito SP initiierten SAML-Anmeldung mit einer IdP-ID und verwalteter Anmeldung. Der Benutzer gibt eine E-Mail-Adresse für die verwaltete Anmeldung an und Amazon Cognito leitet ihn automatisch an seinen Anbieter weiter.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-saml-identifier.png)


Sie können auch bis zu 50 Identifikatoren für Ihre SAML-Anbieter auswählen. Ein Identifier ist ein benutzerfreundlicher Name für einen IdP in Ihrem Benutzerpool und muss innerhalb des Benutzerpools eindeutig sein. Wenn Ihre SAML-Identifikatoren mit den E-Mail-Domains Ihrer Benutzer übereinstimmen, fordert die verwaltete Anmeldung die E-Mail-Adresse jedes Benutzers an, bewertet die Domain in seiner E-Mail-Adresse und leitet sie an den IdP weiter, der seiner Domain entspricht. Da dieselbe Organisation mehrere Domains besitzen kann, kann ein einzelner IdP mehrere Identifikatoren haben.

Unabhängig davon, ob Sie E-Mail-Domain-IDs verwenden oder nicht, können Sie Identifikatoren in einer Mehrmandanten-App verwenden, um Benutzer zum richtigen IdP weiterzuleiten. Wenn Sie die verwaltete Anmeldung vollständig umgehen möchten, können Sie die Links, die Sie Benutzern präsentieren, so anpassen, dass sie [Autorisieren des Endpunkts](authorization-endpoint.md) direkt zu ihrem IdP weiterleiten. Um Ihre Benutzer mit einer Kennung anzumelden und zu ihrem IdP weiterzuleiten, fügen Sie die Kennung in das Format `idp_identifier=myidp.example.com` in die Anforderungsparameter ihrer ersten Autorisierungsanfrage ein.

Eine andere Methode, um einen Benutzer an Ihren IdP weiterzuleiten, besteht darin, den Parameter `identity_provider` mit dem Namen Ihres IdP im folgenden URL-Format zu füllen.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
identity_provider=MySAMLIdP&
client_id=1example23456789&
redirect_uri=https://www.example.com
```

Nachdem sich ein Benutzer mit Ihrem SAML-IdP angemeldet hat, leitet Ihr IdP ihn mit einer SAML-Antwort im `HTTP POST` Text an Ihren Endpunkt weiter. `/saml2/idpresponse` Amazon Cognito verarbeitet die SAML-Assertion und leitet, wenn die Ansprüche in der Antwort den Erwartungen entsprechen, zu Ihrer App-Client-Callback-URL weiter. Nachdem Ihr Benutzer die Authentifizierung auf diese Weise abgeschlossen hat, hat er nur mit Webseiten für Ihren IdP und Ihre App interagiert.

Bei IdP-Identifikatoren in einem Domänenformat fordert die verwaltete Anmeldung bei der Anmeldung E-Mail-Adressen an und leitet die Benutzer dann, wenn die E-Mail-Domain mit einer IdP-ID übereinstimmt, auf die Anmeldeseite für ihren IdP weiter. Sie erstellen beispielsweise eine App, für die sich Mitarbeiter zweier verschiedener Unternehmen anmelden müssen. Das erste Unternehmen, AnyCompany A, besitzt `exampleA.com` und`exampleA.co.uk`. Das zweite Unternehmen, AnyCompany B, besitzt`exampleB.com`. Für dieses Beispiel haben Sie zwei eingerichtet IdPs, eine für jedes Unternehmen, wie folgt: 
+ Für IdP A definieren Sie die IDs `exampleA.com` und `exampleA.co.uk`.
+ Für IdP-B definieren Sie die ID `exampleB.com`.

Rufen Sie in Ihrer App die verwaltete Anmeldung für Ihren App-Client auf, um jeden Benutzer zur Eingabe seiner E-Mail-Adresse aufzufordern. Amazon Cognito leitet die Domain von der E-Mail-Adresse ab, korreliert die Domain mit einem IdP mit einer Domain-ID und leitet Ihren Benutzer mit einer Anfrage an den, die einen Anforderungsparameter enthält[Autorisieren des Endpunkts](authorization-endpoint.md), an den richtigen IdP weiter. `idp_identifier` Wenn ein Benutzer beispielsweise eintritt, ist die nächste Seite`bob@exampleA.co.uk`, mit der er interagiert, die IdP-Anmeldeseite unter. `https://auth.exampleA.co.uk/sso/saml`

Sie können dieselbe Logik auch unabhängig implementieren. In Ihrer App können Sie ein benutzerdefiniertes Formular erstellen, das Benutzereingaben sammelt und sie gemäß Ihrer eigenen Logik mit dem richtigen IdP korreliert. Sie können benutzerdefinierte Portale für jeden Ihrer App-Mandanten generieren, wobei jedes Portal mit der ID des Mandanten in den Anforderungsparametern auf den Autorisierungsendpunkt verweist.

Um eine E-Mail-Adresse zu erfassen und die Domain bei der verwalteten Anmeldung zu analysieren, weisen Sie jedem SAML-IdP, den Sie Ihrem App-Client zugewiesen haben, mindestens eine Kennung zu. Standardmäßig zeigt der Anmeldebildschirm für die verwaltete Anmeldung eine Schaltfläche für jedes Element an IdPs, das Sie Ihrem App-Client zugewiesen haben. Wenn Sie jedoch erfolgreich Kennungen zugewiesen haben, sieht Ihre klassische Hosted UI-Anmeldeseite wie in der folgenden Abbildung aus.

![\[Eine von Amazon Cognito verwaltete Anmeldeseite, auf der die lokale Benutzeranmeldung und die Aufforderung eines Verbundbenutzers zur Eingabe einer E-Mail-Adresse angezeigt werden.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-saml-identifiers.png)


**Anmerkung**  
In der klassischen gehosteten Benutzeroberfläche werden Sie auf der Anmeldeseite für Ihren App-Client automatisch zur Eingabe einer E-Mail-Adresse aufgefordert, wenn Sie Ihrer E-Mail-Adresse Kennungen zuweisen. IdPs Bei der verwalteten Anmeldung müssen Sie dieses Verhalten im Branding-Editor aktivieren. Wählen Sie in der Kategorie Einstellungen für **das Authentifizierungsverhalten** unter der Überschrift **Anbieteranzeige** die Option **Domain-Sucheingabe** aus.

Die Domainanalyse bei verwalteter Anmeldung erfordert, dass Sie Domains als Ihre IdP-Identifikatoren verwenden. Wenn Sie jeder SAML IdPs für einen App-Client eine Kennung beliebigen Typs zuweisen, zeigt die verwaltete Anmeldung für diese App keine IDP-Auswahlschaltflächen mehr an. Fügen Sie IdP-Identifikatoren für SAML hinzu, wenn Sie E-Mail-Parsing oder benutzerdefinierte Logik zum Generieren von Weiterleitungen verwenden möchten. Wenn Sie unbeaufsichtigte Weiterleitungen generieren möchten und auch möchten, dass auf Ihren verwalteten Anmeldeseiten eine Liste von angezeigt wird IdPs, weisen Sie keine Kennungen zu und verwenden Sie den `identity_provider` Anforderungsparameter in Ihren Autorisierungsanfragen.
+ Wenn Sie Ihrem App-Client nur einen SAML-IdP zuweisen, wird auf der verwalteten Anmeldeseite eine Schaltfläche angezeigt, mit der Sie sich mit diesem IdP anmelden können.
+ Wenn Sie jedem SAML-IdP, den Sie für Ihren App-Client aktivieren, eine Kennung zuweisen, wird auf der verwalteten Anmeldeseite eine Benutzereingabeaufforderung für eine E-Mail-Adresse angezeigt.
+ Wenn Sie mehrere haben IdPs und nicht allen eine Kennung zuweisen, wird auf der Anmeldeseite für verwaltete Anmeldung eine Schaltfläche angezeigt, mit der Sie sich bei jedem zugewiesenen IdP anmelden können.
+ Wenn Sie Ihren Kennungen zugewiesen haben IdPs und Sie möchten, dass auf Ihren verwalteten Anmeldeseiten eine Auswahl von IdP-Schaltflächen angezeigt wird, fügen Sie Ihrem App-Client einen neuen IdP hinzu, der keine ID hat, oder erstellen Sie einen neuen App-Client. Sie können auch einen vorhandenen IdP löschen und ihn ohne ID erneut hinzufügen. Wenn Sie einen neuen IdP erstellen, erstellen Ihre SAML-Benutzer neue Benutzerprofile. Diese doppelte Anzahl aktiver Benutzer kann sich in dem Monat, in dem Sie Ihre IdP-Konfiguration ändern, auf die Abrechnung auswirken.

Weitere Informationen zur IdP-Einrichtung finden Sie unter [Konfigurieren von Identitätsanbietern für Ihren Benutzerpool.](cognito-user-pools-identity-provider.md).

# Verwendung von OIDC-Identitätsanbietern mit einem Benutzerpool
<a name="cognito-user-pools-oidc-idp"></a>

Benutzer können sich mit ihren vorhandenen Konten von OpenID Connect (OIDC) -Identitätsanbietern () bei Ihrer Anwendung anmelden. IdPs Mit OIDC-Anbietern können Benutzer unabhängiger Single Sign-On-Systeme bestehende Anmeldeinformationen angeben, während Ihre Anwendung OIDC-Token im gemeinsamen Format von Benutzerpools erhält. Um einen OIDC-IdP zu konfigurieren, richten Sie Ihren IdP so ein, dass er Ihren Benutzerpool als RP verwaltet, und konfigurieren Sie Ihre Anwendung so, dass Ihr Benutzerpool als IdP verwaltet wird. Amazon Cognito dient als Zwischenschritt zwischen mehreren OIDC IdPs und Ihren Anwendungen. Ihr Benutzerpool wendet Regeln zur Attributzuweisung auf die Ansprüche in den ID- und Zugriffstoken an, die Ihr Anbieter direkt an Ihren Benutzerpool weitergibt. Amazon Cognito gibt dann neue Token aus, die auf den zugewiesenen Benutzerattributen und allen zusätzlichen Anpassungen basieren, die Sie am Authentifizierungsablauf mit [Lambda-Triggern](cognito-user-pools-working-with-lambda-triggers.md#lambda-triggers-for-federated-users) vorgenommen haben.

Benutzer, die sich mit einem OIDC-IdP anmelden, müssen keine neuen Anmeldeinformationen oder Informationen angeben, um auf Ihre Benutzerpool-Anwendung zuzugreifen. Ihre Anwendung kann sie zur Anmeldung im Hintergrund an ihren IdP weiterleiten, wobei ein Benutzerpool als Tool im Hintergrund das Tokenformat für Ihre Anwendung standardisiert. Weitere Informationen zur IdP-Umleitung finden Sie unter. [Autorisieren des Endpunkts](authorization-endpoint.md)

Wie bei anderen Identitätsanbietern von Drittanbietern müssen Sie Ihre Anwendung beim OIDC-Anbieter registrieren und Informationen über die IdP-Anwendung abrufen, die Sie mit Ihrem Benutzerpool verbinden möchten. Ein Benutzerpool-OIDC-IdP benötigt eine Client-ID, einen geheimen Client-Schlüssel, Bereiche, die Sie anfordern möchten, und Informationen zu Providerdienst-Endpunkten. Ihr Benutzerpool kann die Provider-OIDC-Endpunkte von einem Discovery-Endpunkt aus ermitteln oder Sie können sie manuell eingeben. Sie müssen auch Provider-ID-Token untersuchen und Attributzuordnungen zwischen dem IdP und den Attributen in Ihrem Benutzerpool erstellen.

![\[Ablauf der OIDC-Benutzerpool-IdP-Authentifizierung\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/flow-cup-oidc-endpoints.png)


Weitere Informationen [Authentifizierungsablauf für den OIDC-Benutzerpool-IdP](cognito-user-pools-oidc-flow.md) zu diesem Authentifizierungsablauf finden Sie unter.

**Anmerkung**  
Die Anmeldung über einen Drittanbieter (Verbund) in Amazon-Cognito-Benutzerpools wird unterstützt. Diese Funktion ist unabhängig vom OIDC-Verbund mit Amazon Cognito Cognito-Identitätspools.

Sie können Ihrem Benutzerpool in der, über die oder mit der AWS-Managementkonsole Benutzerpool-API-Methode einen OIDC-IdP hinzufügen. AWS CLI[CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Topics**
+ [Voraussetzungen](#cognito-user-pools-oidc-idp-prerequisites)
+ [Registrieren Sie eine Anwendung bei einem OIDC-IdP](#cognito-user-pools-oidc-idp-step-1)
+ [Hinzufügen eines OIDC-IdP zu Ihrem Benutzerpool](#cognito-user-pools-oidc-idp-step-2)
+ [Testen Ihrer OIDC-IdP-Konfiguration](#cognito-user-pools-oidc-idp-step-3)
+ [Authentifizierungsablauf für den OIDC-Benutzerpool-IdP](cognito-user-pools-oidc-flow.md)

## Voraussetzungen
<a name="cognito-user-pools-oidc-idp-prerequisites"></a>

Bevor Sie beginnen, muss Folgendes sichergestellt sein:
+ Ein Benutzerpool mit einem App-Client und eine Benutzerpool-Domäne. Weitere Informationen finden Sie unter [Einen Benutzerpool erstellen](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).
+ Ein OIDC IdP mit folgender Konfiguration: 
  + Unterstützt die `client_secret_post` Clientauthentifizierung. Amazon Cognito überprüft nicht den `token_endpoint_auth_methods_supported`-Antrag am OIDC-Erkennungsendpunkt für Ihren IdP. Amazon Cognito unterstützt nicht die `client_secret_basic` Clientauthentifizierung. Weitere Informationen zur Clientauthentifizierung finden Sie unter [Clientauthentifizierung](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) in der Dokumentation zu OpenID Connect.
  + Verwendet HTTPS nur für OIDC-Endpunkte wie `openid_configuration`, `userInfo` und `jwks_uri`.
  + Verwendet nur die TCP-Ports 80 und 443 für OIDC-Endpunkte.
  + Signiert ID-Token nur mit HMAC-SHA-, ECDSA- oder RSA-Algorithmen.
  + Veröffentlicht einen Schlüssel-ID`kid`-Anspruch am `jwks_uri` und enthält einen `kid`-Anspruch in seinen Token.
  + Präsentiert einen nicht abgelaufenen öffentlichen Schlüssel mit einer gültigen Root-CA-Vertrauenskette.

## Registrieren Sie eine Anwendung bei einem OIDC-IdP
<a name="cognito-user-pools-oidc-idp-step-1"></a>

Bevor Sie Ihrer Benutzerpool-Konfiguration einen OIDC-IdP hinzufügen und ihn App-Clients zuweisen, richten Sie in Ihrem IdP eine OIDC-Client-Anwendung ein. Ihr Benutzerpool ist die Rely-Party-Anwendung, die die Authentifizierung mit Ihrem IdP verwaltet.

**Registrieren mit einem OIDC-IdP**

1. Erstellen Sie ein Entwickler-Konto bei dem OIDC-IdP.  
**Links zu OIDC IdPs**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-oidc-idp.html)

1. Registrieren Sie Ihre Benutzerpool-Domänen-URL mit dem Endpunkt `/oauth2/idpresponse` bei Ihrem OIDC-Identitätsanbieter. Auf diese Weise wird sichergestellt, dass der OIDC-Identitätsanbieter sie von Amazon Cognito später akzeptiert, wenn es Benutzer authentifiziert.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

1. Wählen Sie die [Bereiche](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-scopes) aus, die Ihr Benutzerverzeichnis mit Ihrem Benutzerpool gemeinsam nutzen soll. Der Bereich **openid** ist erforderlich, damit OIDC Benutzerinformationen IdPs anbieten kann. [Der `email` Umfang ist erforderlich, um Zugriff auf die Ansprüche und Angaben zu gewähren. `email``email_verified`](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) Zusätzliche Bereiche in der OIDC-Spezifikation gelten `profile` für alle Benutzerattribute und für und`phone`. `phone_number` `phone_number_verified`

1. Der OIDC-Identitätsanbieter stellt Ihnen eine Client-ID und einen geheimen Client-Schlüssel bereit. Notieren Sie sich diese Werte und fügen Sie sie der Konfiguration des OIDC-IdP hinzu, den Sie später zu Ihrem Benutzerpool hinzufügen.

**Beispiel: Verwendung von Salesforce als OIDC-Identitätsanbieter für Ihren Benutzerpool**

 Sie verwenden einen OIDC-IdP, wenn Sie eine Vertrauenstellung zwischen einem OIDC-kompatiblen IdP wie Salesforce und Ihrem Benutzerpool herstellen möchten.

1. [Erstellen Sie ein Konto](https://developer.salesforce.com/signup) auf der Salesforce-Entwickler-Website.

1. [Melden Sie sich über Ihr Entwickler-Konto an, das Sie im vorherigen Schritt eingerichtet haben.](https://developer.salesforce.com)

1. Führen Sie auf Ihrer Salesforce-Seite einen der folgenden Schritte aus:
   +  Wenn Sie Lightning Experience verwenden, wählen Sie das Zahnradsymbol für die Einrichtung und dann **Setup Home** (Einrichtung Startseite) aus.
   +  Wenn Sie Salesforce Classic verwenden und **Setup (Einstellung)** in der Kopfzeile der Benutzeroberfläche sehen, wählen Sie es aus.
   +  Wenn Sie Salesforce Classic verwenden und **Setup (Einstellung)** nicht angezeigt wird, wählen Sie Ihren Namen in der oberen Navigationsleiste und wählen dann **Setup (Einstellung)** aus der Dropdown-Liste aus.

1. Wählen Sie in der linken Navigationsleiste **Company Settings (Unternehmenseinstellungen)**. 

1. Wählen Sie in der Navigationsleiste **Domain** (Domäne), geben Sie eine Domäne ein und wählen Sie **Create** (Erstellen). 

1. Wählen Sie in der linken Navigationsleiste **Platform Tools** (Plattform-Tools) und wählen Sie **Apps** (Anwendungen). 

1. Wählen Sie **App Manager**.

1. 

   1. Wählen Sie **new connected app** (neue verbundene App) aus.

   1. Füllen Sie die Pflichtfelder aus.

      Geben Sie unter **Start URL** (Start-URL) eine URL am `/authorize`-Endpunkt für die Benutzerpool-Domäne ein, die sich bei Ihrem Salesforce-IDP anmeldet. Wenn Ihre Benutzer auf Ihre verbundene App zugreifen, leitet Salesforce sie an diese URL weiter, um die Anmeldung abzuschließen. Dann leitet Salesforce die Benutzer an die Rückruf-URL um, die Sie Ihrem App-Client zugeordnet haben.

      ```
      https://mydomain.auth.us-east-1.amazoncognito.com/authorize?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com&identity_provider=CorpSalesforce
      ```

   1. **Aktivieren Sie die **OAuth Einstellungen** und geben Sie die URL des `/oauth2/idpresponse` Endpunkts für Ihre Benutzerpool-Domain in das Feld Callback-URL ein.** Dies ist die URL, unter der Salesforce den Autorisierungscode ausgibt, den Amazon Cognito gegen ein OAuth Token eintauscht.

      ```
      https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
      ```

1. Wählen Sie Ihre [Bereiche](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes) aus. Sie müssen den Bereich **openid** einschließen. Fügen Sie den Bereich **email** hinzu, um Zugriff auf die **Ansprüche** [email](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) und **email\$1verified** zu erteilen. Trennen Sie Bereiche durch Leerzeichen.

1. Wählen Sie **Erstellen** aus.

   In Salesforce wird die Client-ID als **Consumer Key (Verbraucherschlüssel)** bezeichnet, der geheime Client-Schlüssel als **Consumer Secret (Verbrauchergeheimnis)**. Notieren Sie die Client-ID und den geheimen Client-Schlüssel. Sie brauchen diese Informationen im nächsten Abschnitt.

## Hinzufügen eines OIDC-IdP zu Ihrem Benutzerpool
<a name="cognito-user-pools-oidc-idp-step-2"></a>

Nachdem Sie Ihren IdP eingerichtet haben, können Sie Ihren Benutzerpool so konfigurieren, dass Authentifizierungsanfragen mit einem OIDC-IdP bearbeitet werden.

------
#### [ Amazon Cognito console ]

**Einen OIDC-IdP in der Konsole hinzufügen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Geben Sie bei Aufforderung Ihre AWS -Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus dem Navigationsmenü 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ü **Soziale Netzwerke und externe Anbieter** und wählen Sie dann Identitätsanbieter **hinzufügen** aus.

1. Wählen Sie einen **OpenID Connect**-IDP aus.

1. Geben Sie einen eindeutigen **Anbieternamen** ein.

1. Geben Sie die **IdP-Client-ID ein.** Dies ist die ID des Anwendungsclients, den Sie in Ihrem OIDC-IdP erstellen. Bei der von Ihnen angegebenen Client-ID muss es sich um einen OIDC-Anbieter handeln, den Sie mit der Callback-URL konfiguriert haben. `https://[your user pool domain]/oauth2/idpresponse`

1. Geben Sie den **geheimen IdP-Client-Schlüssel ein**. Dies muss der geheime Client-Schlüssel für denselben Anwendungsclient aus dem vorherigen Schritt sein.

1. <a name="cognito-user-pools-oidc-step-2-substep-9"></a>Geben Sie **Authorized scopes** (Autorisierte Bereiche) für diesen Anbieter ein. Bereiche definieren, welche Gruppen von Benutzerattributen (z. B. `name` und `email`) Ihre Anwendung von Ihrem Anbieter anfordert. Bereiche müssen gemäß der [OAuth2.0-Spezifikation](https://tools.ietf.org/html/rfc6749#section-3.3) durch Leerzeichen getrennt werden.

   Ihr IdP fordert Benutzer möglicherweise auf, der Bereitstellung dieser Attribute für Ihre Anwendung zuzustimmen, wenn sie sich anmelden.

1. Wählen Sie eine **Methode für die Anforderung von Attributen**. IdPserfordert möglicherweise, dass Anfragen an ihre `userInfo` Endpunkte entweder als oder `GET` formatiert werden. `POST` Der Amazon Cognito `userInfo` Cognito-Endpunkt erfordert beispielsweise `HTTP GET` Anfragen.

1. Wählen Sie eine **Einrichtungsmethode** für die Art und Weise, wie Ihr Benutzerpool den Pfad zu den wichtigsten OIDC-Verbundendpunkten bei Ihrem IdP bestimmen soll. IdPs Hosten Sie einen `/well-known/openid-configuration` Endpunkt in der Regel unter einer Basis-URL eines Emittenten. Wenn dies bei Ihrem Anbieter der Fall ist, fordert Sie die Option **Automatisch durch Aussteller-URL ausfüllen** auf, diese Basis-URL einzugeben, versucht, von dort aus auf den `/well-known/openid-configuration` Pfad zuzugreifen, und liest die dort aufgelisteten Endpunkte. Möglicherweise haben Sie untypische Endpunktpfade oder möchten Anfragen über einen alternativen Proxy an einen oder mehrere Endpunkte weiterleiten. Wählen Sie in diesem Fall **Manuelle Eingabe** aus und geben Sie Pfade für die `authorization` Endpunkte, `token``userInfo`, und `jwks_uri` an.
**Anmerkung**  
Die URL sollte mit `https://` beginnen und nicht mit einem Slash `/` enden. Nur die Portnummern 443 und 80 können mit dieser URL verwendet werden. Beispielsweise verwendet Salesforce diese URL:  
`https://login.salesforce.com`   
Wenn Sie das automatische Ausfüllen auswählen, muss das Erkennungsdokument HTTPS für die folgenden Werte verwenden: `authorization_endpoint`, `token_endpoint`, `userinfo_endpoint` und `jwks_uri`. Andernfalls schlägt die Anmeldung fehl.

1. Konfigurieren Sie Ihre Regeln für die Attributzuweisung unter **Attribute zwischen Ihrem OpenID Connect-Anbieter und Ihrem Benutzerpool zuordnen**. Das **Benutzerpool-Attribut** ist das *Zielattribut* im Amazon Cognito-Benutzerprofil und das **OpenID Connect-Attribut** ist das *Quellattribut*, das Amazon Cognito in einem ID-Token-Antrag oder einer Antwort finden soll. `userInfo` Amazon Cognito ordnet den `username` OIDC-Claim **Sub** automatisch dem Zielbenutzerprofil zu.

   Weitere Informationen finden Sie unter [Zuordnung von IdP-Attributen zu Profilen und Tokens](cognito-user-pools-specifying-attribute-mapping.md).

1. Wählen Sie **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie im Menü **App-Clients** einen App-Client aus der Liste aus. Navigieren Sie zur Registerkarte **Anmeldeseiten** und wählen Sie unter **Konfiguration der verwalteten Anmeldeseiten** die Option **Bearbeiten** aus. Suchen Sie nach **Identitätsanbietern** und fügen Sie Ihren neuen OIDC-IdP hinzu.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ API/CLI ]

Die OIDC-Konfiguration in Beispiel zwei finden Sie unter. [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#API_CreateIdentityProvider_Example_2) Sie können diese Syntax ändern und sie als Anforderungstext von`CreateIdentityProvider`,`UpdateIdentityProvider`, oder als `--cli-input-json` Eingabedatei für verwenden. [create-identity-provider](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-identity-provider.html)

------

## Testen Ihrer OIDC-IdP-Konfiguration
<a name="cognito-user-pools-oidc-idp-step-3"></a>

In Ihrer Anwendung müssen Sie im Client des Benutzers einen Browser aufrufen, damit sich dieser bei seinem OIDC-Anbieter anmelden kann. Testen Sie die Anmeldung bei Ihrem Anbieter, nachdem Sie die Einrichtungsverfahren in den vorherigen Abschnitten abgeschlossen haben. Die folgende Beispiel-URL lädt die Anmeldeseite für Ihren Benutzerpool mit einer Präfix-Domain.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

Dieser Link ist die Seite, zu der Sie Amazon Cognito weiterleitet, wenn Sie zum Menü **App-Clients** gehen, einen App-Client auswählen, zum Tab **Anmeldeseiten** navigieren und **Anmeldeseite anzeigen** auswählen. Weitere Informationen zu Benutzerpool-Domains finden Sie unter[Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md). Weitere Informationen zu App-Clients, einschließlich Client IDs und Callback URLs, finden Sie unter[Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).

Mit dem folgenden Beispiel-Link wird eine automatische Umleitung zum `MyOIDCIdP` Anbieter [Autorisieren des Endpunkts](authorization-endpoint.md) mit einem `identity_provider` Abfrageparameter eingerichtet. Diese URL umgeht die interaktive Benutzerpool-Anmeldung mit verwalteter Anmeldung und leitet direkt zur IdP-Anmeldeseite weiter.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=MyOIDCIdP&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

# Authentifizierungsablauf für den OIDC-Benutzerpool-IdP
<a name="cognito-user-pools-oidc-flow"></a>

Mit der OpenID Connect (OIDC) -Anmeldung automatisiert Ihr Benutzerpool den Anmeldevorgang mit dem Autorisierungscode bei Ihrem Identitätsanbieter (IdP). Nachdem Ihr Benutzer die Anmeldung mit seinem IdP abgeschlossen hat, sammelt Amazon Cognito seinen Code am `oauth2/idpresponse` Endpunkt des externen Anbieters. Mit dem resultierenden Zugriffstoken fragt Ihr Benutzerpool den `userInfo` IdP-Endpunkt ab, um Benutzerattribute abzurufen. Ihr Benutzerpool vergleicht dann die empfangenen Attribute mit den von Ihnen eingerichteten Regeln für die Attributzuweisung und füllt das Benutzerprofil und das ID-Token entsprechend aus.

Die OAuth 2.0-Bereiche, die Sie in Ihrer OIDC-Anbieterkonfiguration anfordern, definieren die Benutzerattribute, die der IdP Amazon Cognito zur Verfügung stellt. Aus Sicherheitsgründen sollten Sie nur die Bereiche anfordern, die den Attributen entsprechen, die Sie Ihrem Benutzerpool zuordnen möchten. Wenn Ihr Benutzerpool beispielsweise Anfragen stellt`openid profile`, erhalten Sie alle möglichen Attribute, aber wenn Sie eine Anfrage stellen, erhalten `openid email phone_number` Sie nur die E-Mail-Adresse und Telefonnummer des Benutzers. Sie können die Bereiche, die Sie [von OIDC anfordern, so konfigurieren, dass sie sich von](cognito-user-pools-oidc-idp.md#cognito-user-pools-oidc-step-2-substep-9) denen unterscheiden IdPs, die Sie im [App-Client](user-pool-settings-client-apps.md#user-pool-settings-client-apps-scopes) und in der Benutzerpool-Authentifizierungsanfrage autorisieren und anfordern.

Wenn sich Ihr Benutzer mit einem OIDC-IdP bei Ihrer Anwendung anmeldet, führt Ihr Benutzerpool den folgenden Authentifizierungsablauf durch.

1. Ein Benutzer greift auf Ihre verwaltete Anmeldeseite zu und entscheidet sich, sich mit seinem OIDC-IdP anzumelden.

1. Ihre Anwendung leitet den Browser des Benutzers zum Autorisierungsendpunkt Ihres Benutzerpools weiter.

1. Ihr Benutzerpool leitet die Anfrage an den Autorisierungsendpunkt des OIDC-IdP weiter.

1. Ihr IdP zeigt eine Anmeldeaufforderung an.

1. In Ihrer Anwendung zeigt die Sitzung Ihres Benutzers eine Anmeldeaufforderung für den OIDC-IdP an.

1. Der Benutzer gibt seine Anmeldeinformationen für den IdP ein oder präsentiert ein Cookie für eine bereits authentifizierte Sitzung.

1. Nachdem sich Ihr Benutzer authentifiziert hat, leitet der OIDC-IdP mit einem Autorisierungscode zu Amazon Cognito weiter.

1. Ihr Benutzerpool tauscht den Autorisierungscode gegen ID- und Zugriffstoken aus. Amazon Cognito erhält Zugriffstoken, wenn Sie Ihren IdP mit den Bereichen konfigurieren. `openid` Die Ansprüche im ID-Token und in der `userInfo` Antwort werden durch zusätzliche Bereiche aus Ihrer IdP-Konfiguration bestimmt, z. B. `profile` und. `email`

1. Ihr IdP stellt die angeforderten Token aus.

1. Ihr Benutzerpool bestimmt den Pfad zum `jwks_uri` IdP-Endpunkt vom Aussteller URLs in Ihrer IdP-Konfiguration und fordert die Tokensignaturschlüssel vom JSON-Webschlüsselsatz (JWKS) -Endpunkt an.

1. Der IdP gibt Signaturschlüssel vom JWKS-Endpunkt zurück.

1. Ihr Benutzerpool validiert die IdP-Token anhand der Signatur- und Ablaufdaten in den Token.

1. Ihr Benutzerpool autorisiert eine Anfrage an den `userInfo` IdP-Endpunkt mit dem Zugriffstoken. Der IdP antwortet mit Benutzerdaten, die auf den Gültigkeitsbereichen des Zugriffstokens basieren.

1. Ihr Benutzerpool vergleicht das ID-Token und die `userInfo` Antwort des IdP mit den Attributzuordnungsregeln in Ihrem Benutzerpool. Es schreibt zugeordnete IdP-Attribute in Benutzerpool-Profilattribute.

1. Amazon Cognito stellt die Bearer-Token für Ihre Anwendung aus, wobei es sich unter anderem um Identitäts-, Zugriffs- und Aktualisierungs-Token handeln kann.

1. Ihre Anwendung verarbeitet die Benutzerpool-Token und meldet den Benutzer an.

![\[Ablauf der OIDC-Benutzerpool-IdP-Authentifizierung\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/flow-cup-oidc-endpoints.png)


**Anmerkung**  
Amazon Cognito storniert Authentifizierungsanfragen, die nicht innerhalb von 5 Minuten abgeschlossen werden, und leitet den Benutzer zur verwalteten Anmeldung weiter. Für die Seite wird eine `Something went wrong`-Fehlermeldung angezeigt.

OIDC ist eine Identitätsebene auf OAuth 2.0, die Identitätstoken im JSON-Format (JWT) spezifiziert, die von an OIDC-Client-Apps (vertrauende Parteien) ausgegeben IdPs werden. In der Dokumentation zu Ihrem OIDC IdP finden Sie Informationen darüber, wie Sie Amazon Cognito als OIDC-vertrauende Partei hinzufügen können.

Wenn sich ein Benutzer mit einer Autorisierungscode-Erteilung authentifiziert, gibt der Benutzerpool das ID-, Zugriffs- und Aktualisierungstoken zurück. [Das ID-Token ist ein [Standard-OIDC-Token](http://openid.net/specs/openid-connect-core-1_0.html) für die Identitätsverwaltung, und das Zugriffstoken ist ein Standard-2.0-Token. OAuth ](https://oauth.net/2/) Weitere Informationen zu den Erteilungsarten, die Ihr Benutzerpool-App-Client unterstützen kann, finden Sie unter [Autorisieren des Endpunkts](authorization-endpoint.md).

## So verarbeitet ein Benutzerpool Anträge eines OIDC-Anbieters
<a name="how-a-cognito-user-pool-processes-claims-from-an-oidc-provider"></a>

Wenn Ihr Benutzer die Anmeldung bei einem OIDC-Drittanbieter abschließt, ruft Managed Login einen Autorisierungscode vom IdP ab. Ihr Benutzerpool tauscht den Autorisierungscode für Zugriffs- und ID-Tokens mit dem `token`-Endpunkt Ihres IdP aus. Ihr Benutzerpool gibt diese Token nicht an Ihren Benutzer oder Ihre App weiter, sondern verwendet sie, um ein Benutzerprofil mit Daten zu erstellen, die in Form von Anträgen in eigenen Tokens dargestellt werden.

 Amazon Cognito validiert das Zugriffstoken nicht unabhängig. Stattdessen fordert es Benutzerattributinformationen vom `userInfo`-Endpunkt des Anbieters an und erwartet, dass die Anfrage abgelehnt wird, wenn das Token nicht gültig ist.

Amazon Cognito validiert das Anbieter-ID-Token mit den folgenden Prüfungen:

1. Prüfen, ob der Anbieter das Token mit einem Algorithmus aus dem folgenden Satz signiert hat: RSA, HMAC, Elliptic Curve.

1. Wenn der Anbieter das Token mit einem asymmetrischen Signaturalgorithmus signiert hat, prüfen, ob die Signaturschlüssel-ID im Token-`kid`-Antrag am Endpunkt `jwks_uri` des Anbieters aufgeführt ist. Amazon Cognito aktualisiert den Signaturschlüssel vom JWKS-Endpunkt in Ihrer IdP-Konfiguration für jedes IdP-ID-Token, das es verarbeitet.

1. Die ID-Tokensignatur mit der Signatur vergleichen, die auf der Grundlage der Anbieter-Metadaten erwartet wird.

1. Den `iss`-Antrag mit dem für den IdP konfigurierten OIDC-Aussteller vergleichen.

1. Vergleichen, ob der `aud`-Antrag mit der auf dem IdP konfigurierten Client-ID übereinstimmt oder ob er die konfigurierte Client-ID enthält, wenn der `aud`-Antrag mehrere Werte enthält.

1. Sicherstellen, dass der Zeitstempel im `exp`-Antrag nicht vor der aktuellen Uhrzeit liegt.

Ihr Benutzerpool validiert das ID-Token und versucht dann, mit dem Anbieter-Zugriffstoken eine Anfrage an den Anbieter-`userInfo`-Endpunkt zu stellen. Er ruft alle Benutzerprofilinformationen ab, zu deren Lesen die Bereiche im Zugriffstoken berechtigen. Ihr Benutzerpool sucht dann nach den Benutzerattributen, die Sie in Ihrem Benutzerpool als erforderlich festgelegt haben. Sie müssen in Ihrer Anbieterkonfiguration Attributzuordnungen für die erforderlichen Attribute erstellen. Ihr Benutzerpool überprüft das Provider-ID-Token und die `userInfo`-Antwort. Ihr Benutzerpool schreibt alle Anträge, die den Zuordnungsregeln entsprechen, den Benutzerattributen im Benutzerprofil des Benutzerpools zu. Ihr Benutzerpool ignoriert Attribute, die einer Zuordnungsregel entsprechen, aber nicht erforderlich sind und nicht in den Anträgen des Anbieters enthalten sind.

# Zuordnung von IdP-Attributen zu Profilen und Tokens
<a name="cognito-user-pools-specifying-attribute-mapping"></a>

Identitätsanbieterdienste (IdP), einschließlich Amazon Cognito, können in der Regel mehr Informationen über einen Benutzer aufzeichnen. Möglicherweise möchten Sie wissen, für welches Unternehmen sie arbeiten, wie Sie sie kontaktieren können und welche anderen identifizierenden Informationen Sie benötigen. Das Format dieser Attribute ist jedoch von Anbieter zu Anbieter unterschiedlich. Richten Sie beispielsweise drei IdPs von drei verschiedenen Anbietern mit Ihrem Benutzerpool ein und untersuchen Sie jeweils ein Beispiel für eine SAML-Assertion, ein ID-Token oder eine `userInfo` Payload. Einer stellt die E-Mail-Adresse des Benutzers als`email`, ein anderer als und der dritte als `emailaddress` dar. `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

Ein großer Vorteil, der sich aus der Konsolidierung IdPs mit einem Benutzerpool ergibt, ist die Möglichkeit, die Vielzahl von Attributnamen in einem einzigen OIDC-Token-Schema mit konsistenten, vorhersehbaren, gemeinsamen Attributnamen abzubilden. Auf diese Weise müssen Ihre Entwickler nicht die Logik für die Verarbeitung einer komplexen Vielzahl von Single Sign-On-Ereignissen beibehalten. Bei dieser Formatkonsolidierung handelt es sich um eine Attributzuordnung. Bei der Zuordnung von Benutzerpoolattributen werden IdP-Attributnamen den entsprechenden Benutzerpool-Attributnamen zugewiesen. Sie können Ihren Benutzerpool beispielsweise so konfigurieren, dass der Wert eines `emailaddress` Claims in das Standard-Benutzerpool-Attribut geschrieben wird. `email`

Jeder Benutzerpool-IdP hat ein separates Attributzuordnungsschema. Um Attributzuordnungen für Ihren IdP anzugeben, konfigurieren Sie einen Benutzerpool-Identitätsanbieter in der Amazon Cognito Cognito-Konsole, ein AWS SDK oder die REST-API für Benutzerpools.

## Wissenswertes über Mappings
<a name="cognito-user-pools-specifying-attribute-mapping-requirements"></a>

Bevor Sie mit der Einrichtung der Zuordnung von Benutzerattributen beginnen, sollten Sie sich die folgenden wichtigen Details ansehen.
+ Bei der Anmeldung eines Verbundbenutzers bei Ihrer Anwendung muss ein Mapping für jedes Benutzerpool-Attribut vorhanden sein, das Ihr Benutzerpool verlangt. Beispiel: Wenn Ihr Benutzerpool ein `email`-Attribut für die Anmeldung erfordert, ordnen Sie dieses Attribut seiner Entsprechung vom IDP zu.
+ Standardmäßig werden zugeordnete E-Mail-Adressen nicht überprüft. Sie können eine zugeordnete E-Mail-Adresse nicht mit einem einmaligen Code verifizieren. Ordnen Sie stattdessen ein Attribut von Ihrem IdP zu, um den Überprüfungsstatus zu erhalten. Google und die meisten OIDC-Anbieter enthalten beispielsweise das `email_verified`-Attribut.
+ So können in Ihrem Benutzerpool Identitätsanbieter(IDP)-Token benutzerdefinierten Attributen zuordnen. Anbieter sozialer Netzwerke präsentieren ein Zugriffstoken, und OIDC-Anbieter präsentieren ein Zugriffs- und ein ID-Token. Um ein Token zuzuordnen, fügen Sie ein benutzerdefiniertes Attribut mit einer maximalen Länge von 2048 Zeichen hinzu, gewähren Sie Ihrem App-Client Schreibzugriff auf das Attribut und ordnen Sie dem benutzerdefinierten Attribut `access_token` oder `id_token` des IDP zu.
+ Für jedes zugeordnete Benutzerpool-Attribut muss die maximale Länge des Wertes (2048 Zeichen) für den Wert groß genug sein, den Amazon Cognito vom IDP abruft. Andernfalls meldet Amazon Cognito einen Fehler, wenn sich Benutzer bei Ihrer Anwendung anmelden. Amazon Cognito unterstützt die Zuordnung von IDP-Token zu benutzerdefinierten Attributen nicht, wenn die Token mehr als 2048 Zeichen lang sind.
+ Amazon Cognito leitet das `username` Attribut im Profil eines Verbundbenutzers von bestimmten Ansprüchen ab, die Ihr föderierter IdP erfüllt, wie in der folgenden Tabelle dargestellt. Amazon Cognito stellt diesem Attributwert beispielsweise den Namen Ihres IdP voran. `MyOIDCIdP_[sub]` Wenn Sie möchten, dass Ihre Verbundbenutzer ein Attribut haben, das genau mit einem Attribut in Ihrem externen Benutzerverzeichnis übereinstimmt, ordnen Sie dieses Attribut einem Amazon Cognito Cognito-Anmeldeattribut wie zu. `preferred_username`    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html)
+ Wenn in einem Benutzerpool nicht zwischen Groß- und [Kleinschreibung unterschieden](user-pool-case-sensitivity.md) wird, wandelt Amazon Cognito das Quellattribut des Benutzernamens in automatisch generierten Benutzernamen von Verbundbenutzern in Kleinbuchstaben um. Im Folgenden finden Sie ein Beispiel für einen Benutzernamen für einen Benutzerpool, bei dem Groß- und Kleinschreibung beachtet wird:. `MySAML_TestUser@example.com` Das Folgende ist derselbe Benutzername für einen Benutzerpool, bei dem Groß- und *Kleinschreibung nicht berücksichtigt* wird:. `MySAML_testuser@example.com`

  In Benutzerpools ohne Berücksichtigung der Groß- und Kleinschreibung müssen Ihre Lambda-Trigger, die den Benutzernamen verarbeiten, diese Änderung aller Ansprüche in gemischter Groß- und Kleinschreibung für Quellattribute von Benutzernamen berücksichtigen. Um Ihren IdP mit einem Benutzerpool zu verknüpfen, der eine andere Einstellung zur Berücksichtigung von Groß- und Kleinschreibung hat als Ihr aktueller Benutzerpool, erstellen Sie einen neuen Benutzerpool.
+ Amazon Cognito muss Ihre zugeordneten Benutzerpool-Attribute aktualisieren können, wenn sich Benutzer bei Ihrer Anwendung anmelden. Wenn sich ein Benutzer über einen IdP anmeldet, aktualisiert Amazon Cognito die zugeordneten Attribute mit den neuesten Informationen vom IdP. Amazon Cognito aktualisiert zugeordnete Attribute nur, wenn sich ihre Werte ändern. Um sicherzustellen, dass Amazon Cognito die Attribute aktualisieren kann, überprüfen Sie die folgenden Voraussetzungen:
  + Alle benutzerdefinierten Attribute des Benutzerpools, die Sie von Ihrem IDP aus zuordnen, müssen *veränderbar* sein. Sie können veränderbare benutzerdefinierte Attribute jederzeit aktualisieren. Im Gegensatz dazu können Sie nur einen Wert für das *unveränderliche* benutzerdefinierte Attribut festlegen, wenn Sie das Benutzerprofil erstellen. **Um ein veränderbares benutzerdefiniertes Attribut in der Amazon Cognito Cognito-Konsole zu erstellen, aktivieren Sie das Kontrollkästchen **Veränderbar** für das Attribut, das Sie hinzufügen, wenn Sie im **Anmeldemenü Benutzerdefinierte Attribute hinzufügen** auswählen.** Oder, wenn Sie Ihren Benutzerpool mithilfe der [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Operation erstellen, können Sie den `Mutable` Parameter für jedes dieser Attribute auf setzen. `true` Wenn Ihr IdP einen Wert für ein zugeordnetes unveränderliches Attribut sendet, gibt Amazon Cognito einen Fehler zurück und die Anmeldung schlägt fehl.
  + In den App-Client-Einstellungen für Ihre Anwendung müssen zugeordnete Attribute *beschreibbar* sein. Sie können festlegen, welche Attribute auf der Seite **App-Clients** in der Amazon-Cognito-Konsole beschreibbar sind. Wenn Sie den App-Client mithilfe der API-Operation [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) erstellen, können Sie diese Attribute zum Array `WriteAttributes` hinzufügen. Wenn Ihr IdP einen Wert für ein zugeordnetes nicht beschreibbares Attribut sendet, legt Amazon Cognito den Attributwert nicht fest und fährt mit der Authentifizierung fort.
+ Wenn IdP-Attribute mehrere Werte enthalten, reduziert Amazon Cognito alle Werte zu einer einzigen kommagetrennten Zeichenfolge, die in den eckigen Klammern und eingeschlossen ist. `[` `]` Das Amazon Cognito Cognito-URL-Formular kodiert die Werte, die nicht-alphanumerische Zeichen enthalten, mit Ausnahme von,, und. `.` `-` `*` `_` Sie müssen die einzelnen Werte vor der Verwendung in Ihrer App decodieren und analysieren.
+ Das Zielattribut behält jeden Wert bei, den ihm Ihre Attributzuordnungsregeln zuweisen, es sei denn, er wird durch eine Anmeldung oder eine administrative Aktion geändert. Amazon Cognito entfernt keine Attribute von Benutzern, wenn das Quellattribut nicht mehr im Provider-Token oder in der SAML-Assertion gesendet wird. Die folgenden Aktionen entfernen den Wert eines Attributs aus einem Benutzerpoolprofil für einen Verbundbenutzer:

  1. Der IdP sendet einen leeren Wert für das Quellattribut und eine Zuordnungsregel wendet den leeren Wert auf das Zielattribut an.

  1. Sie löschen den Wert des zugewiesenen Attributs mit einer [DeleteUserAttributes[AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html)Oder-Anfrage.

## Geben Sie die Identitätsanbieter-Attributzuordnungen für Ihren Benutzerpool an (AWS-Managementkonsole)
<a name="cognito-user-pools-specifying-attribute-mapping-console"></a>

Sie können die verwenden AWS-Managementkonsole , um Attributzuordnungen für den IdP in Ihrem Benutzerpool anzugeben.

**Anmerkung**  
Amazon Cognito ordnet eingehende Ansprüche nur dann Benutzerpoolattributen zu, wenn die Ansprüche im eingehenden Token vorhanden sind. Wenn ein zuvor zugeordneter Anspruch nicht mehr im eingehenden Token vorhanden ist, wird er nicht gelöscht oder geändert. Wenn Ihre Anwendung einen Abgleich von gelöschten Anforderungen erfordert, können Sie vor der Authentifizierung den Lambda-Auslöser verwenden, um das benutzerdefinierte Attribut während der Authentifizierung zu löschen und diesen Attributen das erneute Auffüllen aus dem eingehenden Token zu ermöglichen.

**Geben Sie eine Attributzuordnung für einen Social-IDP wie folgt an**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre Anmeldeinformationen ein. AWS 

1. Wählen Sie im Navigationsbereich erst **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie das Menü **Soziale Netzwerke und externe Anbieter**.

1. Wählen Sie **Add an identity provider** (Identitätsanbieter hinzufügen) oder den **Facebook-**, **Google-**, **Amazon-** oder **Apple**-IdP aus, den Sie konfiguriert haben. Suchen Sie nach **Attribute mapping** (Attributzuordnung) und wählen Sie **Edit** (Bearbeiten) aus. 

   Weitere Informationen zum Hinzufügen eines Social-IdP finden Sie unter [Verwenden von Anbietern für soziale Identitäten mit einem Benutzerpool](cognito-user-pools-social-idp.md).

1. Für jedes Attribut, das Sie zuordnen müssen, führen Sie die folgenden Schritte aus:

   1. Wählen Sie ein Attribut aus der Spalte **User pool attribute** (Benutzerpoolattribut) aus. Dies ist das Attribut, das dem Benutzerprofil in Ihrem Benutzerpool zugewiesen ist. Benutzerdefinierte Attribute werden nach Standardattributen aufgeführt.

   1. Wählen Sie ein Attribut aus der ***<provider>*Attributspalte** aus. Dies ist das Attribut, das aus dem Anbieterverzeichnis übergeben wird. Bekannte Attribute des Social-Identity-Anbieters werden in einer Dropdown-Liste bereitgestellt.

   1. Um zusätzliche Attribute zwischen Ihrem IdP und Amazon Cognito zuzuordnen, wählen Sie **Add another attribute** (Weiteres Attribut hinzufügen) aus.

1. Wählen Sie **Save Changes**.

**So geben Sie das Attribut-Mapping für einen SAML-Anbieter an**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie im Navigationsbereich erst **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie das Menü **Soziale Netzwerke und externe Anbieter**.

1. Wählen Sie **Add an identity provider** (Identitätsanbieter hinzufügen) oder den SAML-IdP aus, den Sie konfiguriert haben. Suchen Sie nach **Attribute mapping** (Attributzuordnung) und wählen Sie **Edit** (Bearbeiten) aus. Weitere Informationen zum Hinzufügen eines SAML-IdP finden Sie unter [Verwendung von SAML-Identitätsanbietern mit einem Benutzerpool](cognito-user-pools-saml-idp.md).

1. Für jedes Attribut, das Sie zuordnen müssen, führen Sie die folgenden Schritte aus:

   1. Wählen Sie ein Attribut aus der Spalte **User pool attribute** (Benutzerpoolattribut) aus. Dies ist das Attribut, das dem Benutzerprofil in Ihrem Benutzerpool zugewiesen ist. Benutzerdefinierte Attribute werden nach Standardattributen aufgeführt.

   1. Wählen Sie ein Attribut aus der Spalte **SAML attribute** (SAML-Attribut) aus. Dies ist das Attribut, das aus dem Anbieterverzeichnis übergeben wird.

      Ihr IdP bietet möglicherweise SAML-Assertions als Referenz an. Einige IdPs verwenden einfache Namen, wie z. B.`email`, während andere URL-formatierte Attributnamen verwenden, die den folgenden ähneln:

      ```
      http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
      ```

   1. Um zusätzliche Attribute zwischen Ihrem IdP und Amazon Cognito zuzuordnen, wählen Sie **Add another attribute** (Weiteres Attribut hinzufügen) aus.

1. Wählen Sie **Änderungen speichern ** aus.

## Angeben von Zuordnungen von Identitätsanbieter-Attributen für Ihren Benutzerpool (und Ihre API)AWS CLI AWS
<a name="cognito-user-pools-specifying-attribute-mapping-cli-api"></a>

Im folgenden Anfragetext [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)werden die [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)„MyIdP“ -Attribute des SAML-Anbieters`emailaddress`,`birthdate`, und `phone` den Benutzerpool-Attributen`email`, und `birthdate``phone_number`, in dieser Reihenfolge zugeordnet. Dies ist ein vollständiger Anfragetext für einen SAML 2.0-Anbieter. Ihr Anfragetext variiert je nach IdP-Typ und spezifischen Details. Die Attributzuordnung ist im Parameter enthalten. `AttributeMapping`

```
{
   "AttributeMapping": { 
      "email" : "emailaddress",
      "birthdate" : "birthdate",
      "phone_number" : "phone"
   },
   "IdpIdentifiers": [ 
      "IdP1",
      "pdxsaml"
   ],
   "ProviderDetails": { 
      "IDPInit": "true", 
      "IDPSignout": "true", 
      "EncryptedResponses" : "true", 
      "MetadataURL": "https://auth.example.com/sso/saml/metadata", 
      "RequestSigningAlgorithm": "rsa-sha256"
   },
   "ProviderName": "MyIdP",
   "ProviderType": "SAML",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Verwenden Sie die folgenden Befehle für die Angabe von Attributzuordnungen für den IdP Ihres Benutzerpools

**So geben Sie Attributzuordnungen auf Anbieter-Erstellungszeit an**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Beispiel mit Metadaten-Dokument: : `aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Wo `details.json` enthält:

  ```
  { 
      "MetadataFile": "<SAML metadata XML>"
  }
  ```
**Anmerkung**  
Wenn der irgendwelche Anführungszeichen (`"`) *<SAML metadata XML>* enthält, müssen sie maskiert werden (`\"`).

  Beispiel mit Metadaten-URL:

  ```
  aws cognito-idp create-identity-provider \
  --user-pool-id us-east-1_EXAMPLE \
  --provider-name=SAML_provider_1 \
  --provider-type SAML \
  --provider-details MetadataURL=https://myidp.example.com/saml/metadata \
  --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  ```
+ API/SDK: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Geben Sie Attributzuordnungen für einen vorhandenen Identitätsanbieter wie folgt an**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Beispiel: `aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ API/SDK: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Rufen Sie Informationen über das Attribut-Mapping für einen bestimmten IdP wie folgt auf**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  Beispiel: `aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>`
+ API/SDK: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

# Verknüpfen von Verbundbenutzern mit einem vorhandenen Benutzerprofil
<a name="cognito-user-pools-identity-federation-consolidate-users"></a>

Oft hat derselbe Benutzer ein Profil mit mehreren Identitätsanbietern (IdPs), die Sie mit Ihrem Benutzerpool verbunden haben. Amazon Cognito kann jedes Vorkommen eines Benutzers mit demselben Benutzerprofil in Ihrem Verzeichnis verknüpfen. Auf diese Weise kann eine Person, die mehrere IdP-Benutzer hat, ein einheitliches Erlebnis in Ihrer App haben. [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)weist Amazon Cognito an, die eindeutige ID eines Benutzers in Ihrem Verbundverzeichnis als Benutzer im Benutzerpool zu erkennen. Ein Benutzer in Ihrem Benutzerpool zählt als ein monatlicher aktiver Benutzer (MAU) für die [Abrechnung](https://aws.amazon.com/cognito/pricing/), wenn Sie null oder mehr Verbundidentitäten mit dem Benutzerprofil verknüpft haben.

Wenn sich ein Verbundbenutzer zum ersten Mal an Ihrem Benutzerpool anmeldet, sucht Amazon Cognito nach einem lokalen Profil, das Sie mit seiner Identität verknüpft haben. Wenn kein verknüpftes Profil vorhanden ist, erstellt Ihr Benutzerpool ein neues Profil. Sie können jederzeit vor der ersten Anmeldung ein lokales Profil erstellen und es mit Ihrem Verbundbenutzer verknüpfen, und zwar in einer `AdminLinkProviderForUser` API-Anfrage, entweder in einer geplanten Prestaging-Aufgabe oder in einer. [Lambda-Auslöser für die Vorab-Registrierung](user-pool-lambda-pre-sign-up.md) Nachdem sich Ihr Benutzer angemeldet hat und Amazon Cognito ein verknüpftes lokales Profil findet, liest Ihr Benutzerpool die Ansprüche Ihres Benutzers und vergleicht sie mit den Zuordnungsregeln für den IdP. Ihr Benutzerpool aktualisiert dann das verknüpfte lokale Profil mit den Ansprüchen, die bei der Anmeldung zugeordnet wurden. Auf diese Weise können Sie das lokale Profil mit Zugriffsansprüchen konfigurieren und deren Identitätsansprüche bei Ihrem Anbieter behalten. up-to-date Nachdem Amazon Cognito Ihren Verbundbenutzer einem verknüpften Profil zugeordnet hat, meldet er sich immer bei diesem Profil an. Anschließend können Sie weitere Anbieteridentitäten Ihres Benutzers mit demselben Profil verknüpfen, um Kunden ein einheitliches Erlebnis in Ihrer App zu bieten. Um einen Verbundbenutzer zu verknüpfen, der sich zuvor angemeldet hat, müssen Sie zunächst das vorhandene Profil löschen. Sie können vorhandene Profile an ihrem Format erkennen: `[Provider name]_identifier`. Beispiel, `LoginWithAmazon_amzn1.account.AFAEXAMPLE`. Ein Benutzer, den Sie erstellt und dann mit einer Benutzeridentität eines Drittanbieters verknüpft haben, hat den Benutzernamen, mit dem er erstellt wurde, und ein `identities` Attribut, das die Details seiner verknüpften Identitäten enthält.

**Wichtig**  
Da `AdminLinkProviderForUser` es einem Benutzer mit einer externen föderierten Identität ermöglicht wird, sich als vorhandener Benutzer im Benutzerpool anzumelden, ist es wichtig, dass er nur mit externen Attributen IdPs und Anbieterattributen verwendet wird, denen der Anwendungsbesitzer vertraut hat.

Angenommen, Sie sind ein Managed Service Provider (MSP) mit einer App, die Sie mit mehreren Kunden teilen. Jeder Kunde meldet sich über Active Directory Federation Services (ADFS) bei Ihrer App an. Ihr IT-Administrator, Carlos, verfügt in jeder Domäne Ihrer Kunden über ein Konto. Sie möchten, dass Carlos unabhängig vom IDP bei jeder Anmeldung als App-Administrator erkannt wird.

Ihr ADFS enthält IdPs die E-Mail-Adresse von Carlos `msp_carlos@example.com` in der `email` Reklamation der SAML-Behauptungen von Carlos an Amazon Cognito. Sie erstellen einen Benutzer in Ihrem Benutzerpool mit dem Benutzernamen `Carlos`. Die folgenden Befehle AWS Command Line Interface (AWS CLI) verknüpfen Carlos' Identitäten mit, und. IdPs ADFS1 ADFS2 ADFS3

**Anmerkung**  
Sie können einen Benutzer basierend auf bestimmten Attributansprüchen verknüpfen. Diese Fähigkeit gibt es nur bei OIDC und SAML. IdPs Für andere Anbietertypen müssen Sie eine Verknüpfung basierend auf einem festen Quellattribut herstellen. Weitere Informationen finden Sie unter [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html). Sie müssen `ProviderAttributeName` auf `Cognito_Subject` festlegen, wenn Sie einen Social-Identity-IDP mit einem Benutzerprofil verknüpfen. `ProviderAttributeValue` muss die eindeutige Kennung des Benutzers bei Ihrem IDP sein.

```
aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS1,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS2,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS3,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com
```

Das Benutzerprofil `Carlos` in Ihrem Benutzerpool verfügt jetzt über das folgende `identities`-Attribut.

```
[{
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS1",
    "providerType": "SAML",
    "issuer": "http://auth.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}, {
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS2",
    "providerType": "SAML",
    "issuer": "http://auth2.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}, {
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS3",
    "providerType": "SAML",
    "issuer": "http://auth3.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}]
```

**Wissenswertes zur Verknüpfung von Verbundbenutzern**
+ Sie können bis zu fünf Verbundbenutzer mit jedem Benutzerprofil verknüpfen.
+ Sie können Benutzer mit jedem IdP aus bis zu fünf IdP-Attributansprüchen verknüpfen, wie durch den `ProviderAttributeName` Parameter von `SourceUser` in einer `AdminLinkProviderForUser` API-Anfrage definiert. Wenn Sie beispielsweise mindestens einen Benutzer mit den Quellattributen`email`,,`phone`, und `location` verknüpft haben `department``given_name`, können Sie weitere Benutzer nur mit einem dieser fünf Attribute verknüpfen.
+ Sie können Verbundbenutzer entweder mit einem vorhandenen Verbundbenutzerprofil oder mit einem lokalen Benutzer verknüpfen.
+ Sie können Anbieter nicht mit Benutzerprofilen in der verknüpfen AWS-Managementkonsole.
+ Das ID-Token Ihres Benutzers enthält alle zugehörigen Anbieter im `identities`-Anspruch.
+ Sie können in einer API-Anfrage ein Passwort für das automatisch erstellte Verbundbenutzerprofil festlegen. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Der Status dieses Benutzers ändert sich dann von `EXTERNAL_PROVIDER` zu `CONFIRMED`. Ein Benutzer in diesem Status kann sich als Verbundbenutzer anmelden und Authentifizierungsabläufe in der API wie ein verknüpfter lokaler Benutzer initiieren. Sie können ihr Passwort und ihre Attribute auch in API-Anfragen mit Token-Authentifizierung wie und ändern. [ChangePassword[UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) Als bewährte Sicherheitsmethode und zur Synchronisierung von Benutzern mit Ihrem externen IdP sollten Sie keine Passwörter für Verbundbenutzerprofile festlegen. Verknüpfen Sie Benutzer stattdessen mit lokalen Profilen mit `AdminLinkProviderForUser`.
+ Amazon Cognito füllt Benutzerattribute in ein verknüpftes lokales Benutzerprofil ein, wenn sich der Benutzer über seinen IdP anmeldet. Amazon Cognito verarbeitet Identitätsansprüche im ID-Token von einem OIDC-IdP und überprüft auch den `userInfo` Endpunkt von OAuth 2.0- und OIDC-Anbietern. Amazon Cognito priorisiert Informationen in einem ID-Token gegenüber Informationen von`userInfo`.

Wenn Sie erkennen, dass Ihr Benutzer kein externes Benutzerkonto mehr verwendet, das Sie mit seinem Profil verknüpft haben, können Sie die Zuordnung dieses Benutzerkontos zu Ihrem Benutzerpool-Benutzer aufheben. Bei der Verknüpfung des Benutzers haben Sie in der Anfrage den Attributnamen, den Attributwert und den Anbieternamen des Benutzers angegeben. Um ein Profil zu entfernen, das Ihr Benutzer nicht mehr benötigt, stellen Sie eine [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html)API-Anfrage mit entsprechenden Parametern.

[AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)Weitere Befehlssyntax und Beispiele finden Sie in der AWS SDKs.

# Vom Benutzerpool verwaltete Anmeldung
<a name="cognito-user-pools-managed-login"></a>

Sie können eine Webdomain auswählen, um Dienste für Ihren Benutzerpool zu hosten. Ein Amazon Cognito Cognito-Benutzerpool erhält die folgenden Funktionen, wenn Sie eine Domain hinzufügen, die zusammen als *verwaltete Anmeldung* bezeichnet wird.
+ Ein [Autorisierungsserver](https://datatracker.ietf.org/doc/html/rfc6749#section-1.1), der als Identitätsanbieter (IdP) für Anwendungen fungiert, die mit OAuth 2.0 und OpenID Connect (OIDC) funktionieren. Der Autorisierungsserver [leitet Anfragen weiter](authorization-endpoint.md), gibt aus [und verwaltet JSON-Webtoken (JWTs)](token-endpoint.md) und [stellt](userinfo-endpoint.md) Benutzerattributinformationen bereit.
+ Eine ready-to-use Benutzeroberfläche (UI) für Authentifizierungsvorgänge wie Anmeldung, Abmeldung und Passwortverwaltung. Die *verwalteten Anmeldeseiten* dienen als Web-Frontend für Authentifizierungsdienste.
+ Ein Service Provider (SP) oder Relying Party (RP) für SAML 2.0 IdPs, OIDC IdPs, Facebook, Login with Amazon, Sign in with Apple und Google.

*Eine zusätzliche Option, die einige Funktionen mit der verwalteten Anmeldung teilt, ist die klassische gehostete Benutzeroberfläche.* Die klassische gehostete Benutzeroberfläche ist eine Version der Managed Login Services der ersten Generation. Gehostete UI-IdP- und RP-Dienste haben im Allgemeinen dieselben Eigenschaften wie verwaltete Anmeldeseiten, aber die Anmeldeseiten haben ein einfacheres Design und weniger Funktionen. Beispielsweise ist die Anmeldung mit dem Hauptschlüssel in der klassischen gehosteten Benutzeroberfläche nicht verfügbar. Im [Lite-Featureplan](cognito-sign-in-feature-plans.md) ist die klassische gehostete Benutzeroberfläche Ihre einzige Option für Benutzerpool-Domänendienste.

Bei den verwalteten Anmeldeseiten handelt es sich um eine Sammlung von Weboberflächen für grundlegende Aktivitäten wie Registrierung, Anmeldung, mehrstufige Authentifizierung und Kennwortzurücksetzung in Ihrem Benutzerpool. Sie verbinden Benutzer auch mit einem oder mehreren externen Identitätsanbietern (IdPs), wenn Sie Benutzern die Wahl zwischen verschiedenen Anmeldeoptionen geben möchten. Ihre App kann Ihre verwalteten Anmeldeseiten in den Browsern der Benutzer aufrufen, wenn Sie Benutzer authentifizieren und autorisieren möchten.

Sie können die Benutzererfahrung mit verwalteten Logins mit benutzerdefinierten Logos, Hintergründen und Stilen an Ihre Marke anpassen. Sie haben zwei Optionen für das Branding, das Sie auf Ihre verwaltete Anmelde-Benutzeroberfläche anwenden können: den *Branding-Editor* für die verwaltete Anmeldung und das *(klassische) Branding der gehosteten Benutzeroberfläche* für die gehostete Benutzeroberfläche.

**Branding-Editor**  
Eine aktualisierte Benutzererfahrung mit den meisten up-to-date Authentifizierungsoptionen und einem visuellen Editor in der Amazon Cognito Cognito-Konsole.

**Branding der gehosteten Benutzeroberfläche**  
Eine vertraute Benutzererfahrung für frühere Anwender von Amazon Cognito Cognito-Benutzerpools. Das Branding für die gehostete Benutzeroberfläche ist ein dateibasiertes System. Um das Branding auf gehostete UI-Seiten anzuwenden, laden Sie eine Logo-Bilddatei und eine Datei hoch, in der Werte für mehrere vordefinierte CSS-Stiloptionen festgelegt sind.

Der Branding-Editor ist nicht in allen Funktionsplänen für Benutzerpools verfügbar. Weitere Informationen finden Sie unter [Funktionspläne für Benutzerpools](cognito-sign-in-feature-plans.md).

Weitere Informationen zur Erstellung von Anfragen für verwaltete Anmelde- und gehostete Benutzeroberflächendienste finden Sie unter[Benutzerpool-Endpunkte und Referenz für verwaltete Logins](cognito-userpools-server-contract-reference.md).

**Anmerkung**  
Die von Amazon Cognito verwaltete Anmeldung unterstützt keine benutzerdefinierte Authentifizierung mit [Lambda-Triggern für benutzerdefinierte Authentifizierungsherausforderungen](user-pool-lambda-challenge.md).

**Topics**
+ [Lokalisierung bei verwalteter Anmeldung](#managed-login-localization)
+ [Bedingungsdokumente](#managed-login-terms-documents)
+ [Einrichtung der verwalteten Anmeldung mit AWS Amplify](#cognito-user-pools-app-integration-amplify)
+ [Verwaltete Anmeldung mit der Amazon Cognito Cognito-Konsole einrichten](#set-up-managed-login)
+ [Anzeigen Ihrer Anmeldeseite](#view-login-pages)
+ [Anpassen Ihrer Authentifizierungsseiten](#cognito-user-pools-app-integration-customize-hosted-ui)
+ [Wissenswertes zur verwalteten Anmeldung und zur gehosteten Benutzeroberfläche](#managed-login-things-to-know)
+ [Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md)
+ [Branding auf verwaltete Anmeldeseiten anwenden](managed-login-branding.md)

## Lokalisierung bei verwalteter Anmeldung
<a name="managed-login-localization"></a>

Bei der verwalteten Anmeldung wird auf benutzerinteraktiven Seiten standardmäßig die englische Sprache verwendet. Sie können Ihre verwalteten Anmeldeseiten in lokalisierter Sprache für die Sprache Ihrer Wahl anzeigen. Die verfügbaren Sprachen sind diejenigen, die in der verfügbar sind AWS-Managementkonsole. Fügen Sie dem Link, den Sie an Benutzer verteilen, einen `lang` Abfrageparameter hinzu, wie im folgenden Beispiel gezeigt.

```
https://<your domain>/oauth2/authorize?lang=es&response_type=code&client_id=<your app client id>&redirect_uri=<your relying-party url>
```

Amazon Cognito setzt nach der ersten Anfrage mit einem `lang` Parameter ein Cookie im Browser der Benutzer mit ihrer Sprachpräferenz. Nachdem das Cookie gesetzt wurde, bleibt die Sprachauswahl bestehen, ohne dass Sie den Parameter anzeigen oder in Anfragen angeben müssen. Wenn ein Benutzer beispielsweise eine Anmeldeanfrage mit einem `lang=de` Parameter gestellt hat, werden seine verwalteten Anmeldeseiten auf Deutsch dargestellt, bis er seine Cookies löscht oder eine neue Anfrage mit einem neuen Lokalisierungsparameter wie stellt. `lang=en`

Die Lokalisierung ist nur für verwaltete Logins verfügbar. Sie müssen den [Feature-Plan](cognito-sign-in-feature-plans.md) Essentials oder Plus nutzen und Ihrer Domain das [Branding für verwaltete Logins](managed-login-branding.md) zugewiesen haben.

Die Auswahl, die Ihr Benutzer bei der verwalteten Anmeldung vornimmt, ist für [benutzerdefinierte E-Mail- oder SMS-Absender-Trigger](user-pool-lambda-custom-sender-triggers.md) nicht verfügbar. Wenn Sie diese Auslöser implementieren, müssen Sie andere Mechanismen verwenden, um die bevorzugte Sprache eines Benutzers zu bestimmen. In Anmeldeabläufen kann das `locale` Attribut je nach Standort die bevorzugte Sprache des Benutzers angeben. In Anmeldeabläufen kann die Region oder die App-Client-ID Ihres Benutzerpools auf eine bevorzugte Sprache hinweisen.

Die folgenden Sprachen sind verfügbar.


**Verwaltete Anmeldesprachen**  

| Sprache | Code | 
| --- | --- | 
| Deutsch | de | 
| Englisch | en | 
| Spanisch | es | 
| Französisch | fr | 
| Bahasa Indonesia | id | 
| Italienisch | it | 
| Japanisch | ja | 
| Koreanisch | ko | 
| Portugiesisch (Brasilien) | pt-BR | 
| Chinesisch (vereinfacht) | zh-CN | 
| Chinesisch (traditionell) | zh-TW | 

## Bedingungsdokumente
<a name="managed-login-terms-documents"></a>

Sie können Ihre verwalteten Anmeldeseiten so konfigurieren, dass bei der Registrierung **von Benutzern Links zu Ihren Nutzungsbedingungen** und **Datenschutzbestimmungen** angezeigt werden. Wenn du beide Dokumente mit Nutzungsbedingungen in deinem App-Client einrichtest, wird Benutzern bei der Registrierung der folgende Text angezeigt: **Mit der Registrierung erklärst du dich mit unseren Nutzungsbedingungen und Datenschutzbestimmungen einverstanden**. Die Ausdrücke **Nutzungsbedingungen** und **Datenschutzrichtlinie** erscheinen auf deiner verwalteten Anmeldeseite mit einem Hyperlink zu deinen Dokumenten.

Begriffsdokumente unterstützen sprachspezifische Sprachen URLs , die der Lokalisierung von Managed Logins entsprechen. Wenn Benutzer mit dem `lang` Abfrageparameter eine Sprache auswählen, zeigt Amazon Cognito Links zu Ihren Begriffsdokumenten in dieser Sprache an. Wenn Sie keine URL für eine bestimmte Sprache konfiguriert haben, verwendet Amazon Cognito die Standard-URL, die Sie für den App-Client konfiguriert haben.

Um Dokumente mit Nutzungsbedingungen für Ihren App-Client zu konfigurieren, navigieren Sie in Ihrem Benutzerpool zum Menü **Verwaltete Anmeldung**. Wählen Sie unter **Terms Documents** die Option **Terms document erstellen** aus.

------
#### [ Amazon Cognito console ]

**Um ein Dokument mit Nutzungsbedingungen zu erstellen**

1. Navigieren Sie zu Ihrem Benutzerpool und wählen Sie das Menü **Verwaltete Anmeldung**. Suchen Sie nach **Dokumenten mit Nutzungsbedingungen**.

1. Wählen Sie **Dokument mit Nutzungsbedingungen erstellen**.

1. Wählen Sie den App-Client aus, dem Sie das Dokument mit den Nutzungsbedingungen zuweisen möchten.

1. Geben Sie einen **Namen für die Begriffe** ein. Dadurch wird Ihr Dokument in der Konsole identifiziert.

1. Wählen Sie unter **Links** eine **Sprache** aus und geben Sie die **URL** ein, unter der Sie Ihr Begriffsdokument in dieser Sprache hosten.

1. Um URLs weitere Sprachen hinzuzufügen, wählen Sie **Weitere hinzufügen** aus.

1. Wählen Sie **Erstellen** aus.

------
#### [ Amazon Cognito user pools API ]

Im Folgenden finden Sie ein Beispiel für einen [CreateTerms](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateTerms.html)Anfragetext. Dadurch werden auf der Anmeldeseite für den App-Client `1example23456789` Links für eine französischsprachige und eine portugiesischsprachige (Brasilien) Version der Datenschutzrichtlinie angezeigt, wenn die verwaltete Anmeldung in dieser Sprache lokalisiert ist. Eine separate Anfrage muss festgelegt werden, `terms-of-use` bevor die verwaltete Anmeldung URLs Links auf der Anmeldeseite rendert.

```
{
   "ClientId": "1example23456789",
   "Enforcement": "NONE",
   "Links": { 
      "cognito:default" : "https://example.com/privacy/",
      "cognito:french" : "https://example.com/fr/privacy/",
      "cognito:portuguese-brazil" : "https://example.com/pt/privacy/"
   },
   "TermsName": "privacy-policy",
   "TermsSource": "LINK",
   "UserPoolId": "us-east-1_EXAMPLE"
}
```

------

**Anmerkung**  
Sie müssen sowohl Nutzungsbedingungen als auch Datenschutzbestimmungen für Ihren App-Client erstellen, bevor Amazon Cognito Dokumente mit Nutzungsbedingungen auf Ihren verwalteten Anmeldeseiten anzeigt.

## Einrichtung der verwalteten Anmeldung mit AWS Amplify
<a name="cognito-user-pools-app-integration-amplify"></a>

Wenn Sie AWS Amplify Ihrer Web- oder mobilen App Authentifizierung hinzufügen, können Sie Ihre verwalteten Anmeldeseiten in der Amplify-Befehlszeilenschnittstelle (CLI) und Bibliotheken im Amplify-Framework einrichten. Um Ihrer App eine Authentifizierung hinzuzufügen, fügen Sie die `Auth` Kategorie zu Ihrem Projekt hinzu. Authentifizieren Sie dann in Ihrer Anwendung Benutzerpool-Benutzer mit Amplify-Clientbibliotheken.

Sie können verwaltete Anmeldeseiten zur Authentifizierung aufrufen oder Benutzer über einen Autorisierungsendpunkt zusammenführen, der zu einem IdP weiterleitet. Nachdem sich ein Benutzer erfolgreich beim Anbieter authentifiziert hat, erstellt Amplify einen neuen Benutzer in Ihrem Benutzerpool und übergibt die Token des Benutzers an Ihre App.

Die folgenden Beispiele zeigen, wie Sie AWS Amplify die verwaltete Anmeldung mit sozialen Anbietern in Ihrer App einrichten können.
+ [React](https://docs.amplify.aws/react/build-a-backend/auth/concepts/external-identity-providers/)
+ [Swift](https://docs.amplify.aws/swift/build-a-backend/auth/concepts/external-identity-providers/)
+ [Flattern](https://docs.amplify.aws/flutter/build-a-backend/auth/concepts/external-identity-providers/)
+ [Android](https://docs.amplify.aws/android/build-a-backend/auth/concepts/external-identity-providers/)

## Verwaltete Anmeldung mit der Amazon Cognito Cognito-Konsole einrichten
<a name="set-up-managed-login"></a>

Die erste Voraussetzung für die verwaltete Anmeldung und die gehostete Benutzeroberfläche ist eine Benutzerpool-Domain. Navigieren Sie in der Benutzerpools-Konsole zur Registerkarte **Domain** Ihres Benutzerpools und fügen Sie eine **Cognito-Domain** oder eine **benutzerdefinierte Domain** hinzu. Sie können auch während der Erstellung eines neuen Benutzerpools eine Domain auswählen. Weitere Informationen finden Sie unter [Konfigurieren einer Benutzerpool-Domäne](cognito-user-pools-assign-domain.md). Wenn eine Domain in Ihrem Benutzerpool aktiv ist, stellen alle App-Clients öffentliche Authentifizierungsseiten in dieser Domain bereit.

Wenn Sie eine Benutzerpool-Domain erstellen oder ändern, legen Sie die **Branding-Version** für Ihre Domain fest. Bei dieser Branding-Version haben Sie die Wahl zwischen **verwalteter Anmeldung** und **gehosteter Benutzeroberfläche (klassisch)**. Die von Ihnen gewählte Branding-Version gilt für alle App-Clients, die die Anmeldedienste in Ihrer Domain verwenden.

Der nächste Schritt besteht darin, auf der Registerkarte [App-Clients](user-pool-settings-client-apps.md) in Ihrem Benutzerpool einen **App-Client** zu erstellen. Bei der Erstellung eines App-Clients fragt Amazon Cognito Sie nach Informationen zu Ihrer Anwendung und fordert Sie dann auf, eine **Rückgabe-URL** auszuwählen. Die Rückgabe-URL wird auch als Relying Party (RP) -URL, Umleitungs-URI und Callback-URL bezeichnet. Dies ist die URL, von der aus Ihre Anwendung ausgeführt wird, zum Beispiel `https://www.example.com` oder`myapp://example`.

Nachdem Sie in Ihrem Benutzerpool eine Domain und einen App-Client mit einem Branding-Stil konfiguriert haben, sind Ihre verwalteten Anmeldeseiten im Internet verfügbar.

## Anzeigen Ihrer Anmeldeseite
<a name="view-login-pages"></a>

Wählen Sie in der Amazon Cognito Cognito-Konsole **auf der Registerkarte Anmeldeseiten für Ihren App-Client im Menü **App-Clients** die Schaltfläche **Anmeldeseiten** anzeigen**. Mit dieser Schaltfläche gelangen Sie zu einer Anmeldeseite in Ihrer Benutzerpool-Domain mit den folgenden grundlegenden Parametern.
+ Die App-Client-ID
+ Eine Anfrage zur Erteilung eines Autorisierungscodes
+ Eine Anfrage für alle Bereiche, die Sie für den aktuellen App-Client aktiviert haben
+ Die erste Rückruf-URL in der Liste für den aktuellen App-Client

Die Schaltfläche **Anmeldeseite anzeigen** ist nützlich, wenn Sie die Grundfunktionen Ihrer verwalteten Anmeldeseiten testen möchten. Ihre Anmeldeseiten entsprechen der **Branding-Version**, die Sie Ihrer [Benutzerpool-Domain](cognito-user-pools-assign-domain.md) zugewiesen haben. Sie können Ihre Anmelde-URL mit zusätzlichen und geänderten Parametern anpassen. In den meisten Fällen entsprechen die automatisch generierten Parameter des Links **Anmeldeseite anzeigen** nicht vollständig den Anforderungen Ihrer App. In diesen Fällen müssen Sie die URL anpassen, die Ihre App beim Anmelden Ihrer Benutzer aufruft. Weitere Informationen zu den Parameterschlüsseln und -werten für die Anmeldung finden Sie unter [Benutzerpool-Endpunkte und Referenz für verwaltete Logins](cognito-userpools-server-contract-reference.md).

Die Anmelde-Webseite verwendet das folgende URL-Format. In diesem Beispiel wird die Erteilung eines Autorisierungscodes mit dem `response_type=code`-Parameter angefordert.

```
https://<your domain>/oauth2/authorize?response_type=code&client_id=<your app client id>&redirect_uri=<your relying-party url>
```

Sie können die Domainzeichenfolge Ihres Benutzerpools im **Domain-Menü** in Ihrem Benutzerpool nachschlagen. Im Menü **App-Clients** können Sie den App-Client IDs, seinen Callback URLs, seine zulässigen Bereiche und andere Konfigurationen identifizieren.

Wenn Sie zum `/oauth2/authorize`-Endpunkt mit Ihren benutzerdefinierten Parametern navigieren, leitet Amazon Cognito Sie entweder zum `/oauth2/login`-Endpunkt oder im Hintergrund zu Ihrer IDP-Anmeldeseite um, sofern Sie einen `identity_provider`- oder `idp_identifier`-Parameter angegeben haben.

**Beispiel für eine Anfrage für einen impliziten Zuschuss**  
Sie können Ihre Anmeldeseite mit der folgenden URL für die implizite Codegewährung aufrufen, wo. `response_type=token` Nach einer erfolgreichen Anmeldung gibt Amazon Cognito Benutzerpool-Token in die Adresszeile Ihres Webbrowsers aus.

```
            https://mydomain.auth.us-east-1.amazoncognito.com/authorize?response_type=token&client_id=1example23456789&redirect_uri=https://mydomain.example.com
```

Die Identitäts- und Zugriffstoken werden als Parameter angezeigt, die an Ihre Weiterleitungs-URL angefügt werden.

Das folgende Beispiel ist eine Antwort von einer impliziten Erteilungsanforderung.

```
            https://auth.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer  
```

## Anpassen Ihrer Authentifizierungsseiten
<a name="cognito-user-pools-app-integration-customize-hosted-ui"></a>

In der Vergangenheit hostete Amazon Cognito nur Anmeldeseiten mit der klassischen *gehosteten Benutzeroberfläche*, einem einfachen Design, das Authentifizierungswebseiten ein universelles Aussehen verleiht. Sie könnten Amazon Cognito Cognito-Benutzerpools mit einem Logobild anpassen und einige Stile mit einer Datei optimieren, die einige CSS-Stilwerte spezifiziert. Später führte Amazon Cognito *Managed Login* ein, einen aktualisierten gehosteten Authentifizierungsdienst. Die verwaltete Anmeldung wurde look-and-feel mit dem *Branding-Editor* aktualisiert. Der Branding-Editor ist ein visueller Editor ohne Code und bietet mehr Optionen als die gehostete Benutzerschnittstelle zur Anpassung der Benutzeroberfläche. Bei der verwalteten Anmeldung wurden auch benutzerdefinierte Hintergrundbilder und ein Dunkelmodus-Thema eingeführt.

Sie können in Benutzerpools zwischen verwalteter Anmeldung und gehosteten UI-Branding-Erlebnissen wechseln. Weitere Informationen zum Anpassen Ihrer verwalteten Anmeldeseiten finden Sie unter[Branding auf verwaltete Anmeldeseiten anwenden](managed-login-branding.md).

## Wissenswertes zur verwalteten Anmeldung und zur gehosteten Benutzeroberfläche
<a name="managed-login-things-to-know"></a>

**Das einstündige Cookie für verwaltete Anmeldung und gehostete UI-Sitzung**  
Wenn sich ein Benutzer mit Ihren Anmeldeseiten oder einem Drittanbieter anmeldet, setzt Amazon Cognito ein Cookie in seinem Browser. Mit diesem Cookie können sich Benutzer eine Stunde lang erneut mit derselben Authentifizierungsmethode anmelden. Wenn sie sich mit ihrem Browser-Cookie anmelden, erhalten sie neue Token, die für die in Ihrer App-Client-Konfiguration angegebene Dauer gültig sind. Änderungen an Benutzerattributen oder Authentifizierungsfaktoren haben keinen Einfluss auf ihre Fähigkeit, sich erneut mit ihrem Browser-Cookie anzumelden.

Durch die Authentifizierung mit dem Sitzungscookie wird die Cookie-Dauer nicht auf eine weitere Stunde zurückgesetzt. Benutzer müssen sich erneut anmelden, wenn sie mehr als eine Stunde nach ihrer letzten erfolgreichen interaktiven Authentifizierung versuchen, auf Ihre Anmeldeseiten zuzugreifen.

**Bestätigung von Benutzerkonten und Überprüfung von Benutzerattributen**  
Für [lokale Benutzer](cognito-terms.md#terms-localuser) im Benutzerpool funktionieren die verwaltete Anmeldung und die gehostete Benutzeroberfläche am besten, wenn Sie Ihren Benutzerpool so konfigurieren, dass **Cognito automatisch Nachrichten zur Überprüfung und Bestätigung sendet**. Wenn Sie diese Einstellung aktivieren, sendet Amazon Cognito eine Nachricht mit einem Bestätigungscode an Benutzer, die sich registrieren. Wenn Sie Benutzer stattdessen als Benutzerpool-Administrator bestätigen, wird auf Ihren Anmeldeseiten nach der Registrierung eine Fehlermeldung angezeigt. In diesem Fall hat Amazon Cognito den neuen Benutzer erstellt, konnte aber keine Bestätigungsnachricht senden. Sie können Benutzer weiterhin als Administrator bestätigen, jedoch wenden die Benutzer sich möglicherweise an Ihren Support, wenn eine Fehlermeldung angezeigt wird. Weitere Informationen zur administrativen Bestätigung finden Sie unter [Benutzern erlauben, sich in der Anwendung anzumelden, sie aber als Benutzerpool-Administrator bestätigen](signing-up-users-in-your-app.md#signing-up-users-in-your-app-and-confirming-them-as-admin).

**Umfang der verwalteten Anmeldevorgänge**  
Die verwaltete Anmeldung und die klassische gehostete Benutzeroberfläche unterstützen Registrierung, Anmeldung und Passwortverwaltung. Dazu gehören der Abschluss der Anmeldung mit Multi-Faktor-Authentifizierung (MFA) und die Registrierung von WebAuthn-Authentifikatoren. Die verwaltete Anmeldung unterstützt keine Self-Service-Profilverwaltung für Benutzer wie Attributänderungen und die Einstellung von MFA-Präferenzen. Sie müssen die Profilverwaltung in Ihrem eigenen Anwendungscode implementieren. Die verwaltete Anmeldung bietet auch nicht die Möglichkeit, Attributänderungen zu bestätigen, wenn Sie als Administrator E-Mail-Adressen und Telefonnummern im Rahmen des [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API-Vorgangs aktualisieren.

**Ihre Änderungen an der Konfiguration anzeigen**  
Wenn Sie Stiländerungen an Ihren Seiten vornehmen und diese nicht sofort angezeigt werden, warten Sie ein paar Minuten und aktualisieren Sie dann die Seite.

**Benutzerpool-Tokens decodieren**  
Amazon Cognito Cognito-Benutzerpool-Token werden mithilfe eines RS256 Algorithmus signiert. Sie können Benutzerpool-Token mithilfe von dekodieren und verifizieren. AWS Lambda Weitere Informationen finden Sie unter [Amazon Cognito JWT-Token dekodieren und verifizieren](https://github.com/awslabs/aws-support-tools/tree/master/Cognito/decode-verify-jwt) auf. GitHub

**TLS-Version**  
Für verwaltete Anmeldeseiten und gehostete Benutzeroberflächen ist eine Verschlüsselung bei der Übertragung erforderlich. Benutzerpool-Domänen, die von Amazon Cognito bereitgestellt werden, erfordern, dass die Browser der Benutzer eine TLS-Mindestversion von 1.2 aushandeln. Benutzerdefinierte Domains unterstützen Browserverbindungen mit TLS Version 1.2. Die gehostete Benutzeroberfläche (klassisch) **erfordert kein** TLS 1.2 für benutzerdefinierte Domänen, aber die neuere verwaltete Anmeldung **erfordert** TLS Version 1.2 sowohl für benutzerdefinierte Domänen als auch für Präfixdomänen. Da Amazon Cognito die Konfiguration Ihrer Domain-Services verwaltet, können Sie die TLS-Anforderungen Ihrer Benutzerpool-Domain nicht ändern.

**CORS-Richtlinien**  
Weder die verwaltete Anmeldung noch die gehostete Benutzeroberfläche unterstützen benutzerdefinierte Ursprungsrichtlinien für Cross-Origin Resource Sharing (CORS). Eine CORS-Richtlinie würde Benutzer daran hindern, Authentifizierungsparameter in ihren Anfragen zu übergeben. Implementieren Sie stattdessen eine CORS-Richtlinie in Ihrem Anwendungs-Frontend. Amazon Cognito gibt einen `Access-Control-Allow-Origin: *` Antwort-Header auf Anfragen an die folgenden Endpunkte zurück.

1. [Token-Endpunkt](token-endpoint.md)

1. [Widerrufen des Endpunkts](revocation-endpoint.md)

1. [UserInfo-Endpunkt](userinfo-endpoint.md)

**Cookies**  
Die verwaltete Anmeldung und die gehostete Benutzeroberfläche setzen Cookies in den Browsern der Benutzer. Die Cookies entsprechen den Anforderungen einiger Browser, dass Websites keine Cookies von Drittanbietern setzen. Sie sind nur auf die Endpunkte Ihres Benutzerpools beschränkt und beinhalten Folgendes:
+ Ein `XSRF-TOKEN` Cookie für jede Anfrage.
+ Ein `csrf-state` Cookie für die Sitzungskonsistenz, wenn ein Benutzer umgeleitet wird.
+ Ein `csrf-state-legacy` Cookie für Sitzungskonsistenz, das von Amazon Cognito als Fallback gelesen wird, wenn Ihr Browser das Attribut nicht unterstützt. `SameSite`
+ Ein `cognito` Sitzungscookie, das erfolgreiche Anmeldeversuche eine Stunde lang speichert.
+ Ein `lang` Cookie, das die vom Benutzer gewählte [Sprachlokalisierung bei der verwalteten Anmeldung beibehält](#managed-login-localization).
+ Ein `page-data` Cookie, das die erforderlichen Daten speichert, wenn ein Benutzer zwischen verwalteten Anmeldeseiten navigiert.

In iOS können Sie [alle Cookies blockieren](https://support.apple.com/en-us/105082). Diese Einstellung ist nicht mit der verwalteten Anmeldung oder der gehosteten Benutzeroberfläche kompatibel. Um mit Benutzern zu arbeiten, die diese Einstellung möglicherweise aktivieren, bauen Sie die Benutzerpoolauthentifizierung in eine native iOS-App mit einem AWS SDK ein. In diesem Szenario können Sie Ihren eigenen Sitzungsspeicher erstellen, der nicht auf Cookies basiert.

**Auswirkungen der Änderung der verwalteten Anmeldeversion**  
Beachten Sie die folgenden Auswirkungen des Hinzufügens von Domänen und der Festlegung der Version für die verwaltete Anmeldung.
+ Wenn Sie eine Präfix-Domain hinzufügen, entweder mit verwaltetem Login oder mit gehosteter Benutzeroberfläche (klassisch), kann es bis zu 60 Sekunden dauern, bis Ihre Anmeldeseiten verfügbar sind.
+ Wenn Sie eine benutzerdefinierte Domain hinzufügen, entweder mit verwaltetem Login oder mit gehosteter Benutzeroberfläche (klassisch), kann es bis zu fünf Minuten dauern, bis Ihre Anmeldeseiten verfügbar sind.
+ Wenn Sie die Branding-Version für Ihre Domain ändern, kann es bis zu vier Minuten dauern, bis Ihre Anmeldeseiten in der neuen Branding-Version verfügbar sind.
+ Wenn Sie zwischen verwalteter Anmeldung und gehostetem UI-Branding (klassisch) wechseln, verwaltet Amazon Cognito keine Benutzersitzungen. Sie müssen sich erneut mit der neuen Oberfläche anmelden.

**Standardstil**  
Wenn Sie in der einen App-Client erstellen AWS-Managementkonsole, weist Amazon Cognito Ihrem App-Client automatisch einen Branding-Stil zu. Wenn Sie mit dem [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Vorgang programmgesteuert einen App-Client erstellen, wird kein Branding-Stil erstellt. Die verwaltete Anmeldung ist für einen App-Client, der mit einem AWS SDK erstellt wurde, erst verfügbar, wenn Sie einen mit einer [CreateManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateManagedLoginBranding.html)Anfrage erstellen.

**Bei der Aufforderung zur verwalteten Anmeldeauthentifizierung läuft das Zeitlimit**  
Amazon Cognito storniert Authentifizierungsanfragen, die nicht innerhalb von fünf Minuten abgeschlossen werden, und leitet den Benutzer zur verwalteten Anmeldung weiter. Für die Seite wird eine `Something went wrong`-Fehlermeldung angezeigt.

# Konfigurieren einer Benutzerpool-Domäne
<a name="cognito-user-pools-assign-domain"></a>

Die Konfiguration einer Domain ist ein optionaler Teil der Einrichtung eines Benutzerpools. Eine Benutzerpool-Domain hostet Funktionen für die Benutzerauthentifizierung, den Verbund mit Drittanbietern und OpenID Connect (OIDC) -Flows. Es verfügt über eine *verwaltete Anmeldung*, eine vorgefertigte Oberfläche für wichtige Operationen wie Registrierung, Anmeldung und Kennwortwiederherstellung. Es hostet auch die standardmäßigen OpenID Connect (OIDC) -Endpunkte wie [authorize](authorization-endpoint.md), [UserInfo](userinfo-endpoint.md) und [token](token-endpoint.md) für machine-to-machine (M2M) -Autorisierung und andere OIDC- und 2.0-Authentifizierungs- und Autorisierungsabläufe. OAuth 

Benutzer authentifizieren sich mit verwalteten Anmeldeseiten in der Domain, die Ihrem Benutzerpool zugeordnet ist. Sie haben zwei Möglichkeiten, diese Domain zu konfigurieren: Sie können entweder die von Amazon Cognito gehostete Standarddomain verwenden oder Sie können eine benutzerdefinierte Domain konfigurieren, die Ihnen gehört.

Die benutzerdefinierte Domain-Option bietet mehr Optionen für Flexibilität, Sicherheit und Kontrolle. Beispielsweise kann eine vertraute, unternehmenseigene Domain das Vertrauen der Benutzer stärken und den Anmeldevorgang intuitiver gestalten. Der Ansatz für benutzerdefinierte Domänen erfordert jedoch zusätzlichen Aufwand, z. B. die Verwaltung des SSL-Zertifikats und der DNS-Konfiguration.

Die OIDC-Discovery-Endpunkte `/.well-known/openid-configuration` für Endgeräte URLs und `/.well-known/jwks.json` Tokensignaturschlüssel werden nicht auf Ihrer Domain gehostet. Weitere Informationen finden Sie unter [Identitätsanbieter und Endpunkte der vertrauenden Partei](federation-endpoints.md).

Zu verstehen, wie Sie die Domain für Ihren Benutzerpool konfigurieren und verwalten, ist ein wichtiger Schritt bei der Integration der Authentifizierung in Ihre Anwendung. Die Anmeldung mit der Benutzerpools-API und einem AWS SDK kann eine Alternative zur Konfiguration einer Domain sein. Das API-basierte Modell stellt Token direkt in einer API-Antwort bereit. Für Implementierungen, die die erweiterten Funktionen von Benutzerpools als OIDC-IdP nutzen, müssen Sie jedoch eine Domain konfigurieren. Weitere Informationen zu den Authentifizierungsmodellen, die in Benutzerpools verfügbar sind, finden Sie unter. [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations)

**Topics**
+ [Wissenswertes über Benutzerpool-Domänen](#cognito-user-pools-assign-domain-things-to-know)
+ [Verwenden der Amazon Cognito-Präfixdomäne für die verwaltete Anmeldung](cognito-user-pools-assign-domain-prefix.md)
+ [Verwenden Sie Ihre eigene Domain für die verwaltete Anmeldung](cognito-user-pools-add-custom-domain.md)

## Wissenswertes über Benutzerpool-Domänen
<a name="cognito-user-pools-assign-domain-things-to-know"></a>

Benutzerpool-Domänen sind eine Anlaufstelle für OIDC-vertrauende Parteien in Ihren Anwendungen und für Benutzeroberflächenelemente. Beachten Sie die folgenden Details, wenn Sie die Implementierung einer Domäne für Ihren Benutzerpool planen.

**Vorbehaltene Bedingungen**  
Sie können den Text `aws``amazon`, oder nicht `cognito` im Namen einer Amazon Cognito-Präfix-Domain verwenden.

**Discovery-Endpunkte befinden sich auf einer anderen Domain**  
Die [Discovery-Endpunkte](federation-endpoints.md) `.well-known/openid-configuration` des Benutzerpools befinden sich `.well-known/jwks.json` nicht in Ihrer benutzerdefinierten Benutzerpool-Domäne oder Präfixdomäne. Der Pfad zu diesen Endpunkten lautet wie folgt.
+ `https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/openid-configuration`
+ `https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/jwks.json`

**Zeitpunkt des Inkrafttretens von Domainänderungen**  
Es kann bis zu einer Minute dauern, bis Amazon Cognito die Branding-Version einer Präfix-Domain startet oder aktualisiert. Es kann bis zu fünf Minuten dauern, bis Änderungen an einer benutzerdefinierten Domain übernommen werden. Die Verbreitung neuer benutzerdefinierter Domains kann bis zu einer Stunde dauern.

**Benutzerdefinierte Domains und Präfix-Domains gleichzeitig**  
Sie können einen Benutzerpool mit einer benutzerdefinierten Domäne und einer Präfixdomäne einrichten, die Eigentum von ist AWS. Da die [Endpunkte für die Benutzerpool-Erkennung](federation-endpoints.md) in einer anderen Domäne gehostet werden, bedienen sie nur die *benutzerdefinierte Domäne*. Sie `openid-configuration` geben beispielsweise einen einzigen Wert für `"authorization_endpoint"` of an`"https://auth.example.com/oauth2/authorize"`.

Wenn Sie sowohl benutzerdefinierte Domänen als auch Präfixdomänen in einem Benutzerpool haben, können Sie die benutzerdefinierte Domäne mit allen Funktionen eines OIDC-Anbieters verwenden. Die Präfixdomäne in einem Benutzerpool mit dieser Konfiguration hat weder Erkennungs- noch token-signing-key Endpunkte und sollte entsprechend verwendet werden.

**Benutzerdefinierte Domänen werden als ID der vertrauenden Partei für den Hauptschlüssel bevorzugt**  
Wenn Sie die Benutzerpoolauthentifizierung mit [Hauptschlüsseln einrichten](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey), müssen Sie eine Relying Party (RP) -ID festlegen. Wenn Sie eine benutzerdefinierte Domain und eine Präfix-Domain haben, können Sie die RP-ID nur als Ihre benutzerdefinierte Domain festlegen. **Um eine Präfix-Domain als RP-ID in der Amazon Cognito Cognito-Konsole festzulegen, löschen Sie Ihre benutzerdefinierte Domain oder geben Sie den vollqualifizierten Domainnamen (FQDN) der Präfix-Domain als Drittanbieter-Domain ein.**

**Verwenden Sie keine benutzerdefinierten Domains auf verschiedenen Ebenen Ihrer Domain-Hierarchie**  
*Sie können separate Benutzerpools so konfigurieren, dass sie benutzerdefinierte Domains in derselben Top-Level-Domain (TLD) haben, zum Beispiel *auth.example.com und auth2.example.com.** *Das Cookie für die verwaltete Anmeldesitzung ist für eine benutzerdefinierte Domain und alle Subdomains gültig, z. B. \$1.auth.example.com.* *Aus diesem Grund sollte kein Benutzer Ihrer Anwendungen auf die verwaltete Anmeldung für eine übergeordnete Domain und Subdomain zugreifen.* Wenn benutzerdefinierte Domains dieselbe TLD verwenden, behalten Sie sie auf derselben Subdomain-Ebene bei.

*Angenommen, Sie haben einen Benutzerpool mit der benutzerdefinierten Domain auth.example.com.* *Dann erstellen Sie einen weiteren Benutzerpool und weisen die benutzerdefinierte Domain uk.auth.example.com zu.* . Ein Benutzer meldet sich mit *auth.example.com* an. *und ruft ein Cookie ab, das sein Browser auf jeder Website im Platzhalterpfad \$1.auth.example.com präsentiert.* *Sie versuchen dann, sich bei uk.auth.example.com anzumelden.* . Sie übergeben ein ungültiges Cookie an Ihre Benutzerpool-Domain und erhalten statt einer Anmeldeaufforderung eine Fehlermeldung. *Im Gegensatz dazu hat ein Benutzer mit einem Cookie für *\$1.auth.example.com keine Probleme, eine Anmeldesitzung auf auth2.example.com* zu starten.*

**Branding-Version**  
Wenn Sie eine Domain erstellen, legen Sie eine **Branding-Version** fest. Ihre Optionen sind die neuere verwaltete Anmeldeoberfläche und die klassische gehostete Benutzeroberfläche. Diese Auswahl gilt für alle App-Clients, die Dienste in Ihrer Domain hosten.

# Verwenden der Amazon Cognito-Präfixdomäne für die verwaltete Anmeldung
<a name="cognito-user-pools-assign-domain-prefix"></a>

Das Standarderlebnis für die verwaltete Anmeldung wird auf einer Domain gehostet, die Eigentümer ist. AWS Dieser Ansatz hat eine niedrige Eintrittsbarriere — wählen Sie einen Präfixnamen und er ist aktiv —, verfügt aber nicht über die vertrauenserweckenden Funktionen einer benutzerdefinierten Domain. Es gibt keinen Kostenunterschied zwischen der Amazon Cognito Cognito-Domain-Option und der benutzerdefinierten Domain-Option. Der einzige Unterschied besteht in der Domain in der Webadresse, zu der Sie Ihre Benutzer weiterleiten. Bei IdP-Weiterleitungen von Drittanbietern und beim Fluss von Kundenanmeldedaten hat die gehostete Domain kaum sichtbare Auswirkungen. Eine benutzerdefinierte Domain eignet sich besser für Fälle, in denen sich Ihre Benutzer mit verwaltetem Login anmelden und mit einer Authentifizierungsdomäne interagieren würden, die nicht mit der Anwendungsdomäne übereinstimmt.

Die gehostete Amazon Cognito Cognito-Domain hat ein Präfix Ihrer Wahl, wird jedoch in der Stammdomain `amazoncognito.com` gehostet. Im Folgenden wird ein Beispiel gezeigt:

```
https://cognitoexample.auth.ap-south-1.amazoncognito.com
```

Alle Präfix-Domains folgen diesem Format:`prefix`. `auth`. *`AWS-Region code`*. `amazoncognito`. `com`. [Benutzerdefinierte Domain-Benutzerpools](cognito-user-pools-add-custom-domain.md) können die verwalteten Anmelde- oder gehosteten UI-Seiten auf jeder Domain hosten, die Sie besitzen.

**Anmerkung**  
Um Ihre Amazon-Cognito-Anwendungen sicherer zu machen, werden die übergeordneten Domains der Benutzerpool-Endpunkte in der [Public Suffix List](https://publicsuffix.org/) (PSL) registriert. Durch die PSL erlangen die Webbrowser Ihrer Benutzer ein einheitliches Verständnis der Endpunkte Ihres Benutzerpools und der von ihnen gesetzten Cookies.  
Die übergeordneten Domänen des Benutzerpools haben die folgenden Formate.  

```
auth.Region.amazoncognito.com
auth-fips.Region.amazoncognito.com
```

Informationen zum Hinzufügen eines App-Clients und einer Benutzerpool-Domäne mit dem AWS-Managementkonsole finden Sie unter[Erstellen eines App-Clients](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-console-create).

**Topics**
+ [Voraussetzungen](#cognito-user-pools-assign-domain-prefix-prereq)
+ [Konfigurieren Sie ein Amazon Cognito Cognito-Domainpräfix](#cognito-user-pools-assign-domain-prefix-step-1)
+ [Überprüfen Sie Ihre Anmeldeseite](#cognito-user-pools-assign-domain-prefix-verify)

## Voraussetzungen
<a name="cognito-user-pools-assign-domain-prefix-prereq"></a>

Bevor Sie anfangen, benötigen Sie:
+ Einen Benutzerpool mit einem App-Client. Weitere Informationen finden Sie unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).

## Konfigurieren Sie ein Amazon Cognito Cognito-Domainpräfix
<a name="cognito-user-pools-assign-domain-prefix-step-1"></a>

Sie können entweder die API AWS-Managementkonsole oder die AWS CLI oder verwenden, um eine Benutzerpool-Domain zu konfigurieren.

------
#### [ Amazon Cognito console ]

**Eine Domäne konfigurieren.**

1. Navigieren Sie unter **Branding** zum **Domain-Menü**.

1. Wählen Sie neben **Domain** die Option **Actions** und anschließend **Create Cognito domain** aus. Wenn Sie bereits eine Benutzerpool-Präfixdomäne konfiguriert haben, wählen Sie **Cognito-Domäne löschen**, bevor Sie Ihre neue benutzerdefinierte Domäne erstellen.

1. Geben Sie ein verfügbares Domain-Präfix zur Verwendung mit einer **Amazon-Cognito-Domäne** ein. Informationen zum Einrichten einer **benutzerdefinierten Domain** finden Sie unter[Verwenden Sie Ihre eigene Domain für die verwaltete Anmeldung](cognito-user-pools-add-custom-domain.md).

1. Wählen Sie eine **Branding-Version**. Ihre Branding-Version gilt für alle benutzerinteraktiven Seiten in dieser Domain. Ihr Benutzerpool kann entweder verwaltetes Login oder gehostetes UI-Branding für alle App-Clients hosten.
**Anmerkung**  
Sie können eine benutzerdefinierte Domain und eine Präfix-Domain haben, aber Amazon Cognito bedient nur den `/.well-known/openid-configuration` Endpunkt für die *benutzerdefinierte* Domain.

1. Wählen Sie **Erstellen** aus.

------
#### [ CLI/API ]

Verwenden Sie die folgenden Befehle zum Erstellen eines benutzerdefinierten Domänen-Präfix. Weisen Sie dieses anschließend Ihrem Benutzerpool zu.

**Konfigurieren einer Benutzerpool-Domäne**
+ AWS CLI: `aws cognito-idp create-user-pool-domain`

  **Beispiel**: `aws cognito-idp create-user-pool-domain --user-pool-id <user_pool_id> --domain <domain_name> --managed-login-version 2`
+ API-Betrieb für Benutzerpools: [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html)

**So rufen Sie Informationen zu einer Domäne auf**
+ AWS CLI: `aws cognito-idp describe-user-pool-domain`

  **Beispiel**: `aws cognito-idp describe-user-pool-domain --domain <domain_name>`
+ API-Betrieb für Benutzerpools: [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html)

**So löschen Sie eine Domain**
+ AWS CLI: `aws cognito-idp delete-user-pool-domain`

  **Beispiel**: `aws cognito-idp delete-user-pool-domain --domain <domain_name>`
+ API-Betrieb für Benutzerpools: [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html)

------

## Überprüfen Sie Ihre Anmeldeseite
<a name="cognito-user-pools-assign-domain-prefix-verify"></a>
+ Stellen Sie sicher, dass die Anmeldeseite Ihrer bei Amazon Cognito gehosteten Domäne erreichbar ist.

  ```
  https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
  ```

Ihre Domäne wird auf der Seite **Domänenname** der Amazon-Cognito-Konsole angezeigt. Ihre Client-ID der App und die Callback-URL werden auf der Seite **App client settings (App-Client-Einstellungen)** angezeigt.

# Verwenden Sie Ihre eigene Domain für die verwaltete Anmeldung
<a name="cognito-user-pools-add-custom-domain"></a>

Nachdem Sie einen App-Client eingerichtet haben, können Sie Ihren Benutzerpool mit einer benutzerdefinierten Domäne für die Domänendienste von [Managed Login](cognito-user-pools-managed-login.md) konfigurieren. Mit einer benutzerdefinierten Domain können sich Benutzer mit Ihrer eigenen Webadresse statt mit der `amazoncognito.com` [Standardpräfixdomäne](cognito-user-pools-assign-domain-prefix.md) bei Ihrer Anwendung anmelden. Benutzerdefinierte Domänen verbessern das Vertrauen der Benutzer in Ihre Anwendung mit einem vertrauten Domainnamen, insbesondere wenn die Stammdomäne mit der Domain übereinstimmt, die Ihre Anwendung hostet. Benutzerdefinierte Domänen können die Einhaltung organisatorischer Sicherheitsanforderungen verbessern.

Für eine benutzerdefinierte Domain sind einige Voraussetzungen erforderlich, darunter ein Benutzerpool, ein App-Client und eine Webdomäne, die Sie besitzen. Für benutzerdefinierte Domains ist außerdem ein SSL-Zertifikat für die benutzerdefinierte Domain erforderlich, die mit AWS Certificate Manager (ACM) in USA Ost (Nord-Virginia) verwaltet wird. Amazon Cognito erstellt eine CloudFront Amazon-Distribution, die während des Transports mit Ihrem ACM-Zertifikat gesichert ist. Da Sie Eigentümer der Domain sind, müssen Sie einen DNS-Eintrag erstellen, der den Datenverkehr an die CloudFront Distribution für Ihre benutzerdefinierte Domain weiterleitet.

Sobald diese Elemente fertig sind, können Sie die benutzerdefinierte Domain über die Amazon Cognito Cognito-Konsole oder API zu Ihrem Benutzerpool hinzufügen. Dazu müssen Sie den Domainnamen und das SSL-Zertifikat angeben und anschließend Ihre DNS-Konfiguration mit dem angegebenen Alias-Ziel aktualisieren. Nachdem Sie diese Änderungen vorgenommen haben, können Sie überprüfen, ob die Anmeldeseite in Ihrer benutzerdefinierten Domain zugänglich ist.

Der einfachste Weg, eine benutzerdefinierte Domain zu erstellen, ist eine öffentlich gehostete Zone in Amazon Route 53. Die Amazon Cognito Cognito-Konsole kann in wenigen Schritten die richtigen DNS-Einträge erstellen. Bevor Sie beginnen, sollten Sie erwägen, [eine Route 53-Hosting-Zone für eine Domain oder Subdomain zu erstellen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html), die Sie besitzen.

**Topics**
+ [Hinzufügen einer benutzerdefinierten Domäne zu einem Benutzerpool](#cognito-user-pools-add-custom-domain-adding)
+ [Voraussetzungen](#cognito-user-pools-add-custom-domain-prereq)
+ [Schritt 1: Eingeben des benutzerdefinierten Domänennamens](#cognito-user-pools-add-custom-domain-console-step-1)
+ [Schritt 2: Hinzufügen eines Alias-Ziels und einer Subdomäne](#cognito-user-pools-add-custom-domain-console-step-2)
+ [Schritt 3: Überprüfen Ihrer Anmeldeseite](#cognito-user-pools-add-custom-domain-console-step-3)
+ [Ändern des SSL-Zertifikats für die benutzerdefinierte Domäne](#cognito-user-pools-add-custom-domain-changing-certificate)

## Hinzufügen einer benutzerdefinierten Domäne zu einem Benutzerpool
<a name="cognito-user-pools-add-custom-domain-adding"></a>

Zum Hinzufügen einer benutzerdefinierten Domäne zum Benutzerpool legen Sie den Domänennamen in der Amazon-Cognito-Konsole fest und stellen ein Zertifikat bereit, das Sie mit [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/) (ACM) verwalten. Wenn Sie die Domäne hinzugefügt haben, stellt Amazon Cognito ein Aliasziel zur Verfügung, das Sie zur DNS-Konfiguration hinzufügen.

## Voraussetzungen
<a name="cognito-user-pools-add-custom-domain-prereq"></a>

Bevor Sie anfangen, benötigen Sie:
+ Einen Benutzerpool mit einem App-Client. Weitere Informationen finden Sie unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).
+ Eine Web-Domäne, die Sie besitzen. Die *übergeordnete Domain* muss über einen gültigen **A-Eintrag** im DNS verfügen. Sie können diesem Datensatz einen beliebigen Wert zuweisen. Die übergeordnete Domain kann die Wurzel der Domain oder eine untergeordnete Domain sein, die in der Domainhierarchie eine Stufe höher ist. Wenn Ihre benutzerdefinierte Domain beispielsweise *auth.xyz.example.com* lautet, muss Amazon Cognito in der Lage sein, *xyz.example.com* in eine IP-Adresse aufzulösen. Um versehentliche Auswirkungen auf die Kundeninfrastruktur zu verhindern, unterstützt Amazon Cognito die Verwendung von Top-Level-Domains (TLDs) für benutzerdefinierte Domains nicht. Weitere Informationen finden Sie unter [Domänennamen](https://tools.ietf.org/html/rfc1035).
+ Die Möglichkeit zum Erstellen einer Unterdomäne für die benutzerdefinierte Domäne. Wir empfehlen **Auth** für Ihren Subdomainnamen. Beispiel: *auth.example.com*.
**Anmerkung**  
Möglicherweise müssen Sie ein neues Zertifikat für die Subdomäne Ihrer benutzerdefinierten Domäne beschaffen, wenn Sie kein Platzhalterzertifikat ([Wildcard Certificate](https://en.wikipedia.org/wiki/Wildcard_certificate)) haben.
+ Ein öffentliches SSL/TLS Zertifikat, das von ACM in USA East (Nord-Virginia) verwaltet wird. Das Zertifikat muss in us-east-1 sein, da das Zertifikat mit einer Verteilung in CloudFront einem globalen Dienst verknüpft wird.
+ Browserclients, die Server Name Indication (SNI) unterstützen. Die CloudFront Verteilung, die Amazon Cognito benutzerdefinierten Domains zuweist, erfordert SNI. Sie können diese Einstellung nicht ändern. Weitere Informationen zu SNI in CloudFront Distributionen finden Sie unter [Verwenden von SNI zur Bearbeitung von HTTPS-Anfragen](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni) im *Amazon CloudFront * Developer Guide.
+ Eine Anwendung, die es Ihrem Benutzerpool-Autorisierungsserver ermöglicht, Cookies zu Benutzersitzungen hinzuzufügen. Amazon Cognito setzt mehrere erforderliche Cookies für verwaltete Anmeldeseiten. Dies sind beispielsweise `cognito`, `cognito-fl` und `XSRF-TOKEN`. Obwohl jedes einzelne Cookie den Größenbeschränkungen des Browsers entspricht, können Änderungen an Ihrer Benutzerpool-Konfiguration dazu führen, dass verwaltete Anmelde-Cookies an Größe zunehmen. Ein Zwischendienst wie ein Application Load Balancer (ALB) vor Ihrer benutzerdefinierten Domain kann eine maximale Header-Größe oder Gesamtcookie-Größe erzwingen. Wenn Ihre Anwendung auch ihre eigenen Cookies setzt, können die Sitzungen Ihrer Benutzer diese Grenzwerte überschreiten. Um Konflikte bei der Größenbeschränkung zu vermeiden, empfehlen wir, dass Ihre Anwendung keine Cookies auf der Subdomain setzt, die die Domänendienste Ihres Benutzerpools hostet.
+ Erlaubnis zur Aktualisierung von CloudFront Amazon-Distributionen. Fügen Sie hierzu die folgende IAM-Richtlinienanweisung einem Benutzer in Ihrem AWS-Konto an:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
           {
              "Sid": "AllowCloudFrontUpdateDistribution",
              "Effect": "Allow",
              "Action": [
                  "cloudfront:updateDistribution"
              ],
              "Resource": [
                  "*"
              ]
          }
      ]
  }
  ```

------

  Weitere Informationen zur Autorisierung von Aktionen finden Sie unter [Verwenden identitätsbasierter Richtlinien (IAM-Richtlinien) für](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/access-control-managing-permissions.html). CloudFront CloudFront

  Amazon Cognito verwendet zunächst Ihre IAM-Berechtigungen, um die CloudFront Verteilung zu konfigurieren, aber die Verteilung wird von verwaltet. AWS Sie können die Konfiguration der CloudFront Distribution, die Amazon Cognito Ihrem Benutzerpool zugeordnet hat, nicht ändern. Sie können also beispielsweise nicht die unterstützten TLS-Versionen in der Sicherheitsrichtlinie aktualisieren.

## Schritt 1: Eingeben des benutzerdefinierten Domänennamens
<a name="cognito-user-pools-add-custom-domain-console-step-1"></a>

Sie können dem Benutzerpool Ihre Domäne mithilfe der Amazon-Cognito-Konsole oder der API hinzufügen.

------
#### [ Amazon Cognito console ]

**Domäne dem Benutzerpool über die Amazon-Cognito-Konsole hinzufügen:**

1. Navigieren Sie unter **Branding** zum **Domain-Menü**.

1. Navigieren Sie dann zu **Domäne** und wählen Sie **Aktionen**, **Benutzerdefinierte Domäne erstellen** oder **Amazon-Cognito-Domäne erstellen** aus. Wenn Sie bereits eine benutzerdefinierte Domäne für den Benutzerpool konfiguriert haben, wählen Sie **Benutzerdefinierte Domäne löschen** aus, bevor Sie Ihre neue benutzerdefinierte Domäne erstellen.

1. Wählen Sie neben **Domain** die Option **Aktionen** und anschließend **Benutzerdefinierte Domain erstellen** aus. Wenn Sie bereits eine benutzerdefinierte Domain konfiguriert haben, wählen Sie **Benutzerdefinierte Domain löschen**, um die bestehende Domain zu löschen, bevor Sie Ihre neue benutzerdefinierte Domain erstellen.

1. Geben Sie für **Custom domain** (Benutzerdefinierte Domäne) die URL der Domäne ein, die Sie mit Amazon Cognito verwenden möchten. Der Domänenname darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Verwenden Sie keinen Bindestrich als erstes oder letztes Zeichen. Trennen Sie die Namen von Unterdomänen durch Punkte.

1. Wählen Sie für **ACM certificate** (ACM-Zertifikat) das SSL-Zertifikat aus, das Sie für die Domäne verwenden möchten. Nur ACM-Zertifikate in USA Ost (Nord-Virginia) können unabhängig von Ihrem Benutzerpool mit einer benutzerdefinierten Amazon Cognito Cognito-Domain verwendet werden. AWS-Region 

   Wenn Sie kein verfügbares Zertifikat haben, können Sie ACM verwenden, um eines in USA Ost (Nord-Virginia) bereitzustellen. Weitere Informationen finden Sie unter [Erste Schritte](https://docs.aws.amazon.com/acm/latest/userguide/gs.html) im *AWS Certificate Manager -Benutzerhandbuch*.

1. Wählen Sie eine **Branding-Version**. Ihre Branding-Version gilt für alle benutzerinteraktiven Seiten in dieser Domain. Ihr Benutzerpool kann entweder verwaltetes Login oder gehostetes UI-Branding für alle App-Clients hosten.
**Anmerkung**  
Sie können eine benutzerdefinierte Domain und eine Präfix-Domain haben, aber Amazon Cognito bedient nur den `/.well-known/openid-configuration` Endpunkt für die *benutzerdefinierte* Domain.

1. Wählen Sie **Erstellen** aus.

1. Amazon Cognito bringt Sie zum **Domain-Menü** zurück. Es wird Ihnen eine Nachricht mit dem Titel **Create an alias record in your domain's DNS** (Erstellen eines Alias-Datensatzes im DNS der Domäne) angezeigt. Notieren Sie die **Domäne** und das **Alias-Ziel**, das in der Konsole angezeigt wird. Sie werden im nächsten Schritt verwendet, um den Datenverkehr auf Ihre benutzerdefinierte Domäne weiterzuleiten.

------
#### [ API ]

Der folgende [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html)Anfragetext erstellt eine benutzerdefinierte Domain.

```
{
   "Domain": "auth.example.com",
   "UserPoolId": "us-east-1_EXAMPLE",
   "ManagedLoginVersion": 2,
   "CustomDomainConfig": {
    "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
   }
}
```

------

## Schritt 2: Hinzufügen eines Alias-Ziels und einer Subdomäne
<a name="cognito-user-pools-add-custom-domain-console-step-2"></a>

In diesem Schritt richten Sie einen Alias über Ihren Domain Name Server (DNS)-Serviceanbieter ein, der auf das Alias-Ziel aus dem vorherigen Schritt zurück verweist. Wenn Sie Amazon Route 53 für die DNS-Adresse Auflösung verwenden, wählen Sie den Abschnitt **Hinzufügen eines Alias-Ziels und einer Subdomäne mit Route 53**.

### Hinzufügen eines Alias-Ziels und einer Subdomäne zu Ihrer aktuellen DNS-Konfiguration
<a name="cognito-user-pools-add-custom-domain-console-step-2a"></a>
+ Wenn Sie nicht Route 53 für die DNS-Adressauflösung verwenden, müssen Sie die Konfigurationstools Ihres DNS-Serviceanbieters verwenden, um das Alias-Ziel aus dem vorherigen Schritt zum DNS-Datensatz Ihrer Domäne hinzuzufügen. Ihre DNS-Anbieter muss außerdem die Subdomäne für Ihre benutzerdefinierte Domäne einrichten.

### Hinzufügen eines Alias-Ziels und einer Subdomäne mit Route 53
<a name="cognito-user-pools-add-custom-domain-console-step-2b"></a>

1. Melden Sie sich bei der [Route-53-Konsole](https://console.aws.amazon.com/route53/) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wenn Sie in Route 53 keine öffentlich gehostete Zone haben, erstellen Sie eine Zone mit einem Stamm, der Ihrer benutzerdefinierten Domäne übergeordnet ist. Weitere Informationen finden Sie unter [Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) im *Amazon Route 53 Developer Guide*.

   1. Wählen Sie **Create Hosted Zone**.

   1. Geben Sie beispielsweise *auth.example.com* die übergeordnete Domain Ihrer benutzerdefinierten Domain aus der **Domainnamenliste** ein. *myapp.auth.example.com*

   1. Geben Sie eine **Beschreibung** für Ihre gehostete Zone ein.

   1. Wählen Sie einen **Typ** einer gehosteten Zone aus **Public hosted zone** (Öffentliche gehostete Zone), damit öffentliche Clients die benutzerdefinierte Domäne auflösen können. Die Auswahl von **Private hosted zone** (Private gehostete Zone) wird nicht unterstützt.

   1. Wenden Sie **Tags** wie gewünscht an.

   1. Wählen Sie **Erstellte gehostete Zone**.
**Anmerkung**  
Sie können auch eine neue Hosting-Zone für Ihre benutzerdefinierte Domain mit einer Delegierung in der übergeordneten Hosting-Zone erstellen, die Anfragen an die Host-Zone der Subdomain weiterleitet. Andernfalls erstellen Sie einen A-Eintrag. Diese Methode bietet mehr Flexibilität und Sicherheit bei Ihren gehosteten Zonen. Weitere Informationen finden Sie unter [Creating a subdomain for a domain hosted through Amazon Route 53](https://aws.amazon.com/premiumsupport/knowledge-center/create-subdomain-route-53/) (Erstellen einer Subdomäne für eine über Amazon Route 53 gehostete Domäne).

1. Wählen Sie auf der Seite **Hosted Zones (Gehostete Zonen)** den Namen Ihrer gehosteten Zone aus.

1. Fügen Sie einen DNS-Eintrag für die übergeordnete Domain Ihrer benutzerdefinierten Domain hinzu, falls Sie noch keinen haben. Erstellen Sie einen DNS-Eintrag für die übergeordnete Domain mit den folgenden Eigenschaften:
   + **Name des Eintrags**: Leer lassen.
   + **Datensatztyp**:`A`.
   + **Alias**: Nicht aktivieren.
   + **Wert**: Geben Sie ein Ziel Ihrer Wahl ein. Dieser Datensatz muss *etwas* ergeben, aber der Wert des Datensatzes spielt für Amazon Cognito keine Rolle.
   + **TTL**: Stellen Sie Ihre bevorzugte TTL ein oder belassen Sie sie als Standard.
   + **Routing-Richtlinie**: Wählen Sie **Simple** Routing.

1. Wählen Sie **Create records** (Datensätze erstellen). Im Folgenden finden Sie einen Beispieldatensatz für die Domain*example.com*:

   `example.com. 60 IN A 198.51.100.1`
**Anmerkung**  
Amazon Cognito überprüft, dass es einen DNS-Datensatz für die übergeordnete Domäne Ihrer benutzerdefinierten Domäne gibt, um sich vor versehentlichem Hijacking von Produktionsdomänen zu schützen. Wenn Sie keinen DNS-Datensatz für die übergeordnete Domäne haben, gibt Amazon Cognito einen Fehler zurück, wenn Sie versuchen, die benutzerdefinierte Domäne festzulegen. Ein SOA-Eintrag (Start of Authority) ist kein ausreichender DNS-Eintrag für die Überprüfung der übergeordneten Domain.

1. Fügen Sie einen weiteren DNS-Eintrag für Ihre benutzerdefinierte Domain mit den folgenden Eigenschaften hinzu:
   + **Datensatzname**: Ihr benutzerdefiniertes Domainpräfix, `auth` um beispielsweise einen Eintrag für zu erstellen`auth.example.com`.
   + **Datensatztyp**:`A`.
   + **Alias**: Aktivieren.
   + **Traffic weiterleiten an**: Wählen Sie **Alias to Cloudfront Distribution**. Geben Sie beispielsweise `123example.cloudfront.net` das **Alias-Ziel** ein, das Sie zuvor aufgezeichnet haben.
   + **Routing-Richtlinie**: Wählen Sie **Simple Routing**.

1. Wählen Sie **Create records** (Datensätze erstellen).
**Anmerkung**  
Es kann etwa 60 Sekunden dauern, bis Ihre neuen Datensätze auf alle Route-53-DNS-Server übertragen werden. Sie können die Route [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html)53-API-Methode verwenden, um zu überprüfen, ob Ihre Änderungen übernommen wurden. 

## Schritt 3: Überprüfen Ihrer Anmeldeseite
<a name="cognito-user-pools-add-custom-domain-console-step-3"></a>
+ Stellen Sie sicher, dass die Anmeldeseite Ihrer benutzerdefinierten Domäne erreichbar ist.

  Melden Sie sich bei Ihrer benutzerdefinierten Domäne und Subdomäne an, indem Sie diese Adresse in Ihren Browser eingeben. Dies ist eine Beispiel-URL einer benutzerdefinierten Domain *example.com* mit der *auth* Subdomain:

  ```
  https://myapp.auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
  ```

## Ändern des SSL-Zertifikats für die benutzerdefinierte Domäne
<a name="cognito-user-pools-add-custom-domain-changing-certificate"></a>

Falls erforderlich, können Sie mit Amazon Cognito das Zertifikat ändern, das Sie für Ihre benutzerdefinierte Domäne übernommen haben.

Im Falle der routinemäßigen Zertifikaterneuerung mit ACM ist dies in der Regel nicht notwendig. Wenn Sie das vorhandene Zertifikat in ACM erneuern, bleibt der ARN für Ihr Zertifikat gleich und die benutzerdefinierte Domäne verwendet automatisch das neue Zertifikat.

Wenn Sie jedoch das vorhandene Zertifikat durch ein neues ersetzen, gibt ACM dem neuen Zertifikat einen neuen ARN. Sie müssen diesen ARN an Amazon Cognito übermitteln, um das neue Zertifikat für den benutzerdefinierten Domänennamen zu übernehmen.

Nachdem Sie Ihr neues Zertifikat bereitgestellt haben, dauert es max. eine Stunde, bis Amazon Cognito das Zertifikat an die benutzerdefinierte Domäne verteilt hat.

**Bevor Sie beginnen**  
Bevor Sie das Zertifikat in Amazon Cognito ändern können, müssen Sie es ACM hinzufügen. Weitere Informationen finden Sie unter [Erste Schritte](https://docs.aws.amazon.com/acm/latest/userguide/gs.html) im *AWS Certificate Manager -Benutzerhandbuch*.  
Wenn Sie Ihr Zertifikat zu ACM hinzufügen, müssen Sie als AWS -Region USA Ost (Nord-Virginia) auswählen.

Sie können das Zertifikat mit der Amazon-Cognito-Konsole oder der API ändern.

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

**Zertifikat über die Amazon-Cognito-Konsole erneuern:**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon Cognito Cognito-Konsole unter[https://console.aws.amazon.com/cognito/home](https://console.aws.amazon.com/cognito/home).

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie den Benutzerpool aus, für den Sie das Zertifikat aktualisieren möchten.

1. Wählen Sie das **Domain-Menü**.

1. Wählen Sie **Actions** (Aktionen), **Edit ACM certificate** (ACM-Zertifikat bearbeiten) aus.

1. Wählen Sie das neue Zertifikat aus, das Sie Ihrer benutzerdefinierten Domäne zuordnen möchten.

1. Wählen Sie **Save Changes**.

------
#### [ API ]

**So erneuern Sie ein Zertifikat (Amazon-Cognito-API)**
+ Verwenden Sie die Aktion „[UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html)“.

------

# Branding auf verwaltete Anmeldeseiten anwenden
<a name="managed-login-branding"></a>

Möglicherweise möchten Sie für ein einheitliches Benutzererlebnis zwischen Ihrem Authentifizierungsdienst und Ihrer Anwendung sorgen. Sie können dieses Ziel entweder mit benutzerdefinierten Formularen und Back-End-API-Vorgängen in einem AWS SDK oder mit verwalteter Anmeldung erreichen. Die verwaltete Anmeldung und die klassische gehostete Benutzeroberfläche sind Web-Frontends für die Komponente Ihrer Anwendung, die die Authentifizierung mit Benutzerpools ermöglicht. Um Ihre verwalteten Authentifizierungsdienste mit der UX Ihrer Anwendung zu synchronisieren, haben Sie zwei Anpassungsoptionen: den Branding-Editor und das gehostete UI-Branding. Sie können Ihr bevorzugtes Erlebnis in der Amazon Cognito Cognito-Konsole und bei API-Vorgängen für den Benutzerpool wählen.

**Der Branding-Editor**  
Der [Branding-Editor](managed-login-brandingeditor.md) ist die neueste Anpassungsoption für die Benutzeroberfläche der neuesten Benutzerpools, [verwaltete Anmeldung](cognito-user-pools-managed-login.md). Der Branding-Editor ist ein visueller Editor ohne Code für verwaltete Anmelde-Assets und -Stile sowie eine Reihe von API-Operationen für die programmatische Konfiguration einer Vielzahl von Konfigurationsoptionen. Benutzerpools, die Sie mit einer [Domain](cognito-user-pools-assign-domain.md) und einer verwalteten Anmeldung konfigurieren, rendern automatisch die Branding-Designer-Version Ihrer Anmeldeseiten.

**Branding für gehostete Benutzeroberflächen (klassisch)**  
Das [Branding-Erlebnis für gehostete Benutzeroberflächen (klassisch)](hosted-ui-classic-branding.md) bietet zwei Optionen: das Ändern einer CSS-Datei (Cascading Stylesheets) mit einem festen Satz von Stiloptionen und das Hinzufügen eines benutzerdefinierten Logobilds. Sie können diese Optionen in der Amazon Cognito Cognito-Konsole oder mit dem Vorgang „UICustomizationAPI [einrichten“ festlegen](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html). Zu dem Zeitpunkt, als der Service eingeführt wurde, hatte Amazon Cognito nur diese Option. Benutzerpools, die Sie mit einer [Domain](cognito-user-pools-assign-domain.md) und der gehosteten UI-Branding-Version konfigurieren, rendern automatisch die klassische Version Ihrer Anmeldeseiten. Ihr [Featureplan](cognito-sign-in-feature-plans.md) unterstützt möglicherweise auch nur die gehostete Benutzeroberfläche.

**Anmerkung**  
Der Branding-Editor und das klassische Branding-Erlebnis ändern die visuellen Eigenschaften Ihres gehosteten Authentifizierungsdienstes. Derzeit können Sie den Text, der auf Ihren verwalteten Anmeldeseiten angezeigt wird, nicht ändern, es sei denn, Sie können die Lokalisierung in eine von mehreren Sprachen anwenden. Weitere Informationen zur Lokalisierung finden Sie unter[Lokalisierung bei verwalteter Anmeldung](cognito-user-pools-managed-login.md#managed-login-localization).

## Wählen Sie ein Branding-Erlebnis und weisen Sie Stile zu
<a name="managed-login-branding-choose"></a>

In der Amazon Cognito Cognito-Konsole wird für neue Benutzerpools standardmäßig das Branding-Erlebnis **Managed Login** verwendet. Benutzerpools, die Sie eingerichtet haben, bevor die verwaltete Anmeldung verfügbar war, erhalten das Branding **Hosted UI (klassisch)**. Sie können zwischen verwalteter Anmeldung und gehostetem UI-Branding wechseln. Wenn Sie Ihre **Branding-Version** ändern, wendet Amazon Cognito die Änderung sofort auf die benutzerinteraktiven Seiten Ihrer Benutzerpool-Domain an. Mit der verwalteten Anmeldung und der gehosteten Benutzeroberfläche kann Ihr Benutzerpool für jeden App-Client einen eigenen Stil haben.

Jeder App-Client kann einen eigenen *Branding-Stil* haben, aber eine Benutzerpool-Domain dient entweder der verwalteten Anmeldung oder der gehosteten Benutzeroberfläche. Ein Stil ist ein Satz von Anpassungseinstellungen, die auf einen App-Client angewendet werden. Sie können eine [benutzerdefinierte Domäne](cognito-user-pools-add-custom-domain.md) und eine [Präfixdomäne](cognito-user-pools-assign-domain-prefix.md) pro Benutzerpool einrichten. Sie können Ihren benutzerdefinierten Domains und Präfix-Domains unterschiedliche Branding-Versionen zuweisen. Eine Präfixdomäne ist jedoch nicht voll funktionsfähig, wenn Sie auch über eine benutzerdefinierte Domain verfügen — die `.well-known` OIDC-Discovery-Endpunkte bieten *nur* benutzerdefinierte Domänenpfade. Sie können die Präfixdomäne nur für Operationen verwenden, für die keine Endpoint Discovery (`openid-configuration`) in einem Benutzerpool mit dieser Konfiguration erforderlich ist. Aufgrund dieser Eigenschaften von Benutzerpools können Sie effektiv eine Branding-Version pro Benutzerpool auswählen.

Sie können den App-Clients in einem Benutzerpool, in dem für eine Domain die Branding-Version mit verwalteter Anmeldung festgelegt ist, Stile zuweisen. Stile sind eine Reihe von visuellen Einstellungen, die aus Bilddateien, Anzeigeoptionen und CSS-Werten bestehen. Wenn Sie einem App-Client einen Stil zuweisen, überträgt Amazon Cognito Ihre Aktualisierungen sofort auf Ihre benutzerinteraktiven Anmeldeseiten. Amazon Cognito rendert Ihre benutzerinteraktiven Seiten mit der von Ihnen ausgewählten Branding-Version und den Anpassungen, die Sie darauf vorgenommen haben.

### Stile aktualisieren und löschen
<a name="managed-login-branding-update"></a>

Wenn Sie einen Stil erstellen, verknüpfen Sie ihn mit einem App-Client. Um eine Stilzuweisung für einen App-Client zu ändern, müssen Sie zuerst den ursprünglichen Stil löschen. Derzeit können Sie keine Einstellungen zwischen Stilen kopieren. Sie müssen dies programmgesteuert tun. Um Einstellungen zwischen Stilen und App-Clients zu replizieren, rufen Sie die Einstellungen für einen Stil mit der [DescribeManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeManagedLoginBranding.html)API-Operation ab und wenden Sie sie mit oder an. [CreateManagedLoginBranding[UpdateManagedLoginBranding](https://docs.aws.amazon.com/)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateManagedLoginBranding.html) Sie können die einem App-Client zugewiesenen Stile nicht ändern — Sie können nur das Original löschen und einen neuen festlegen. Weitere Informationen zur Verwaltung von Stilen mit API- und SDK-Vorgängen finden Sie unter. [API- und SDK-Operationen für verwaltetes Login-Branding](managed-login-brandingeditor.md#branding-designer-api)

**Anmerkung**  
Programmatische Anfragen, die einen Branding-Stil erstellen oder aktualisieren, dürfen eine Anforderungsgröße von nicht mehr als 2 MB haben. Wenn Ihre Anfrage diesen Grenzwert überschreitet, teilen Sie Ihre Anfrage in mehrere `UpdateManagedLoginBranding` Anfragen für Parametergruppen auf, die die maximale Anforderungsgröße nicht überschreiten. Diese Anfragen führen nicht dazu, dass nicht spezifizierte Parameter auf die Standardwerte gesetzt werden, sodass Sie Teilanfragen senden können, ohne dass dies Auswirkungen auf die vorhandenen Einstellungen hat.

Sie löschen einen Stil in der Amazon Cognito Cognito-Konsole aus dem Menü **Verwaltete Anmeldung**. Wählen Sie unter **Stile** den Stil aus, den Sie löschen möchten, und wählen Sie **Stil löschen** aus.

Auf oberster Ebene besteht der Prozess der Zuordnung des Brandings zu einer Domain aus den folgenden Schritten.

1. [Erstellen Sie eine Domain und legen Sie die Branding-Version](cognito-user-pools-assign-domain.md) fest.

1. Erstellen Sie einen Branding-Stil und weisen Sie ihn einem App-Client zu.

**Um einem App-Client einen Stil zuzuweisen**

1. Erstellen Sie im **Domain-Menü** Ihres Benutzerpools eine Domain und setzen Sie die **Branding-Version** auf **Verwaltete Anmeldung**.

1. Navigieren Sie zum Menü **Verwaltete Anmeldung**. Wählen Sie unter **Stile** die Option **Stil erstellen** aus.

1. Wählen Sie den App-Client aus, dem Sie Ihren Stil zuweisen möchten, oder erstellen Sie einen neuen [App-Client](user-pool-settings-client-apps.md).

1. Um mit der Konfiguration Ihrer Branding-Einstellungen zu beginnen, wählen Sie **Branding-Editor starten**.

**Topics**
+ [Wählen Sie ein Branding-Erlebnis und weisen Sie Stile zu](#managed-login-branding-choose)
+ [Der Branding-Editor und die Anpassung der verwalteten Anmeldung](managed-login-brandingeditor.md)
+ [Anpassen des Brandings für gehostete Benutzeroberflächen (klassisch)](hosted-ui-classic-branding.md)

# Der Branding-Editor und die Anpassung der verwalteten Anmeldung
<a name="managed-login-brandingeditor"></a>

Der Branding-Editor ist ein visuelles Design- und Bearbeitungstool für Ihre verwalteten Login-Webseiten. Es ist in die Amazon Cognito Cognito-Konsole integriert. Im Branding-Editor beginnen Sie mit einer Vorschau Ihrer Anmeldeseiten und können dann zu einer Schnelleinrichtungsoption oder einer Detailansicht mit erweiterten Optionen übergehen. Sie können Stilparameter ändern und eine Vorschau anzeigen oder ein benutzerdefiniertes Hintergrundbild und Logo hinzufügen. Sie können den Hellmodus und den Dunkelmodus konfigurieren.

![\[Eine Vorschau des visuellen Editors für den Branding-Editor für Amazon Cognito Cognito-Benutzerpools.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/hosted-ui-customization-editor-preview.png)


Erstellen Sie zunächst einen Stil, den Sie auf Ihren Benutzerpool oder einen App-Client anwenden können.

**Um mit dem Branding-Editor zu beginnen**

1. [Erstellen Sie über den Domain-Tab eine](cognito-user-pools-assign-domain.md) **Domain** oder aktualisieren Sie Ihre bestehende Domain. Stellen Sie unter **Branding-Version** Ihre Domain so ein, dass sie die **verwaltete Anmeldung** verwendet.

1. Löschen Sie den vorhandenen App-Client-Stil, falls vorhanden.

   1. Wählen Sie im Menü **App-Clients** Ihren App-Client aus.

   1. Wählen Sie unter **Verwalteter Anmeldestil den Stil** aus, der Ihrem App-Client zugewiesen ist.

   1. Wählen Sie **Stil löschen.** Bestätigen Sie Ihre Auswahl.

1. Navigieren Sie in Ihrem Benutzerpool zum Menü **Verwaltete Anmeldung**. Falls Sie dies noch nicht getan haben, folgen Sie der Aufforderung, um einen [Funktionsplan](cognito-sign-in-feature-plans.md) auszuwählen, der eine verwaltete Anmeldung beinhaltet. Sie können auch „**Diese Funktion in der Vorschau anzeigen**“ auswählen, wenn Sie den Branding-Editor auschecken möchten, ohne Änderungen vorzunehmen.

1. Wählen Sie unter **Stile** die Option **Stil erstellen** aus.

1. Wählen Sie den App-Client aus, dem Sie Ihren Stil zuweisen möchten, und wählen Sie **Erstellen** aus. Sie können auch einen neuen App-Client erstellen.

1. Die Amazon Cognito Cognito-Konsole startet den Branding-Editor.

1. Wählen Sie eine Registerkarte, auf der Sie mit der Bearbeitung beginnen möchten, oder wählen Sie **Editor starten** und rufen Sie die [Schnellkonfiguration](#branding-designer-quick-setup) auf. Die folgenden Tabs sind verfügbar:  
**Vorversion**  
Sehen Sie sich auf Ihren verwalteten Anmeldeseiten an, wie Ihre aktuellen Auswahlen aussehen.  
**Stiftung**  
Legen Sie ein allgemeines Thema fest, konfigurieren Sie Links zu externen Identitätsanbietern und gestalten Sie Formularfelder.  
**Komponenten**  
Konfigurieren Sie Stile für Kopf- und Fußzeilen und einzelne Benutzeroberflächenelemente.

1. Rufen Sie Quick Setup auf, um Entscheidungen über die Grundeinstellungen zu treffen. Wählen Sie **die Kategorie Einstellungen ändern** und anschließend **Schnelleinrichtung** aus. Wenn Sie **Weiter** auswählen, wird der Branding-Editor mit einer Reihe grundlegender Optionen gestartet, die Sie konfigurieren müssen.

## Text und Lokalisierung
<a name="branding-designer-loc"></a>

Sie können Text im Branding-Editor nicht ändern oder lokalisieren. Fügen Sie stattdessen der URL, die Sie an Benutzer verteilen, einen `lang` Abfrageparameter hinzu. Dieser Parameter bewirkt, dass Ihre verwalteten Anmeldeseiten in eine von mehreren verfügbaren Sprachen lokalisiert werden. Weitere Informationen finden Sie unter [Lokalisierung bei verwalteter Anmeldung](cognito-user-pools-managed-login.md#managed-login-localization). 

## Quick Setup
<a name="branding-designer-quick-setup"></a>

Mit der Schaltfläche **Branding-Editor starten** wird ein visueller Editor für Ihre verwaltete Anmeldekonfiguration geladen, in dem Sie aus einer Vielzahl von primären Anpassungsoptionen auswählen können. Während Sie eine Auswahl treffen, rendert Amazon Cognito Ihre verwalteten Anmeldeänderungen in einem Vorschaufenster. Um zum Menü mit den detaillierten Einstellungen zurückzukehren, wählen Sie die Schaltfläche „**Einstellungskategorie ändern“**.

**Wie sollte das Gesamtbild aussehen und sich anfühlen?**  
Konfigurieren Sie die grundlegenden Theme-Einstellungen für die verwaltete Anmeldung.    
**Anzeigemodus**  
Wählen Sie für Ihre verwaltete Anmeldung einen Lichtmodus, einen Dunkelmodus oder ein adaptives Erlebnis. Die adaptiven Einstellungen richten sich nach den Browsereinstellungen des Benutzers, wenn Amazon Cognito die verwaltete Anmeldung rendert. Wenn Sie einen browseradaptiven Modus wählen, können Sie verschiedene Farben und Logobilder für den hellen und dunklen Modus wählen.  
**Spacing**  
Legen Sie den Standardabstand zwischen Elementen auf der Seite fest.  
**Radius des Randes**  
Legt die Rundungstiefe des äußeren Randes von Elementen fest.

**Wie sollte der Seitenhintergrund aussehen?**    
**Typ des Hintergrunds**  
Das Kontrollkästchen **Bild anzeigen** gibt an, ob Sie ein Hintergrundbild oder eine einfarbige Hintergrundfarbe verwenden möchten.  

1. Um ein Bild zu verwenden, wählen Sie **Bild anzeigen** und wählen Sie ein Hintergrundbild für den hellen und dunklen Modus. Sie können auch eine **Seitenhintergrundfarbe** im Dunkel- und Hellmodus für Bereiche des Hintergrunds festlegen, die nicht vom Bild verdeckt werden.

1. **Wenn Sie nur eine Farbe für den Hintergrund verwenden möchten, deaktivieren Sie die Option „**Bild anzeigen**“ und wählen Sie eine Seitenhintergrundfarbe im Hell- und Dunkelmodus.**

**Wie sollten Formulare aussehen?**  
Konfigurieren Sie die Einstellungen für die Formularelemente der verwalteten Anmeldung. Beispiele für Formularelemente sind Anmelde- und Codeaufforderungen.    
**Horizontale Ausrichtung**  
Legen Sie die horizontale Ausrichtung der Formularfelder fest.  
**Das Logo des Formulars**  
Legen Sie die Positionierung Ihres Logo-Bildes fest.  
**Logo-Bild**  
Wählen Sie eine Logo-Bilddatei aus, die in das Formularelement für den Hell- und Dunkelmodus aufgenommen werden soll. Um ein Bild hochzuladen, wählen Sie das Drop-down-Menü **Logobild** aus, wählen Sie **Neues Asset hinzufügen** und fügen Sie eine Logodatei hinzu.  
**Primäre Markenfarbe**  
Lege eine Designfarbe für den hellen und dunklen Modus fest. Diese Farbe wird als Hintergrundfarbe auf alle als primär klassifizierten Elemente angewendet.

**Wie sollten Überschriften aussehen?**  
Wählen Sie aus, ob Sie eine Kopfzeile in Ihre verwalteten Anmeldeseiten aufnehmen möchten. Die Kopfzeile kann ein Logobild enthalten.    
**Header-Logo**  
Legen Sie die Position des Logo-Bildes in Ihrer Kopfzeile fest.  
**Logo-Bild**  
Wählen Sie eine Logo-Position und eine Logo-Bilddatei aus, die in die Kopfzeile aufgenommen werden sollen. Um ein Bild hochzuladen, wählen Sie das Drop-down-Menü **Logobild** aus, wählen Sie **Neues Asset hinzufügen** und fügen Sie eine Logodatei hinzu.  
**Hintergrundfarbe der Überschrift**  
Stellen Sie die Farben im Hell- und Dunkelmodus für den Hintergrund der Kopfzeile ein.

## Detaillierte Einstellungen
<a name="branding-designer-advanced"></a>

In der Ansicht mit den detaillierten Einstellungen können Sie einzelne Komponenten in den Bereichen **Foundation** und **Components** ändern. Auf der Registerkarte **Vorschau** wird eine Vorschau der verwalteten Anmeldung im aktuellen Kontext mit Ihren Anpassungen angezeigt.

![\[Ein AWS-Managementkonsole Screenshot der detaillierten Konfiguration der verwalteten Anmeldekomponenten.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/hosted-ui-customization-console-preview.png)


Um den visuellen Editor für eine Komponente aufzurufen, wählen Sie das Bearbeitungssymbol in der Kachel für die Komponente. Im Theme Studio-Editor können Sie mit der Schaltfläche **Einstellungskategorie ändern** zwischen den Komponenten wechseln.

### Fundament
<a name="branding-designer-advanced-foundation"></a>

**App-Stil**  
Konfigurieren Sie die Grundlagen Ihrer verwalteten Login-Konfiguration. Diese Kategorie enthält Einstellungen für das allgemeine Thema, den Textabstand sowie die Kopf- und Fußzeile der Seite.

**Anzeigemodus**  
Wählen Sie für Ihre verwalteten Anmeldeseiten einen hellen Modus, einen dunklen Modus oder ein adaptives Erlebnis. Wenn Sie einen browseradaptiven Modus wählen, können Sie verschiedene Farben und Logobilder für den Hell- und Dunkelmodus wählen.

**Spacing**  
Legen Sie den Standardabstand zwischen Elementen auf der Seite fest.

**Verhalten bei der Authentifizierung**  
Konfigurieren Sie Stile für die Schaltflächen, die Ihre Benutzer mit externen Identitätsanbietern verbinden (IdPs). Dieser Abschnitt enthält die Option **Domain-Sucheingabe**, mit der Benutzer die Anmeldeaufforderung nach einer E-Mail-Adresse verwalten und diese mit ihrer [SAML-Identity Provider-ID](cognito-user-pools-managing-saml-idp-naming.md) abgleichen können.

**Verhalten von Formularen**  
Konfigurieren Sie Stile für Eingabeformulare: die Positionierung von Eingaben, Farben und Ausrichtung von Elementen.

### Komponenten
<a name="branding-designer-advanced-components"></a>

**Schaltflächen**  
Stile für Schaltflächen, die Amazon Cognito auf verwalteten Anmeldeseiten rendert.

**Teiler**  
Stile für Trennlinien und Grenzen zwischen verwalteten Anmeldeelementen wie dem Eingabeformular und der Anmeldeselektion für externe Anbieter.

**Dropdown**  
Stile für Dropdownmenüs.

**Favicon**  
Stile für das Bild, das Amazon Cognito für das Tab- und Lesezeichensymbol bereitstellt.

**Fokusringe**  
Stile für die Markierungen, die auf eine aktuell ausgewählte Eingabe hinweisen.

**Formularcontainer**  
Stile für die Elemente, die ein Formular verbinden.

**Globale Fußzeile**  
Stile für die Fußzeile, die Amazon Cognito unten auf verwalteten Anmeldeseiten anzeigt.

**Globaler Header**  
Stile für die Kopfzeile, die Amazon Cognito oben auf verwalteten Anmeldeseiten anzeigt.

**Hinweise**  
Stile für Fehler- und Erfolgsmeldungen.

**Steuerelemente für Optionen**  
Stile für Kontrollkästchen, Mehrfachauswahlen und andere Eingabeaufforderungen.

**Hintergrund der Seite**  
Stile für den Gesamthintergrund der verwalteten Anmeldung.

**Eingaben**  
Stile für Eingabeaufforderungen in Formularfeldern.

**Link**  
Stile für Hyperlinks auf verwalteten Anmeldeseiten.

**Text für Seite**  
Stile für Text innerhalb der Seite.

**Text für das Feld**  
Stile für den Text rund um Formulareingaben.

## API- und SDK-Operationen für verwaltetes Login-Branding
<a name="branding-designer-api"></a>

Mit den API-Operationen [CreateManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateManagedLoginBranding.html)und können Sie auch ein Branding auf einen verwalteten Anmeldestil anwenden [UpdateManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateManagedLoginBranding.html). Diese Operationen sind ideal, um identische oder leicht modifizierte Versionen eines Branding-Stils für einen anderen App-Client oder Benutzerpool zu erstellen. Fragen Sie das verwaltete Login-Branding eines vorhandenen Stils mit der API-Operation ab [DescribeManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeManagedLoginBranding.html), ändern Sie dann die Ausgabe nach Bedarf und wenden Sie sie auf eine andere Ressource an.

Durch den `UpdateManagedLoginBranding` Vorgang wird der App-Client, auf den Ihr Stil angewendet wird, nicht geändert. Es aktualisiert nur den vorhandenen Stil, der einem App-Client zugewiesen ist. Um den Stil für einen App-Client vollständig zu ersetzen, löschen Sie den vorhandenen Stil mit [DeleteManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteManagedLoginBranding.html)und weisen Sie ihm einen neuen Stil mit zu`CreateManagedLoginBranding`. In der Amazon Cognito Cognito-Konsole gilt dasselbe: Sie müssen den vorhandenen Stil löschen und einen neuen erstellen.

Um das Branding für verwaltete Logins in einer API- oder SDK-Anfrage einzurichten, müssen Ihre Einstellungen in eine JSON-Datei eingebettet werden, die in einen `Document` Datentyp konvertiert wird. Im Folgenden finden Sie Anleitungen für Bilder, die Sie hinzufügen können, und für das Generieren programmatischer Anfragen zur Konfiguration eines Branding-Stils.

### Bild-Assets
<a name="branding-designer-api-assets"></a>

[CreateManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateManagedLoginBranding.html)und [UpdateManagedLoginBranding](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateManagedLoginBranding.html)fügen Sie einen `Assets` Parameter hinzu. Dieser Parameter ist ein Array von Bilddateien im Base64-codierten Binärformat.

**Anmerkung**  
Programmatische Anfragen, die den Branding-Stil erstellen oder aktualisieren, dürfen eine Anforderungsgröße von nicht mehr als 2 MB haben. Aufgrund der in Ihrer Anfrage enthaltenen Elemente wird diese Obergrenze möglicherweise überschritten. Wenn dies der Fall ist, teilen Sie Ihre Anfrage in mehrere `UpdateManagedLoginBranding` Anfragen für Parametergruppen auf, die die maximale Anforderungsgröße nicht überschreiten. Diese Anfragen führen nicht dazu, dass nicht spezifizierte Parameter auf die Standardwerte gesetzt werden, sodass Sie Teilanfragen senden können, ohne dass dies Auswirkungen auf die vorhandenen Einstellungen hat.

Für einige Ressourcen gelten Einschränkungen in Bezug auf die Dateitypen, die Sie einreichen können.


****  

| Komponente | Zulässige Dateierweiterungen | 
| --- | --- | 
| FAVICON\$1ICO | ico | 
| FAVICON\$1SVG | svg | 
| E-MAIL\$1GRAFIK | png, svg, jpeg | 
| SMS\$1GRAFIK | png, svg, jpeg | 
| AUTH\$1APP\$1GRAPHIC | png, svg, jpeg | 
| PASSWORT\$1GRAFIK | png, svg, jpeg | 
| PASSKEY\$1GRAPHIC | png, svg, jpeg | 
| SEITENÜBERSCHRIFT\$1LOGO | png, svg, jpeg | 
| SEITENKOPFHINTERGRUND | png, svg, jpeg | 
| SEITE\$1FOOTER\$1LOGO | png, svg, jpeg | 
| SEITENFUSSZEILE\$1HINTERGRUND | png, svg, jpeg | 
| SEITENHINTERGRUND | png, svg, jpeg | 
| FORM\$1HINTERGRUND | png, svg, jpeg | 
| FORM\$1LOGO | png, svg, jpeg | 
| IDP\$1BUTTON\$1ICON | ico, svg | 

Dateien des Typs SVG unterstützen die folgenden Attribute und Elemente.

------
#### [ Attributes ]

```
accent-height, accumulate, additivive, alignment-baseline, ascent, attributename, attributetype, azimuth, basefrequency, baseline-shift, begin, bias, by, class, clip, clip-path, clip-rule, color, color-interpolation, color-interpolation-filters, color-profile, color-rendering, cx, cy, d, dx, dy, diffuseconstant, direction, display, divisor, dur, edgemode, elevation, end, fill, fill-opacity, fill-rule, filter, filterunits, flood-color, flood-opacity, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, fx, fy, g1, g2, glyph-name, glyphref, gradientunits, gradienttransform, height, href, id, image-rendering, in, in2, k, k1, k2, k3, k4, kerning, keypoints, keysplines, keytimes, lang, lengthadjust, letter-spacing, kernelmatrix, kernelunitlength, lighting-color, local, marker-end, marker-mid, marker-start, markerheight, markerunits, markerwidth, maskcontentunits, maskunits, max, mask, media, method, mode, min, name, numoctaves, offset, operator, opacity, order, orient, orientation, origin, overflow, paint-order, path, pathlength, patterncontentunits, patterntransform, patternunits, points, preservealpha, preserveaspectratio, r, rx, ry, radius, refx, refy, repeatcount, repeatdur, restart, result, rotate, scale, seed, shape-rendering, specularconstant, specularexponent, spreadmethod, stddeviation, stitchtiles, stop-color, stop-opacity, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-opacity, stroke, stroke-width, style, surfacescale, tabindex, targetx, targety, transform, text-anchor, text-decoration, text-rendering, textlength, type, u1, u2, unicode, values, viewbox, visibility, vert-adv-y, vert-origin-x, vert-origin-y, width, word-spacing, wrap, writing-mode, xchannelselector, ychannelselector, x, x1, x2, xmlns, y, y1, y2, z, zoomandpan
```

------
#### [ Elements ]

```
svg, a, altglyph, altglyphdef, altglyphitem, animatecolor, animatemotion, animatetransform, audio, canvas, circle, clippath, defs, desc, ellipse, filter, font, g, glyph, glyphref, hkern, image, line, lineargradient, marker, mask, metadata, mpath, path, pattern, polygon, polyline, radialgradient, rect, stop, style, switch, symbol, text, textpath, title, tref, tspan, video, view, vkern, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feDistantLight, feFlood, feFuncA, feFuncB, feFuncG, feFuncR, feGaussianBlur, feMerge, feMergeNode, feMorphology, feOffset, fePointLight, feSpecularLighting, feSpotLight, feTile, feTurbulence
```

------

### Tools für verwaltete Login-Branding-Operationen
<a name="branding-designer-api-tools"></a>

Amazon Cognito verwaltet eine Datei im [JSON-Schemaformat für das Objekt mit den Branding-Einstellungen](https://json-schema.org/docs) für verwaltete Logins. Im Folgenden erfahren Sie, wie Sie Ihren Branding-Stil programmgesteuert aktualisieren können.

**Um das Branding in der Benutzerpools-API zu aktualisieren**

1. Erstellen Sie in der Amazon Cognito Cognito-Konsole im Menü Verwaltete Anmeldung Ihres Benutzerpools einen standardmäßigen Branding-Stil für **verwaltete Logins**. Weisen Sie ihn einem App-Client zu.

1. Notieren Sie sich beispielsweise die ID des App-Clients, für den Sie den Stil erstellt haben`1example23456789`.

1. Rufen Sie die Einstellungen für den Branding-Stil mit einer [DescribeManagedLoginBrandingByClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeManagedLoginBrandingByClient.html)API-Anfrage mit der `ReturnMergedResources` Einstellung auf ab`true`. Im Folgenden finden Sie ein Beispiel für einen Anfragetext.

   ```
   {
      "ClientId": "1example23456789",
      "ReturnMergedResources": true,
      "UserPoolId": "us-east-1_EXAMPLE"
   }
   ```

1. Ändern Sie die Ausgabe von `DescribeManagedLoginBrandingByClient` mit Ihren Anpassungen.

   1. Der Antworttext ist in ein `ManagedLoginBranding` Element eingeschlossen, das nicht Teil der Syntax für Erstellungs- und Aktualisierungsvorgänge ist. Entfernen Sie diese oberste Ebene des JSON-Objekts.

   1. Um Bilder zu ersetzen, ersetzen Sie den `Bytes` Wert durch die Base64-codierten Binärdaten jeder Bilddatei.

   1. Um die Einstellungen zu aktualisieren, ändern Sie die Ausgabe des `Settings` Objekts und nehmen Sie es in Ihre nächste Anfrage auf. Amazon Cognito ignoriert alle Werte in Ihrem `Settings` Objekt, die nicht in dem Schema enthalten sind, das Sie in Ihrer API-Antwort erhalten.

1. Verwenden Sie den aktualisierten Antworttext in einer [CreateManagedLoginBranding[UpdateManagedLoginBranding](https://docs.aws.amazon.com/)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateManagedLoginBranding.html)Oder-Anfrage. Wenn diese Anfrage mehr als 2 MB groß ist, teilen Sie sie in mehrere Anfragen auf. Diese Operationen funktionieren in einem `PATCH` Modell, in dem die ursprünglichen Einstellungen unverändert bleiben, sofern Sie nichts anderes angeben.

# Anpassen des Brandings für gehostete Benutzeroberflächen (klassisch)
<a name="hosted-ui-classic-branding"></a>

Sie können die AWS-Managementkonsole API oder oder verwenden, um klassische Anpassungseinstellungen für die gehostete Benutzeroberfläche anzugeben. AWS CLI Sie können ein benutzerdefiniertes Logo-Image hochladen, das Sie in der App anzeigen möchten. Sie können auch einige Cascading Style Sheets (CSS) -Optionen auf das Erscheinungsbild der Benutzeroberfläche anwenden.

Sie können die Standardeinstellungen der Benutzeroberfläche anpassen und einzelne [App-Clients](cognito-terms.md#term-appclient) mit bestimmten Einstellungen überschreiben. Amazon Cognito wendet die Standardkonfiguration auf jeden App-Client an, der keine Einstellungen auf Client-Ebene hat.

In der Amazon Cognito Cognito-Konsole und in API-Anfragen darf die Anfrage, die Ihre UI-Anpassung festlegt, eine Größe von 135 KB nicht überschreiten. In seltenen Fällen kann es sein, dass die Anforderungs-Header, Ihre CSS-Datei und Ihr Logo zusammen 135 KB überschreiten. Amazon Cognito codiert die Bilddatei in Base64. Dadurch erhöht sich die Größe eines Bilds mit 100 KB auf 130 KB, so dass fünf KB für Anforderungs-Header und Ihre CSS-Datei übrig bleiben. Wenn die Anfrage zu groß ist, gibt die AWS-Managementkonsole oder Ihre `SetUICustomization` API-Anfrage einen `request parameters too large` Fehler zurück. Passen Sie Ihr Logobild so an, dass es nicht größer als 100 KB ist, und Ihre CSS-Datei so, dass sie nicht größer als 3 KB ist. Sie können CSS- und Logo-Anpassungen nicht separat festlegen.

**Anmerkung**  
Um Ihre Benutzeroberfläche anzupassen, müssen Sie eine Domain für Ihren Benutzerpool einrichten.

## Spezifizierung eines benutzerdefinierten Logos im klassischen Branding
<a name="cognito-user-pools-app-ui-customization-logo"></a>

Amazon Cognito zentriert Ihr benutzerdefiniertes Logo über den Eingabefeldern auf dem [Login-Endpunkt](login-endpoint.md).

Wählen Sie für Ihr benutzerdefiniertes gehostetes Logo der Benutzeroberfläche eine PNG-, JPG- oder JPEG-Datei, die auf 350 mal 178 Pixel skaliert werden kann. Ihre Logodatei darf nicht größer als 100 KB bzw. 130 KB nach der Codierung in Base64 durch Amazon Cognito sein. Um ein `ImageFile` [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html)in der API festzulegen, konvertieren Sie Ihre Datei in eine Base64-kodierte Textzeichenfolge oder geben Sie in der AWS CLI einen Dateipfad an und lassen Sie Amazon Cognito ihn für Sie kodieren.

## Spezifizierung von CSS-Anpassungen im klassischen Branding
<a name="cognito-user-pools-app-ui-customization-css"></a>

Sie können CSS für die gehosteten App-Seiten anpassen. Dabei gelten die folgenden Einschränkungen:
+ Sie können einen der folgenden CSS-Klassennamen verwenden:
  + `background-customizable`
  + `banner-customizable`
  + `errorMessage-customizable`
  + `idpButton-customizable`
  + `idpButton-customizable:hover`
  + `idpDescription-customizable`
  + `inputField-customizable`
  + `inputField-customizable:focus`
  + `label-customizable`
  + `legalText-customizable`
  + `logo-customizable`
  + `passwordCheck-valid-customizable`
  + `passwordCheck-notValid-customizable`
  + `redirect-customizable`
  + `socialButton-customizable`
  + `submitButton-customizable`
  + `submitButton-customizable:hover`
  + `textDescription-customizable`
+ Eigenschaftswerte können HTML enthalten, mit Ausnahme der folgenden Werte: `@import`, `@supports`, `@page`, `@media`-Anweisungen oder JavaScript.

Sie können die folgenden CSS-Eigenschaften anpassen:

**Bezeichnungen**  
+ **font-weight** ist ein Vielfaches von 100 von 100 bis 900.
+ **color** ist die Textfarbe. Muss ein [zulässiger CSS-Farbwert](https://www.w3schools.com/cssref/css_colors_legal.php) sein.

**Eingabefelder**  
+ **width** ist die Breite als Prozentsatz des umschließenden Blocks.
+ **height** ist die Höhe des Eingabefeldes in Pixel (px).
+ **color** ist die Textfarbe. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **background-color** ist die Hintergrundfarbe des Eingabefeldes. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **border** ist ein standardmäßiger CSS-Rahmenwert, der die Breite, Transparenz und Farbe des Rahmens Ihres App-Fensters angibt. Die Breite kann ein beliebiger Wert zwischen 1px zu 100px sein. Transparenz kann vollständig oder nicht transparent sein. Bei der Farbe kann es sich um jeden standardmäßigen Farbwert handeln.

**Textbeschreibungen**  
+ **padding-top** ist der Abstand oberhalb der Beschreibung.
+ **padding-bottom** ist der Abstand unterhalb der Beschreibung.
+ **display** kann `block` oder `inline` sein.
+ **font-size** ist die Schriftgröße für Textbeschreibungen.
+ **color** ist die Textfarbe. Muss ein [zulässiger CSS-Farbwert](https://www.w3schools.com/cssref/css_colors_legal.php) sein.

**Absenden-Schaltfläche**  
+ **font-size** ist die Schriftgröße für den Schaltflächentext.
+ **font-weight** ist die Schriftauszeichnung für den Schaltflächentext: `bold`, `italic` oder `normal`.
+ **margin** ist eine Zeichenfolge aus 4 Werten, die die Seitenränder oben, rechts, unten und links für die Schaltfläche angeben.
+ **font-size** ist die Schriftgröße für Textbeschreibungen.
+ **width** ist die Breite des Schaltflächentexts als Prozentwert des umschließenden Blocks.
+ **height** ist die Höhe der Schaltfläche in Pixel (px).
+ **color** ist die Farbe der Schaltfläche. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **background-color** ist die Hintergrundfarbe der Schaltfläche. Dabei kann es sich um jeden standardmäßigen Farbwert handeln.

**Banner**  
+ **padding** ist eine Zeichenfolge aus 4 Werten, die die Abstandsgrößen oben, rechts, unten und links für das Banner angeben.
+ **background-color** ist die Hintergrundfarbe der Banners. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Absenden-Schaltfläche, wenn der Mauszeiger auf sie geschoben wird**  
+ **color** ist die Vordergrundfarbe der Schaltfläche, wenn Sie den Mauszeiger auf sie schieben. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **background-color** ist die Hintergrundfarbe der Schaltfläche, wenn Sie den Mauszeiger auf sie schieben. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Identitätsanbieter-Schaltfläche, wenn der Mauszeiger auf sie geschoben wird**  
+ **color** ist die Vordergrundfarbe der Schaltfläche, wenn Sie den Mauszeiger auf sie schieben. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **background-color** ist die Hintergrundfarbe der Schaltfläche, wenn Sie den Mauszeiger auf sie schieben. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Password-Prüfung nicht gültig**  
+ **color** ist die Textfarbe der `"Password check not valid"`-Meldung. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Hintergrund**  
+ **background-color** ist die Hintergrundfarbe des App-Fensters. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Fehlermeldungen**  
+ **margin** ist eine Zeichenfolge aus 4 Werten, die die Seitenränder oben, rechts, unten und links angeben.
+ **padding** ist die Abstandsgröße.
+ **font-size** ist die Schriftgröße.
+ **width** ist die Breite der Fehlermeldung als Prozentsatz des umschließenden Blocks.
+ **background** ist die Hintergrundfarbe der Fehlermeldung. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **border** ist eine Zeichenfolge von 3 Werten für die Breite, Transparenz und Farbe des Rahmens angeben.
+ **color** ist die Textfarbe der Fehlermeldung. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **box-sizing** wird verwendet, um dem Browser mitzuteilen, welche Größeneigenschaften (Breite und Höhe) verwendet werden sollen.

**Identitätsanbieter-Schaltflächen**  
+ **height** ist die Höhe der Schaltfläche in Pixel (px).
+ **width** ist die Breite des Schaltflächentexts als Prozentwert des umschließenden Blocks. 
+ **text-align** ist die Einstellung für die Textausrichtung. Sie kann `left`, `right` oder `center` sein.
+ **margin-bottom** ist die Einstellung für den unteren Rand. 
+ **color** ist die Farbe der Schaltfläche. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **background-color** ist die Hintergrundfarbe der Schaltfläche. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **border-color** ist die Farbe des Schaltflächenrahmens. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

**Identitätsanbieter-Beschreibung**  
+ **padding-top** ist der Abstand oberhalb der Beschreibung.
+ **padding-bottom** ist der Abstand unterhalb der Beschreibung.
+ **display** kann `block` oder `inline` sein.
+ **font-size** ist die Schriftgröße für Beschreibungen.
+ **Farbe** ist die Textfarbe für IdP-Abschnittsüberschriften, zum Beispiel **Melden Sie sich mit Ihrer Unternehmens-ID an**. Muss ein [zulässiger CSS-Farbwert](https://www.w3schools.com/cssref/css_colors_legal.php) sein.

**Rechtliche Hinweise**  
+ **color** ist die Textfarbe. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **font-size** ist die Schriftgröße.
Wenn Sie **rechtliche Hinweise** anpassen, passen Sie die Nachricht **Wir werden auf keinem Ihrer Konten posten, ohne vorher zu fragen** an, die auf der Anmeldeseite unter Social-Identity-Anbieter angezeigt wird.

**Logo**  
+ **max-width** ist die maximale Breite als Prozentsatz des umschließenden Blocks.
+ **max-height** ist die maximale Höhe als Prozentsatz des umschließenden Blocks.
+ **background-color** ist die Hintergrundfarbe für Protokolle mit transparenten Abschnitten. Muss ein [zulässiger CSS-Farbwert](https://www.w3schools.com/cssref/css_colors_legal.php) sein.

**Eingabefeld-Fokus**  
+ **border-color** ist die Farbe des Eingabefelds. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.
+ **outline** ist die Rahmenbreite des Eingabefeldes in Pixel (px).

**Sozial-Schaltfläche**  
+ **height** ist die Höhe der Schaltfläche in Pixel (px).
+ **text-align** ist die Einstellung für die Textausrichtung. Sie kann `left`, `right` oder `center` sein.
+ **width** ist die Breite des Schaltflächentexts als Prozentwert des umschließenden Blocks.
+ **margin-bottom** ist die Einstellung für den unteren Rand.

**Password-Prüfung gültig**  
+ **color** ist die Textfarbe der `"Password check valid"`-Meldung. Dabei kann es sich um jeden standardmäßigen CSS-Farbwert handeln.

## Anpassen der gehosteten Benutzeroberfläche mit klassischem Branding in AWS-Managementkonsole
<a name="cognito-user-pools-app-ui-customization-console"></a>

Sie können das verwenden AWS-Managementkonsole , um die Einstellungen für die Anpassung der Benutzeroberfläche für Ihre App festzulegen.

**Anmerkung**  
Sie sehen die gehostete Benutzeroberfläche mit Ihren Anpassungen, indem Sie die folgende URL mit den spezifischen Angaben für Ihren Benutzerpool erstellen und in einen Browser eingeben: ` https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>` Möglicherweise müssen Sie bis zu einer Minute warten, um Ihren Browser zu aktualisieren, damit die auf der Konsole vorgenommenen Änderungen angezeigt werden.  
Ihre Domäne wird auf der Registerkarte **App integration** (Anwendungsintegration) unter **Domain** (Domäne) angezeigt. Die App-Client-ID und die Rückruf-URL werden unter **App clients** (App-Clients) angezeigt.

**So geben Sie die App-Anpassungseinstellungen für Ihre Benutzeroberfläche an**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. Wählen Sie im Navigationsbereich **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. [Erstellen Sie über den Domain-Tab eine](cognito-user-pools-assign-domain.md) **Domain** oder aktualisieren Sie Ihre bestehende Domain. Stellen Sie unter **Branding-Version** Ihre Domain so ein, dass sie **Hosted UI (klassisch)** verwendet.

1. Wählen Sie das Menü **Verwaltete Anmeldung**.

1. Um die UI-Einstellungen für alle App-Clients anzupassen, suchen Sie **Style** unter **Einstellungen für gehostete Benutzeroberflächen** und wählen Sie **Bearbeiten** aus.

1. Um die UI-Einstellungen für einen App-Client anzupassen, rufen Sie das Menü **App-Clients** auf und wählen Sie den App-Client aus, den Sie ändern möchten. Suchen Sie dann nach dem **Stil der gehosteten Benutzeroberfläche (klassisch)** und wählen Sie **Überschreiben** aus. Wählen Sie **Bearbeiten** aus.

1. Um Ihre eigene Logo-Bilddatei hochzuladen, wählen Sie **Choose file** (Datei auswählen) oder **Replace current file** (Aktuelle Datei ersetzen) aus.

1. Um das gehostete UI-CSS anzupassen, laden Sie **CSS template.css** herunter und ändern Sie die Vorlage mit den Werten, die Sie anpassen möchten. Nur die Schlüssel, die in der Vorlage enthalten sind, können mit der gehosteten Benutzeroberfläche verwendet werden. Hinzugefügte CSS-Schlüssel werden nicht in Ihrer Benutzeroberfläche wiedergegeben. Nachdem Sie die CSS-Datei angepasst haben, wählen Sie **Choose file** (Datei auswählen) oder **Replace current file** (Aktuelle Datei ersetzen), um Ihre benutzerdefinierte CSS-Datei hochzuladen.

## Anpassen der gehosteten Benutzeroberfläche mit klassischem Branding in der Benutzerpools-API und mit AWS CLI
<a name="cognito-user-pools-app-ui-customization-cli-api"></a>

Verwenden Sie die folgenden Befehle für die Angabe von Einstellungen der Anpassung der App-Benutzeroberfläche für Ihren Benutzerpool.

**Verwenden Sie die folgenden API-Operationen, um die Einstellungen für die Anpassung der Benutzeroberfläche für eine integrierte App-Benutzeroberfläche eines Benutzerpools abzurufen.**
+ AWS CLI: `aws cognito-idp get-ui-customization`
+ AWS API: [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html)

**Verwenden Sie die folgenden API-Operationen, um die Einstellungen für die Anpassung der Benutzeroberfläche für eine integrierte App-Benutzeroberfläche eines Benutzerpools festzulegen.**
+ AWS CLI aus der Bilddatei: `aws cognito-idp set-ui-customization --user-pool-id <your-user-pool-id> --client-id <your-app-client-id> --image-file fileb://"<path-to-logo-image-file>" --css ".label-customizable{ color: <color>;}"`
+ AWS CLI mit einem Bild, das als Base64-Binärtext codiert ist: `aws cognito-idp set-ui-customization --user-pool-id <your-user-pool-id> --client-id <your-app-client-id> --image-file <base64-encoded-image-file> --css ".label-customizable{ color: <color>;}"`
+ AWS API: [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html)

# Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern
<a name="cognito-user-pools-working-with-lambda-triggers"></a>

Amazon Cognito arbeitet mit AWS Lambda Funktionen, um das Authentifizierungsverhalten Ihres Benutzerpools zu ändern. Sie können Ihren Benutzerpool so konfigurieren, dass Lambda-Funktionen vor der ersten Registrierung, nach Abschluss der Authentifizierung und in mehreren Phasen dazwischen automatisch aufgerufen werden. Ihre Funktionen können das Standardverhalten Ihres Authentifizierungsablaufs ändern, API-Anfragen zur Änderung Ihres Benutzerpools oder anderer AWS Ressourcen stellen und mit externen Systemen kommunizieren. Der Code in Ihren Lambda-Funktionen ist Ihr eigener. Amazon Cognito sendet Ereignisdaten an Ihre Funktion, wartet, bis die Funktion die Daten verarbeitet, und erwartet in den meisten Fällen ein Antwortereignis, das alle Änderungen widerspiegelt, die Sie an der Sitzung vornehmen möchten.

Innerhalb des Systems der Anfrage- und Antwortereignisse können Sie Ihre eigenen Authentifizierungsherausforderungen einführen, Benutzer zwischen Ihrem Benutzerpool und einem anderen Identitätsspeicher migrieren, Nachrichten anpassen und JSON-Webtoken (JWTs) ändern.

Lambda-Trigger können die Antwort anpassen, die Amazon Cognito an Ihren Benutzer sendet, nachdem er eine Aktion in Ihrem Benutzerpool ausgelöst hat. Sie können beispielsweise die Anmeldung eines Benutzers verhindern, der sich andernfalls erfolgreich anmelden könnte. Sie können auch Laufzeitoperationen für Ihre AWS Umgebung APIs, externe Datenbanken oder Identitätsspeicher ausführen. Der Trigger „Benutzer migrieren“ kann beispielsweise eine externe Aktion mit einer Änderung in Amazon Cognito kombinieren: Sie können Benutzerinformationen in einem externen Verzeichnis nachschlagen und dann auf der Grundlage dieser externen Informationen Attribute für einen neuen Benutzer festlegen.

Wenn Sie Ihrem Benutzerpool einen Lambda-Trigger zugewiesen haben, unterbricht Amazon Cognito seinen Standardablauf, um Informationen von Ihrer Funktion anzufordern. Amazon Cognito generiert ein JSON-*-Ereignis* und übergibt es an Ihre Funktion. Das Ereignis enthält Informationen über die Anfrage Ihres Benutzers, ein Benutzerkonto zu erstellen, sich anzumelden, ein Passwort zurückzusetzen oder ein Attribut zu aktualisieren. Ihre Funktion hat dann die Möglichkeit, Maßnahmen zu ergreifen oder das Ereignis unverändert zurückzusenden. Ein Ereignis, das unverändert zurückgegeben wird, benachrichtigt Ihren Benutzerpool, mit der Standardaktion für das Ereignis fortzufahren. Beispielsweise kann Ihr Trigger vor der Registrierung automatisch Benutzer für die `PreSignUp_SignUp` Triggerquelle bestätigen, das Ereignis jedoch für externe und vom Administrator erstellte Benutzer unverändert zurückgeben.

In der folgenden Tabelle sind einige der Möglichkeiten zusammengefasst, wie Sie Lambda-Auslöser verwenden können, um Benutzerpool-Operationen anzupassen:


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html)

**Topics**
+ [Wissenswertes über Lambda-Trigger](#important-lambda-considerations)
+ [Fügen Sie einen Lambda-Trigger für einen Benutzerpool hinzu](#triggers-working-with-lambda)
+ [Lambda-Auslöserereignis für einen Benutzerpool](#cognito-user-pools-lambda-trigger-event-parameter-shared)
+ [Allgemeine Parameter von Lambda-Auslösern für Benutzerpools](#cognito-user-pools-lambda-trigger-syntax-shared)
+ [Client-Metadaten](#working-with-lambda-trigger-client-metadata)
+ [Verbinden von API-Operationen mit Lambda-Triggern](#lambda-triggers-by-event)
+ [Verbinden von Lambda-Triggern mit funktionalen Benutzerpool-Vorgängen](#working-with-lambda-trigger-sources)
+ [Lambda-Auslöser für die Vorab-Registrierung](user-pool-lambda-pre-sign-up.md)
+ [Lambda-Auslöser nach der Bestätigung](user-pool-lambda-post-confirmation.md)
+ [Lambda-Auslöser für die Vorab-Authentifizierung](user-pool-lambda-pre-authentication.md)
+ [Lambda-Auslöser nach der Authentifizierung](user-pool-lambda-post-authentication.md)
+ [Lambda-Trigger für eingehenden Verbund](user-pool-lambda-inbound-federation.md)
+ [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md)
+ [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md)
+ [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md)
+ [Lambda-Auslöser für benutzerdefinierte Nachrichten](user-pool-lambda-custom-message.md)
+ [Benutzerdefinierter Lambda-Auslöser für Sender](user-pool-lambda-custom-sender-triggers.md)

## Wissenswertes über Lambda-Trigger
<a name="important-lambda-considerations"></a>

Wenn Sie Ihre Benutzerpools für Lambda-Funktionen vorbereiten, sollten Sie Folgendes berücksichtigen:
+ Die Ereignisse, die Amazon Cognito an Ihre Lambda-Trigger sendet, können sich ändern, wenn neue Features hinzugefügt werden. Die Positionen der Antwort- und Anforderungselemente in der JSON-Hierarchie können sich ändern, oder es können weitere Elementnamen hinzugefügt werden. In Ihrer Lambda-Funktion können Sie erwarten, die in diesem Handbuch beschriebenen Schlüssel-Wert-Paare aus Eingabeelementen zu erhalten, jedoch kann eine strengere Eingabevalidierung dazu führen, dass Ihre Funktionen fehlschlagen.
+ Sie können eine aus mehreren Versionen der Ereignisse auswählen, die Amazon Cognito an verschiedene Trigger sendet. Bei einigen Versionen müssen Sie möglicherweise eine Änderung Ihrer Amazon-Cognito-Preisgestaltung akzeptieren. Weitere Informationen zu Preisen finden Sie unter [Amazon-Cognito-Preise](https://aws.amazon.com/cognito/pricing/). Um Zugriffstoken in a anzupassen[Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md), müssen Sie Ihren Benutzerpool mit einem anderen Funktionsplan als *Lite* konfigurieren und Ihre Lambda-Trigger-Konfiguration aktualisieren, um Event Version 2 zu verwenden.
+ Mit Ausnahme von [Benutzerdefinierter Lambda-Auslöser für Sender](user-pool-lambda-custom-sender-triggers.md) ruft Amazon Cognito Lambda-Funktionen synchron auf. Wenn Amazon Cognito Ihre Lambda-Funktion aufruft, muss sie innerhalb von 5 Sekunden reagieren. Wenn dies nicht der Fall ist und der Anruf erneut versucht werden kann, versucht Amazon Cognito den Anruf möglicherweise erneut. Wenn alle Wiederholungsversuche fehlschlagen, läuft die Funktion ab. Sie können diesen Timeout-Wert von fünf Sekunden nicht ändern. Weitere Informationen finden Sie unter [Lambda-Programmiermodell](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html) im AWS Lambda Developer Guide.

  Amazon Cognito wiederholt keine Funktionsaufrufe, die einen [Invoke-Fehler](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_Errors) mit dem HTTP-Statuscode 500-599 zurückgeben. Diese Codes weisen auf ein Konfigurationsproblem hin, aufgrund dessen Lambda die Funktion nicht starten kann. Weitere Informationen finden Sie unter [Fehlerbehandlung und automatische Wiederholungen](https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html) in. AWS Lambda
+ Sie können in Ihrer Lambda-Trigger-Konfiguration keine Funktionsversion deklarieren. Amazon-Cognito-Benutzerpools rufen standardmäßig die neueste Version Ihrer Funktion auf. Sie können jedoch eine Funktionsversion mit einem Alias verknüpfen und Ihren Trigger in einer [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Anfrage `LambdaArn` auf den Alias-ARN setzen. Diese Option ist in der AWS-Managementkonsole nicht verfügbar. Weitere Informationen zu Aliassen finden Sie unter [Lambda-Funktionsaliase](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) im *Entwicklerhandbuch für AWS Lambda *.
+ Wenn Sie einen Lambda-Auslöser löschen, müssen Sie den entsprechenden Auslöser im Benutzerpool aktualisieren. Wenn Sie zum Beispiel den Nachauthentifizierungs-Auslöser löschen, müssen Sie den **Nachauthentifizierungs**-Auslöser im entsprechenden Benutzerpool auf **none (keine)** setzen. 
+ Wenn Ihre Lambda-Funktion die Anforderungs- und Antwortparameter nicht an Amazon Cognito zurückgibt oder einen Fehler ausgibt, ist das Authentifizierungsereignis nicht erfolgreich. Sie können einen Fehler in Ihrer Funktion zurückgeben, um die Registrierung, Authentifizierung, Token-Generierung oder jede andere Phase des Authentifizierungsablaufs eines Benutzers zu verhindern, die den Lambda-Trigger aufruft.

  Managed Login gibt Fehler zurück, die von Lambda-Triggern generiert werden, als Fehlertext über der Anmeldeaufforderung. Die API von Amazon-Cognito-Benutzerpools gibt Trigger-Fehler im Format `[trigger] failed with error [error text from response]` zurück. Generieren Sie als bewährte Methode nur Fehler in Ihren Lambda-Funktionen, die Ihre Benutzer sehen sollen. Verwenden Sie Ausgabemethoden`print()`, um beispielsweise sensible Informationen oder Debugging-Informationen in Logs zu protokollieren. CloudWatch Ein Beispiel finden Sie unter [Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält](user-pool-lambda-pre-sign-up.md#aws-lambda-triggers-pre-registration-example-3).
+ Sie können einer anderen eine Lambda-Funktion AWS-Konto als Auslöser für Ihren Benutzerpool hinzufügen. Sie müssen kontoübergreifende Trigger mit den [UpdateUserPool](https://docs.aws.amazon.com/)API-Operationen [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)und oder deren Entsprechungen in und dem hinzufügen. CloudFormation AWS CLI Sie können keine kontoübergreifenden Funktionen in der hinzufügen. AWS-Managementkonsole
+ Wenn Sie in der Amazon-Cognito-Konsole einen Lambda-Auslöser hinzufügen, fügt Amazon Cognito Ihrer Funktion eine ressourcenbasierte Richtlinie hinzu, die es Ihrem Benutzerpool ermöglicht, die Funktion aufzurufen. Wenn Sie einen Lambda-Auslöser außerhalb der Amazon-Cognito-Konsole erstellen, müssen Sie der ressourcenbasierten Richtlinie der Lambda-Funktion Berechtigungen hinzufügen. Wenn Sie Berechtigungen hinzugefügt haben, kann Amazon Cognito die Funktion im Namen Ihres Benutzerpools aufrufen. Sie können [Berechtigungen über die Lambda-Konsole hinzufügen](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) oder den [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)Lambda-API-Vorgang verwenden.

**Beispiel für ressourcenbasierte Lambda-Richtlinie**  
Die folgende ressourcenbasierte Lambda-Richtlinie gewährt Amazon Cognito eine eingeschränkte Möglichkeit, eine Lambda-Funktion aufzurufen. Amazon Cognito kann nur dann die Funktion verwenden, wenn es diese Funktion für den Benutzerpool in der `aws:SourceArn`-Bedingung als auch für das Konto in der `aws:SourceAccount`-Bedingung übernimmt.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "default",
      "Statement": [
          {
              "Sid": "LambdaCognitoIdpTrust",
              "Effect": "Allow",
              "Principal": {
                  "Service": "cognito-idp.amazonaws.com"
              },
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction",
              "Condition": {
                  "StringEquals": {
                      "AWS:SourceAccount": "111122223333"
                  },
                  "ArnLike": {
                      "AWS:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                  }
              }
          }
      ]
  }
  ```

------

## Fügen Sie einen Lambda-Trigger für einen Benutzerpool hinzu
<a name="triggers-working-with-lambda"></a>

**Hinzufügen eines Lambda-Auslösers für einen Benutzerpool mit der Konsole**

1. Erstellen Sie eine Lambda-Funktion mit der [Lambda-Konsole](https://console.aws.amazon.com/lambda/home). Weitere Informationen finden Sie unter Lambda-Funktionsfehler im [AWS Lambda -Lambda-Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/).

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. Wählen Sie **Add a Lambda trigger** (Lambda-Auslöser hinzufügen) aus.

1. Wählen Sie eine **Kategorie** für den Lambda-Auslöser basierend auf der Authentifizierungsphase aus, die Sie anpassen möchten.

1. Wählen Sie **Lambda-Funktion zuweisen** und wählen Sie eine Funktion aus, die sich AWS-Region in Ihrem Benutzerpool befindet.
**Anmerkung**  
Wenn Ihre AWS Identity and Access Management (IAM-) Anmeldeinformationen berechtigt sind, die Lambda-Funktion zu aktualisieren, fügt Amazon Cognito eine ressourcenbasierte Lambda-Richtlinie hinzu. Mit dieser Richtlinie kann Amazon Cognito die von Ihnen ausgewählte Funktion aufrufen. Wenn die Anmeldeinformationen nicht über ausreichende IAM-Berechtigungen verfügen, müssen Sie die ressourcenbasierte Richtlinie separat aktualisieren. Weitere Informationen finden Sie unter [Wissenswertes über Lambda-Trigger](#important-lambda-considerations).

1. Wählen Sie **Änderungen speichern ** aus.

1. Sie können CloudWatch in der Lambda-Konsole Ihre Lambda-Funktion protokollieren. Weitere Informationen finden Sie unter [Zugreifen auf CloudWatch Protokolle für Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html).

## Lambda-Auslöserereignis für einen Benutzerpool
<a name="cognito-user-pools-lambda-trigger-event-parameter-shared"></a>

Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Lambda-Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Wenn Ihre Funktion das Eingabeereignis ohne Änderung zurückgibt, fährt Amazon Cognito mit dem Standardverhalten fort. Im Folgenden werden die Parameter aufgeführt, die allen Lambda-Trigger-Eingabeereignissen gemeinsam sind. Informationen zur triggerspezifischen Ereignissyntax finden Sie im Ereignisschema im Abschnitt dieses Handbuchs für jeden Trigger.

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

```
{
    "version": "string",
    "triggerSource": "string",
    "region": AWSRegion,
    "userPoolId": "string",
    "userName": "string",
    "callerContext": 
        {
            "awsSdkVersion": "string",
            "clientId": "string"
        },
    "request":
        {
            "userAttributes": {
                "string": "string",
                ....
            }
        },
    "response": {}
}
```

------

## Allgemeine Parameter von Lambda-Auslösern für Benutzerpools
<a name="cognito-user-pools-lambda-trigger-syntax-shared"></a>

**Version**  
Die Versionsnummer der Lambda-Funktion.

**triggerSource**  
Der Name des Ereignisses, das die Lambda-Funktion ausgelöst hat. Eine Beschreibung jeder triggerSource finden Sie unter [Verbinden von Lambda-Triggern mit funktionalen Benutzerpool-Vorgängen](#working-with-lambda-trigger-sources).

**region (Region)**  
Der AWS-Region als Instanz`AWSRegion`.

**userPoolId**  
Die ID des Benutzerpools.

**userName**  
Der Benutzername des aktuellen Benutzers.

**callerContext**  
Metadaten über die Anfrage und die Codeumgebung. Es enthält die Felder **awsSdkVersion**und die **clientId**.    
**awsSdkVersion**  
Die Version des AWS SDK, das die Anfrage generiert hat.  
****clientId****  
Die Benutzerpool-App-Client-ID.

**request**  
Details der API-Anfrage Ihres Benutzers. Diese enthalten die folgenden Felder und alle Anforderungsparameter, die für den Trigger spezifisch sind. Beispielsweise enthält ein Ereignis, das Amazon Cognito an einen Auslöser vor der Authentifizierung sendet, auch einen `userNotFound`-Parameter. Sie können den Wert dieses Parameters verarbeiten, um eine benutzerdefinierte Aktion auszuführen, wenn Ihr Benutzer versucht, sich mit einem nicht registrierten Benutzernamen anzumelden.    
**userAttributes**  
Ein oder mehrere Schlüssel-Wert-Paar(e) aus Benutzerattributnamen und -werten, beispielsweise `"email": "john@example.com"`.

**response**  
Dieser Parameter enthält keine Informationen in der ursprünglichen Anfrage. Ihre Lambda-Funktion muss das gesamte Ereignis an Amazon Cognito zurückgeben und der `response` alle Rückgabeparameter hinzufügen. Welche Rückgabeparameter Ihre Funktion enthalten kann, finden Sie in der Dokumentation des Triggers, den Sie verwenden möchten.

## Client-Metadaten
<a name="working-with-lambda-trigger-client-metadata"></a>

Sie können benutzerdefinierte Parameter an Ihre Lambda-Triggerfunktionen in API-Vorgängen und [Token-Endpunkt](token-endpoint.md) Anfragen senden. Mithilfe von Client-Metadaten kann Ihre Anwendung zusätzliche Informationen über die Umgebung sammeln, aus der Anfragen stammen. Wenn Sie Client-Metadaten an Ihre Lambda-Funktionen übergeben, können diese die zusätzlichen Daten verarbeiten und sie für die Protokollierung oder Anpassung von Authentifizierungsabläufen verwenden. Client-Metadaten sind Zeichenkettenpaare Ihrer Wahl und Ihres Designs in einem JSON-Schlüsselwertformat.

**Anwendungsfälle für Client-Metadaten**
+ Übergeben Sie Geolokalisierungsdaten bei der Anmeldung an den [Trigger vor der Registrierung und verhindern Sie so die Anmeldung](user-pool-lambda-pre-sign-up.md) von unerwünschten Standorten aus.
+ Übergeben Sie Mandanten-ID-Daten an [benutzerdefinierte Challenge-Trigger](user-pool-lambda-challenge.md) und stellen Sie Kunden aus verschiedenen Geschäftsbereichen unterschiedliche Herausforderungen.
+ Übergeben Sie das Token eines Benutzers an den [Trigger vor der Token-Generierung](user-pool-lambda-pre-token-generation.md) und generieren Sie ein Protokoll des Prinzipals, für den eine M2M-Anfrage gestellt wurde. 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).

Hier ist ein Beispiel für die Übergabe von Client-Metadaten an den Trigger vor der Anmeldung.

------
#### [ SignUp request ]

Im Folgenden finden Sie eine [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-ValidationData)Beispielanforderung mit Client-Metadaten, die Amazon Cognito an einen Trigger vor der Anmeldung weiterleitet.

```
POST HTTP/1.1
Host: cognito-idp.us-east-1.amazonaws.com
X-Amz-Date: 20230613T200059Z
Accept-Encoding: gzip, deflate, br
X-Amz-Target: AWSCognitoIdentityProviderService.SignUp
User-Agent: <UserAgentString>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
Content-Length: <PayloadSizeBytes>

{
    "ClientId": "1example23456789",
    "Username": "mary_major",
    "Password": "<Password>",
    "SecretHash": "<Secret hash>",
    "ClientMetadata": { 
        "IpAddress" : "192.0.2.252",
        "GeoLocation" : "Netherlands (Kingdom of the) [NL]"
    }
    "UserAttributes": [
        {
            "Name": "name",
            "Value": "Mary"
        },
        {
            "Name": "email",
            "Value": "mary_major@example.com"
        },
        {
            "Name": "phone_number",
            "Value": "+12065551212"
        }
    ],
}
```

------
#### [ Lambda trigger input event ]

Die Anfrage führt zum folgenden Anfragetext für Ihre Funktion vor der Anmeldung.

```
{
    "callerContext": {
        "awsSdkVersion": "aws-sdk-unknown-unknown",
        "clientId": "1example23456789"
    },
    "region": "us-west-2",
    "request": {
        "clientMetadata": {
            "GeoLocation": "Netherlands (Kingdom of the) [NL]",
            "IpAddress": "192.0.2.252"
        },
        "userAttributes": {
            "email": "mary_major@example.com",
            "name": "Mary",
            "phone_number": "+12065551212"
        },
        "validationData": null
    },
    "response": {
        "autoConfirmUser": false,
        "autoVerifyEmail": false,
        "autoVerifyPhone": false
    },
    "triggerSource": "PreSignUp_SignUp",
    "userName": "mary_major2",
    "userPoolId": "us-west-2_EXAMPLE",
    "version": "1"
}
```

------

**Client-Metadaten für machine-to-machine (M2M) -Client-Anmeldeinformationen**  
Sie können [Client-Metadaten](#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.md) 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
```

**Temporäre Benutzerattribute: `validationData`**  
Einige Authentifizierungsvorgänge haben auch einen `validationData` Parameter. Wie bei Client-Metadaten bietet dies die Möglichkeit, externe Informationen, die Amazon Cognito nicht automatisch sammelt, an Lambda-Trigger weiterzugeben. Das Validierungsdatenfeld soll Ihrer Lambda-Funktion zusätzlichen Benutzerkontext bei Registrierungs- und Anmeldevorgängen bieten. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-ValidationData)[und zum Trigger vor der `validationData` Anmeldung [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html#CognitoUserPools-AdminCreateUser-request-ValidationData)übergehen.](user-pool-lambda-pre-sign-up.md) [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-ClientMetadata)und [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ClientMetadata)übergibt `ClientMetadata` den Hauptteil der API-Anfrage wie `validationData` im Eingabeereignis an die [Benutzerauslöser [vor der Authentifizierung](user-pool-lambda-pre-authentication.md) und Migration](user-pool-lambda-migrate-user.md).

Informationen zur Zuordnung von API-Vorgängen zu den Funktionen, an die sie Client-Metadaten übergeben können, finden Sie in den folgenden Abschnitten zu den Trigger-Quellen.

## Verbinden von API-Operationen mit Lambda-Triggern
<a name="lambda-triggers-by-event"></a>

In den folgenden Abschnitten werden die Lambda-Trigger beschrieben, die Amazon Cognito anhand der Aktivität in Ihrem Benutzerpool aufruft.

Wenn Ihre App Benutzer über die Amazon Cognito-Benutzerpool-API, verwaltete Anmeldung oder Benutzerpool-Endpunkte anmeldet, ruft Amazon Cognito Ihre Lambda-Funktionen basierend auf dem Sitzungskontext auf. Weitere Informationen zur Amazon-Cognito-Benutzerpool-API und zu Benutzerpool-Endpunkten finden Sie unter [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations). In den Tabellen in den folgenden Abschnitten werden Ereignisse beschrieben, die Amazon Cognito veranlassen, eine Funktion aufzurufen, sowie die `triggerSource`-Zeichenfolge, die Amazon Cognito in die Anfrage einbezieht.

**Topics**
+ [Lambda-Trigger in der Amazon-Cognito-API](#lambda-triggers-native-users-native-api)
+ [Lambda-Trigger für lokale Amazon Cognito Cognito-Benutzer bei verwalteter Anmeldung](#lambda-triggers-native-users-hosted-UI)
+ [Lambda-Auslöser für Verbundbenutzer](#lambda-triggers-for-federated-users)

### Lambda-Trigger in der Amazon-Cognito-API
<a name="lambda-triggers-native-users-native-api"></a>

In der folgenden Tabelle werden die Quellzeichenfolgen für die Lambda-Trigger beschrieben, die Amazon Cognito aufrufen kann, wenn Ihre App einen lokalen Benutzerpool-Benutzer erstellt, anmeldet oder aktualisiert.


**Lokale Benutzer-Auslöser-Quellen in der Amazon-Cognito-API**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html)

### Lambda-Trigger für lokale Amazon Cognito Cognito-Benutzer bei verwalteter Anmeldung
<a name="lambda-triggers-native-users-hosted-UI"></a>

In der folgenden Tabelle werden die Quellzeichenfolgen für die Lambda-Trigger beschrieben, die Amazon Cognito aufrufen kann, wenn sich ein lokaler Benutzer mit verwalteter Anmeldung bei Ihrem Benutzerpool anmeldet.


**Lokale Benutzer lösen Quellen bei der verwalteten Anmeldung aus**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html)

### Lambda-Auslöser für Verbundbenutzer
<a name="lambda-triggers-for-federated-users"></a>

Sie können die folgenden Lambda-Auslöser verwenden, um Ihre Benutzerpool-Workflows für Benutzer anzupassen, die sich bei einem Verbundanbieter anmelden. 

**Anmerkung**  
Verbundbenutzer können die verwaltete Anmeldung verwenden, um sich anzumelden, oder Sie können eine Anfrage an die senden, die sie [Autorisieren des Endpunkts](authorization-endpoint.md) unbemerkt auf die Anmeldeseite ihres Identitätsanbieters umleitet. Sie können mit der Amazon-Cognito-Benutzerpool-API keine Verbundbenutzer anmelden.


**Verbundbenutzern-Trigger-Quellen**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html)

Die Verbundanmeldung ruft keine [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md), [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md), [Lambda-Auslöser für benutzerdefinierte Nachrichten](user-pool-lambda-custom-message.md) oder [Benutzerdefinierter Lambda-Auslöser für Sender](user-pool-lambda-custom-sender-triggers.md) in Ihrem Benutzerpool auf.

## Verbinden von Lambda-Triggern mit funktionalen Benutzerpool-Vorgängen
<a name="working-with-lambda-trigger-sources"></a>

Jeder Lambda-Trigger hat eine funktionale Rolle in Ihrem Benutzerpool. Ein Trigger kann beispielsweise Ihren Anmeldeablauf ändern oder eine benutzerdefinierte Authentifizierungsherausforderung hinzufügen. Das Ereignis, das Amazon Cognito an eine Lambda-Funktion sendet, kann eine von mehreren Aktionen widerspiegeln, aus denen sich diese funktionale Rolle zusammensetzt. Amazon Cognito ruft beispielsweise einen Trigger vor der Registrierung auf, wenn sich Ihr Benutzer anmeldet und wenn Sie einen Benutzer erstellen. Jeder dieser verschiedenen Fälle für dieselbe funktionale Rolle hat seinen eigenen `triggerSource`-Wert. Ihre Lambda-Funktion kann eingehende Ereignisse je nach dem Vorgang, der sie aufgerufen hat, unterschiedlich verarbeiten.

Amazon Cognito ruft auch alle zugewiesenen Funktionen auf, wenn ein Ereignis einer Trigger-Quelle entspricht. Wenn sich ein Benutzer beispielsweise bei einem Benutzerpool anmeldet, dem Sie die Trigger „Benutzer migrieren“ und „Vorauthentifizierung“ zugewiesen haben, werden beide aktiviert.


**Registrierungs-, Bestätigungs- und Anmeldungsauslöser (Authentifizierungsauslöser)**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Vor der Anmeldung | PreSignUp\$1SignUp | Voranmeldung. | 
| Voranmeldung | PreSignUp\$1AdminCreateUser | Voranmeldung, wenn ein Administrator einen neuen Benutzer erstellt. | 
| Voranmeldung | PreSignUp\$1ExternalProvider | Vorab-Registrierung für externe Identitätsanbieter. | 
| Nachbestätigung | PostConfirmation\$1ConfirmSignUp | Nachbestätigung der Anmeldung. | 
| Nachbestätigung | PostConfirmation\$1ConfirmForgotPassword | Nachbestätigung für vergessenes Passwort. | 
| Vorauthentifizierung | PreAuthentication\$1Authentication | Vorauthentifizierung. | 
| Nachauthentifizierung | PostAuthentication\$1Authentication | Nachauthentifizierung. | 


**Auslöser für benutzerdefinierte Authentifizierungsaufforderungen**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Definieren Sie die Auth-Herausforderung | DefineAuthChallenge\$1Authentication | Authentifizierungsaufforderung definieren. | 
| Authentifizierungsaufforderung erstellen | CreateAuthChallenge\$1Authentication | Authentifizierungsaufforderung erstellen. | 
| Überprüfung der Authentifizierungsaufforderung | VerifyAuthChallengeResponse\$1Authentication | Antwort auf Authentifizierungsaufforderung überprüfen. | 


**Föderationsauslöser**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Verbund eingehender Datenverkehr | InboundFederation\$1ExternalProvider | Eingehender Verbund. | 


**Auslöser für die Generierung von Pre-Token**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Generierung vor der Token-Erstellung | TokenGeneration\$1HostedAuth |  Amazon Cognito authentifiziert den Benutzer von Ihrer verwalteten Anmeldeseite aus. | 
| Token-Generierung vor der Erstellung | TokenGeneration\$1Authentication | Benutzerauthentifizierung oder Token-Aktualisierung abgeschlossen. | 
| Generierung vor dem Token | TokenGeneration\$1NewPasswordChallenge | Admin erstellt den Benutzer. Amazon Cognito ruft diesen Parameter auf, wenn der Benutzer ein temporäres Passwort ändern muss. | 
| Generierung vor der Token-Generation | TokenGeneration\$1AuthenticateDevice | Ende der Authentifizierung eines Benutzergeräts. | 
| Generierung vor der Token-Generation | TokenGeneration\$1RefreshTokens | Der Benutzer versucht, die Identitäts- und Zugriffs-Token zu aktualisieren. | 


**Migration von Benutzerauslösern**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Benutzermigration | UserMigration\$1Authentication | Benutzermigration zum Zeitpunkt der Anmeldung. | 
| Benutzermigration | UserMigration\$1ForgotPassword | Benutzermigration während des Ablaufs bei vergessenem Passwort. | 


**Auslöser für benutzerdefinierte Nachrichten**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Benutzerdefinierte Nachricht | CustomMessage\$1SignUp | Benutzerdefinierte Nachricht, wenn sich ein Benutzer in Ihrem Benutzerpool anmeldet. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1AdminCreateUser | Benutzerdefinierte Nachricht, wenn Sie einen Benutzer als Administrator erstellen und Amazon Cognito ihm ein temporäres Passwort sendet. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1ResendCode | Benutzerdefinierte Nachricht, wenn Ihr vorhandener Benutzer einen neuen Bestätigungscode anfordert. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1ForgotPassword | Benutzerdefinierte Nachricht, wenn Ihr Benutzer sein Passwort zurücksetzen möchte. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1UpdateUserAttribute | Benutzerdefinierte Nachricht, wenn ein Benutzer seine E-Mail-Adresse oder Telefonnummer ändert und Amazon Cognito einen Verifizierungscode sendet. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1VerifyUserAttribute | Benutzerdefinierte Nachricht, wenn ein Benutzer eine E-Mail-Adresse oder Telefonnummer hinzufügt und Amazon Cognito einen Verifizierungscode sendet. | 
| Benutzerdefinierte Nachricht | CustomMessage\$1Authentication | Benutzerdefinierte Nachricht, wenn sich ein Benutzer anmeldet, der SMS MFA konfiguriert hat. | 


**Benutzerdefinierte Absender-Trigger**  

| Auslöser | triggerSource-Wert | Veranstaltung | 
| --- | --- | --- | 
| Benutzerdefinierter Absender |  `CustomEmailSender_SignUp` `CustomSmsSender_SignUp`  | Wenn sich ein Benutzer in Ihrem Benutzerpool anmeldet. | 
| Benutzerdefinierter Absender |  `CustomEmailSender_AdminCreateUser` `CustomSmsSender_AdminCreateUser`  | Wenn Sie einen Benutzer als Administrator erstellen und Amazon Cognito ihm ein temporäres Passwort sendet. | 
| Benutzerdefinierter Absender |  `CustomEmailSender_ForgotPassword` `CustomSmsSender_ForgotPassword`  | Wenn Ihr Benutzer ein Zurücksetzen des Passworts anfordert. | 
| Benutzerdefinierter Absender |  `CustomEmailSender_UpdateUserAttribute` `CustomSmsSender_UpdateUserAttribute`  | Wenn ein Benutzer seine E-Mail-Adresse oder Telefonnummer ändert und Amazon Cognito einen Bestätigungscode sendet. | 
| Benutzerdefinierter Absender |  `CustomEmailSender_VerifyUserAttribute` `CustomSmsSender_VerifyUserAttribute`  | Wenn ein Benutzer eine E-Mail-Adresse oder Telefonnummer hinzufügt und Amazon Cognito einen Bestätigungscode sendet. | 
| Benutzerdefinierter Absender |  `CustomEmailSender_Authentication` `CustomSmsSender_Authentication`  | Wenn sich ein Benutzer anmeldet, der SMS oder E-Mail MFA oder OTP konfiguriert hat. | 
| Benutzerdefinierter Absender | CustomEmailSender\$1AccountTakeOverNotification | Wenn Ihre Bedrohungsschutzeinstellungen eine automatische Maßnahme gegen den Anmeldeversuch eines Benutzers ergreifen und die Aktion für die Risikostufe eine Benachrichtigung beinhaltet. | 

# Lambda-Auslöser für die Vorab-Registrierung
<a name="user-pool-lambda-pre-sign-up"></a>

Möglicherweise möchten Sie den Anmeldevorgang in Benutzerpools anpassen, die über Self-Service-Anmeldeoptionen verfügen. Häufig wird der Trigger vor der Anmeldung verwendet, um benutzerdefinierte Analysen und Aufzeichnungen neuer Benutzer durchzuführen, Sicherheits- und Governance-Standards anzuwenden oder Benutzer von einem Drittanbieter-IdP mit einem [konsolidierten Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md) zu verknüpfen. Möglicherweise haben Sie auch vertrauenswürdige Benutzer, die sich keiner [Überprüfung und Bestätigung](signing-up-users-in-your-app.md) unterziehen müssen.

Unmittelbar bevor Amazon Cognito die Erstellung eines neuen [lokalen](cognito-terms.md#terms-localuser) oder [Verbundbenutzers](cognito-terms.md#terms-federateduser) abschließt, aktiviert es die Lambda-Funktion vor der Anmeldung. Das `userAttributes` in der Anfrage an diese Funktion gesendete Objekt enthält Attribute, die bei der lokalen Benutzerregistrierung bereitgestellt wurden oder die erfolgreich den Anbieterattributen für einen Verbundbenutzer zugeordnet wurden. Ihr Benutzerpool ruft diesen Trigger bei der Self-Service-Registrierung [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)oder der ersten Anmeldung bei einem vertrauenswürdigen [Identitätsanbieter](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-federated) und bei der Benutzererstellung mit auf. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Im Rahmen des Anmeldevorgangs können Sie diese Funktion verwenden, um das Anmeldeereignis mit benutzerdefinierter Logik zu analysieren und den neuen Benutzer zu ändern oder abzulehnen.

**Topics**
+ [Lambda-Auslöserparameter für die Vorab-Registrierung](#cognito-user-pools-lambda-trigger-syntax-pre-signup)
+ [Beispiel für Vorab-Registrierung: Automatische Bestätigung von Benutzern aus einer registrierten Domäne](#aws-lambda-triggers-pre-registration-example)
+ [Beispiel für Voranmeldung: Automatische Bestätigung und Verifizierung aller Benutzer](#aws-lambda-triggers-pre-registration-example-2)
+ [Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält](#aws-lambda-triggers-pre-registration-example-3)

## Lambda-Auslöserparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "validationData": {
            "string": "string",
            . . .
         },
        "clientMetadata": {
            "string": "string",
            . . .
         }
    },

    "response": {
        "autoConfirmUser": "boolean",
        "autoVerifyPhone": "boolean",
        "autoVerifyEmail": "boolean"
    }
}
```

------

### Anforderungsparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-request"></a>

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen. Die Attributnamen sind die Schlüssel.

**validationData**  
Ein oder mehrere Schlüssel/Wert-Paare mit Benutzerattributdaten, die Ihre App in der Anfrage zur Erstellung eines neuen Benutzers an Amazon Cognito übergeben hat. Senden Sie diese Informationen im ValidationData Parameter Ihrer [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)oder [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API-Anfrage an Ihre Lambda-Funktion.  
Amazon Cognito legt Ihre ValidationData Daten nicht als Attribute des von Ihnen erstellten Benutzers fest. ValidationData sind temporäre Benutzerinformationen, die Sie für Ihren Lambda-Trigger vor der Registrierung angeben.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für die Vorab-Registrierung angeben. Sie können diese Daten an Ihre Lambda-Funktion übergeben, indem Sie den ClientMetadata Parameter in den folgenden API-Aktionen verwenden: [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html), [AdminRespondToAuthChallenge[ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html), und [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html).

### Antwortparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-response"></a>

In der Antwort können Sie `autoConfirmUser` auf `true` setzen, wenn der Benutzer automatisch bestätigt werden soll. Sie können die Einstellung `autoVerifyEmail` auf `true` setzen und somit die E-mail-Adresse des Benutzers automatisch überprüfen. Sie könne die Einstellung `autoVerifyPhone` auf `true` setzen und somit die Telefonnummer des Benutzers automatisch überprüfen.

**Anmerkung**  
Die Antwortparameter `autoVerifyPhone`, `autoVerifyEmail` und `autoConfirmUser` werden von Amazon Cognito ignoriert, wenn die Lambda-Funktion vor der Registrierung durch die `AdminCreateUser`-API ausgelöst wird.

**autoConfirmUser**  
Setzen Sie diesen Parameter auf `true`, wenn der Benutzer automatisch bestätigt werden soll. Setzen Sie ihn andernfalls auf `false`.

**autoVerifyEmail**  
Legen Sie diesen Parameter auf `true` fest, um die Verifizierung der E-Mail-Adresse eines Benutzers, der sich gerade anmeldet, zu bestätigen. Legen Sie ihn andernfalls auf `false` fest. Falls `autoVerifyEmail` auf `true` gesetzt ist, muss das Attribut `email` einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.  
Wenn das Attribut `email` als Alias ausgewählt ist, wird ein Alias für die E-Mail-Adresse des Benutzers erstellt. Dabei muss `autoVerifyEmail` aktiv sein. Wenn bereits ein Alias mit dieser E-Mail-Adresse vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die E-Mail-Adresse des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

**autoVerifyPhone**  
Setzen Sie diesen Parameter auf `true` um die Verifizierung der Telefonnummer eines Benutzers, der sich grade anmeldet, zu bestätigen. Setzen Sie ihn andernfalls auf `false`. Falls `autoVerifyPhone` auf `true` gesetzt ist, muss das Attribut `phone_number` einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.  
Wenn das Attribut `phone_number` als Alias ausgewählt ist, wird ein Alias für die Telefonnummer des Benutzers erstellt. Dabei muss `autoVerifyPhone` aktiv sein. Wenn ein Alias mit dieser Telefonnummer bereits existiert, wird das Alias einem neuen Benutzer zugewiesen. Die Telefonnummer des vorherigen Benutzers wird dabei als nicht-verifiziert gekennzeichnet. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

## Beispiel für Vorab-Registrierung: Automatische Bestätigung von Benutzern aus einer registrierten Domäne
<a name="aws-lambda-triggers-pre-registration-example"></a>

Dies ist ein Beispiel für einen Lambda-Triggercode. Der Trigger vor der Anmeldung wird unmittelbar vor der Verarbeitung der Registrierungsanfrage durch Amazon Cognito ausgelöst. Sie verwendet ein benutzerdefiniertes Attribut **custom:domain**, um neue Benutzer von einer bestimmten E-Mail-Domäne automatisch zu bestätigen. Alle neuen Benutzer, die sich nicht in der benutzerdefinierten Domäne befinden, werden dem Benutzerpool hinzugefügt, aber nicht automatisch bestätigt.

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

```
export const handler = async (event, context, callback) => {
  // Set the user pool autoConfirmUser flag after validating the email domain
  event.response.autoConfirmUser = false;

  // Split the email address so we can compare domains
  var address = event.request.userAttributes.email.split("@");

  // This example uses a custom attribute "custom:domain"
  if (event.request.userAttributes.hasOwnProperty("custom:domain")) {
    if (event.request.userAttributes["custom:domain"] === address[1]) {
      event.response.autoConfirmUser = true;
    }
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # It sets the user pool autoConfirmUser flag after validating the email domain
    event['response']['autoConfirmUser'] = False

    # Split the email address so we can compare domains
    address = event['request']['userAttributes']['email'].split('@')

    # This example uses a custom attribute 'custom:domain'
    if 'custom:domain' in event['request']['userAttributes']:
        if event['request']['userAttributes']['custom:domain'] == address[1]:
            event['response']['autoConfirmUser'] = True

    # Return to Amazon Cognito
    return 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 ]

```
{
    "request": {
        "userAttributes": {
            "email": "testuser@example.com",
            "custom:domain": "example.com"
        }
    },
    "response": {}
}
```

------

## Beispiel für Voranmeldung: Automatische Bestätigung und Verifizierung aller Benutzer
<a name="aws-lambda-triggers-pre-registration-example-2"></a>

Dieses Beispiel bestätigt alle Benutzer und setzt die Attribute `email` und `phone_number` des Benutzers auf verifiziert, wenn das Attribut vorhanden ist. Wenn Aliasse unterstützt werden, werden für `phone_number` und `email` außerdem Aliasse erstellt, wenn die automatische Bestätigung festgelegt ist. 

**Anmerkung**  
Wenn bereits ein Alias mit derselben Telefonnummer vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die `phone_number` des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Dies gilt auch für E-Mail-Adressen. Um dies zu verhindern, können Sie mithilfe der [ListUsers Benutzerpools-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) überprüfen, ob es einen bestehenden Benutzer gibt, der die Telefonnummer oder E-Mail-Adresse des neuen Benutzers bereits als Alias verwendet.

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

```
exports.handler = (event, context, callback) => {
  // Confirm the user
  event.response.autoConfirmUser = true;

  // Set the email as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("email")) {
    event.response.autoVerifyEmail = true;
  }

  // Set the phone number as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("phone_number")) {
    event.response.autoVerifyPhone = true;
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # Confirm the user
    event['response']['autoConfirmUser'] = True

    # Set the email as verified if it is in the request
    if 'email' in event['request']['userAttributes']:
        event['response']['autoVerifyEmail'] = True

    # Set the phone number as verified if it is in the request
    if 'phone_number' in event['request']['userAttributes']:
        event['response']['autoVerifyPhone'] = True

    # Return to Amazon Cognito
    return 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 ]

```
{
  "request": {
    "userAttributes": {
      "email": "user@example.com",
      "phone_number": "+12065550100"
    }
  },
  "response": {}
}
```

------

## Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält
<a name="aws-lambda-triggers-pre-registration-example-3"></a>

In diesem Beispiel wird die Länge des Benutzernamens in einer Anmeldeanforderung überprüft. Das Beispiel gibt einen Fehler zurück, wenn der Benutzer einen Namen mit weniger als fünf Zeichen eingegeben hat.

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

```
export const handler = (event, context, callback) => {
    // Impose a condition that the minimum length of the username is 5 is imposed on all user pools.
    if (event.userName.length < 5) {
        var error = new Error("Cannot register users with username less than the minimum length of 5");
        // Return error to Amazon Cognito
        callback(error, event);
    }
    // Return to Amazon Cognito
    callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    if len(event['userName']) < 5:
        raise Exception("Cannot register users with username less than the minimum length of 5")
    # Return to Amazon Cognito
    return 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 ]

```
{
  "userName": "rroe",
  "response": {}
}
```

------

# Lambda-Auslöser nach der Bestätigung
<a name="user-pool-lambda-post-confirmation"></a>

Amazon Cognito ruft diesen Trigger auf, nachdem ein angemeldeter Benutzer sein Benutzerkonto bestätigt hat. In Ihrer Lambda-Funktion nach der Bestätigung können Sie benutzerdefinierte Nachrichten senden oder benutzerdefinierte API-Anforderungen hinzufügen. Sie können beispielsweise ein externes System abfragen und dem Benutzer zusätzliche Attribute zuweisen. Amazon Cognito ruft diesen Trigger nur für Benutzer auf, die sich in Ihrem Benutzerpool anmelden, nicht für Benutzerkonten, die Sie mit Ihren Administrator-Anmeldeinformationen erstellen.

Die Anforderung enthält die aktuellen Attribute für den bestätigten Benutzer. Ihr Benutzerpool ruft Ihre Funktion nach der Bestätigung bei [ConfirmSignUp[AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html), und [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)auf. Dieser Trigger wird auch ausgeführt, wenn Benutzer bei der [verwalteten](cognito-user-pools-managed-login.md) Anmeldung die Registrierung oder das Zurücksetzen des Passworts bestätigen.

**Topics**
+ [Lambda-Auslöserparameter nach der Bestätigung](#cognito-user-pools-lambda-trigger-syntax-post-confirmation)
+ [Beispiel für „Nachbestätigung“](#aws-lambda-triggers-post-confirmation-example)

## Lambda-Auslöserparameter nach der Bestätigung
<a name="cognito-user-pools-lambda-trigger-syntax-post-confirmation"></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.

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

```
{
    "request": {
            "userAttributes": {
                "string": "string",
                . . .
            },
            "clientMetadata": {
            	"string": "string",
            	. . .
            }
        },
    "response": {}
}
```

------

### Anforderungsparameter nach der Bestätigung
<a name="cognito-user-pools-lambda-trigger-syntax-post-confirmation-request"></a>

**userAttributes**  
Ein oder mehrere Schlüssel-Wert-Paare, die Benutzerattribute darstellen.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser nach der Bestätigung angeben. Sie können diese Daten an Ihre Lambda-Funktion übergeben, indem Sie den ClientMetadata Parameter in den folgenden API-Aktionen verwenden: [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html), [ConfirmForgotPassword[ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html), und [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html).

### Antwortparameter nach der Bestätigung
<a name="cognito-user-pools-lambda-trigger-syntax-post-confirmation-response"></a>

Erwartungsgemäß enthält die Antwort keine weiteren Informationen.

## Beispiel für „Nachbestätigung“
<a name="aws-lambda-triggers-post-confirmation-example"></a>

Diese Lambda-Beispielfunktion sendet eine Bestätigungs-E-Mail-Nachricht an Ihre Benutzer unter Verwendung von Amazon SES. Weitere Informationen finden Sie im [Entwicklerhandbuch für Amazon Simple Storage Service](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/). 

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

```
// Import required AWS SDK clients and commands for Node.js. Note that this requires
// the `@aws-sdk/client-ses` module to be either bundled with this code or included
// as a Lambda layer.
import { SES, SendEmailCommand } from "@aws-sdk/client-ses";
const ses = new SES();

const handler = async (event) => {
  if (event.request.userAttributes.email) {
    await sendTheEmail(
      event.request.userAttributes.email,
      `Congratulations ${event.userName}, you have been confirmed.`,
    );
  }
  return event;
};

const sendTheEmail = async (to, body) => {
  const eParams = {
    Destination: {
      ToAddresses: [to],
    },
    Message: {
      Body: {
        Text: {
          Data: body,
        },
      },
      Subject: {
        Data: "Cognito Identity Provider registration completed",
      },
    },
    // Replace source_email with your SES validated email address
    Source: "<source_email>",
  };
  try {
    await ses.send(new SendEmailCommand(eParams));
  } catch (err) {
    console.log(err);
  }
};

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": {
        "userAttributes": {
            "email": "user@example.com",
            "email_verified": true
        }
    },
    "response": {}
}
```

------

# Lambda-Auslöser für die Vorab-Authentifizierung
<a name="user-pool-lambda-pre-authentication"></a>

Amazon Cognito ruft diesen Auslöser auf, wenn ein Benutzer sich anmelden möchte. Sie erhalten auf diese Weise die Möglichkeit, eine benutzerdefinierte Validierung zu erstellen, die vorbereitende Aktionen durchführt. Beispielsweise können Sie die Authentifizierungsanfrage ablehnen oder Sitzungsdaten für ein externes System aufzeichnen.

**Anmerkung**  
Dieser Lambda-Trigger wird nicht aktiviert, wenn ein Benutzer nicht existiert, es sei denn, die `PreventUserExistenceErrors` Einstellung eines Benutzerpool-App-Clients ist auf `ENABLED` eingestellt. Die Erneuerung einer bestehenden Authentifizierungssitzung aktiviert diesen Trigger ebenfalls nicht.

**Topics**
+ [Überblick über den Ablauf](#user-pool-lambda-pre-authentication-1)
+ [Lambda-Auslöseparameter für die Vorab-Authentifizierung](#cognito-user-pools-lambda-trigger-syntax-pre-auth)
+ [Beispiel für „Vorauthentifizierung“](#aws-lambda-triggers-pre-authentication-example)

## Überblick über den Ablauf
<a name="user-pool-lambda-pre-authentication-1"></a>

![\[Lambda-Auslöser für die Vorab-Authentifizierung – Client-Ablauf\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-pre-authentication-1.png)


Die Anfrage enthält Validierungsdaten des Clients, die aus den `ClientMetadata`-Werten stammen, die Ihre App an die Benutzerpool-API-Vorgänge `InitiateAuth` und `AdminInitiateAuth` übergibt.

Weitere Informationen finden Sie unter [Ein Beispiel für eine Authentifizierungssitzung](authentication.md#amazon-cognito-user-pools-authentication-flow).

## Lambda-Auslöseparameter für die Vorab-Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "validationData": {
            "string": "string",
            . . .
        },
        "userNotFound": boolean
    },
    "response": {}
}
```

------

### Anforderungsparameter für die Vorab-Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth-request"></a>

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**userNotFound**  
Amazon Cognito gibt diesen booleschen Wert ein, wenn Sie `PreventUserExistenceErrors` für Ihren Benutzerpool-Client auf `ENABLED` festgelegt haben.

**validationData**  
Ein oder mehrere Schlüssel-Wert-Paare, die die Validierungsdaten in der Anmeldeanforderung des Benutzers enthalten. Um diese Daten an Ihre Lambda-Funktion zu übergeben, verwenden Sie den ClientMetadata Parameter in den Aktionen [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

### Antwortparameter für die Vorab-Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth-response"></a>

Amazon Cognito verarbeitet keine zusätzlichen Informationen, die Ihre Funktion in der Antwort zurückgibt. Ihre Funktion kann einen Fehler anzeigen, um den Anmeldeversuch abzulehnen oder API-Operationen zum Abfragen und Ändern Ihrer Ressourcen zu verwenden.

## Beispiel für „Vorauthentifizierung“
<a name="aws-lambda-triggers-pre-authentication-example"></a>

Diese Beispielfunktion verhindert, dass sich Benutzer von einem bestimmten App-Client in Ihrem Benutzerpool anmelden. Da die Lambda-Funktion vor der Authentifizierung nicht aufgerufen wird, wenn Ihr Benutzer eine bestehende Sitzung hat, verhindert diese Funktion nur *neue* Sitzungen mit der App-Client-ID, die Sie blockieren möchten.

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

```
const handler = async (event) => {
  if (
    event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked"
  ) {
    throw new Error("Cannot authenticate users from this user pool app client");
  }

  return event;
};

export { handler };
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    if event['callerContext']['clientId'] == "<user pool app client id to be blocked>":
        raise Exception("Cannot authenticate users from this user pool app client")

    # Return to Amazon Cognito
    return 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 ]

```
{
    "callerContext": {
        "clientId": "<user pool app client id to be blocked>"
    },
    "response": {}
}
```

------

# Lambda-Auslöser nach der Authentifizierung
<a name="user-pool-lambda-post-authentication"></a>

Der Trigger nach der Authentifizierung ändert den Authentifizierungsablauf für einen Benutzer nicht. Amazon Cognito ruft dieses Lambda auf, nachdem die Authentifizierung abgeschlossen ist, bevor ein Benutzer Token erhalten hat. Fügen Sie einen Trigger nach der Authentifizierung hinzu, wenn Sie eine benutzerdefinierte Nachverarbeitung von Authentifizierungsereignissen hinzufügen möchten, z. B. Protokollierung oder Anpassungen des Benutzerprofils, die bei der nächsten Anmeldung berücksichtigt werden.

Ein Lambda nach der Authentifizierung, das den Anfragetext nicht an Amazon Cognito zurücksendet, kann dennoch dazu führen, dass die Authentifizierung nicht abgeschlossen werden kann. Weitere Informationen finden Sie unter [Wissenswertes über Lambda-Trigger](cognito-user-pools-working-with-lambda-triggers.md#important-lambda-considerations).

**Topics**
+ [Authentifizierungsprozess – Übersicht](#user-pool-lambda-post-authentication-1)
+ [Lambda-Auslöseparameter nach der Authentifizierung](#cognito-user-pools-lambda-trigger-syntax-post-auth)
+ [Beispiel für „Nachauthentifizierung“](#aws-lambda-triggers-post-authentication-example)

## Authentifizierungsprozess – Übersicht
<a name="user-pool-lambda-post-authentication-1"></a>

![\[Lambda-Auslöser nach der Authentifizierung – Client-Ablauf\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-post-authentication-1.png)


Weitere Informationen finden Sie unter [Ein Beispiel für eine Authentifizierungssitzung](authentication.md#amazon-cognito-user-pools-authentication-flow).

## Lambda-Auslöseparameter nach der Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth"></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.

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

```
{
    "request": {
        "userAttributes": {
             "string": "string",
             . . .
         },
         "newDeviceUsed": boolean,
         "clientMetadata": {
             "string": "string",
             . . .
            }
        },
    "response": {}
}
```

------

### Anforderungsparameter nach der Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-request"></a>

**newDeviceUsed**  
Dieses Flag zeigt an, ob Sich der Benutzer an einem neuen Gerät angemeldet hat. Amazon Cognito setzt dieses Flag nur, wenn der Wert des Benutzerpools für gespeicherte Geräte auf `Always` oder `User Opt-In` gesetzt ist.

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser nach der Authentifizierung angeben. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den Aktionen [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 verwenden. 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 Post-Authentifizierungsfunktion weiterleitet.

### Antwortparameter nach der Authentifizierung
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-response"></a>

Amazon Cognito erwartet keine zusätzlichen Rückgabeinformationen in der Antwort. Ihre Funktion kann API-Operationen verwenden, um Ihre Ressourcen abzufragen und zu ändern oder Ereignismetadaten in einem externen System aufzuzeichnen.

## Beispiel für „Nachauthentifizierung“
<a name="aws-lambda-triggers-post-authentication-example"></a>

Diese Lambda-Beispielfunktion nach der Authentifizierung sendet Daten von einer erfolgreichen Anmeldung an CloudWatch Logs.

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

```
const handler = async (event) => {
  // Send post authentication data to Amazon CloudWatch logs
  console.log("Authentication successful");
  console.log("Trigger function =", event.triggerSource);
  console.log("User pool = ", event.userPoolId);
  console.log("App client ID = ", event.callerContext.clientId);
  console.log("User ID = ", event.userName);

  return event;
};

export { handler };
```

------
#### [ Python ]

```
import os
def lambda_handler(event, context):

    # Send post authentication data to Cloudwatch logs
    print ("Authentication successful")
    print ("Trigger function =", event['triggerSource'])
    print ("User pool = ", event['userPoolId'])
    print ("App client ID = ", event['callerContext']['clientId'])
    print ("User ID = ", event['userName'])

    # Return to Amazon Cognito
    return 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 ]

```
{
  "triggerSource": "testTrigger",
  "userPoolId": "testPool",
  "userName": "testName",
  "callerContext": {
      "clientId": "12345"
  },
  "response": {}
}
```

------

# Lambda-Trigger für eingehenden Verbund
<a name="user-pool-lambda-inbound-federation"></a>

Der eingehende Verbundauslöser transformiert föderierte Benutzerattribute während des Authentifizierungsprozesses mit externen Identitätsanbietern. Wenn Benutzer sich über konfigurierte Identitätsanbieter authentifizieren, können Sie mit diesem Trigger Antworten von externen SAML- und OIDC-Anbietern ändern, indem Sie Daten im Authentifizierungsprozess abfangen und transformieren. So können Sie programmgesteuert steuern, wie Amazon Cognito Cognito-Benutzerpools mit Verbundbenutzern und ihren Attributen umgehen.

Verwenden Sie diesen Trigger, um Attribute hinzuzufügen, zu überschreiben oder zu unterdrücken, bevor Sie neue Benutzer erstellen oder bestehende Verbundbenutzerprofile aktualisieren. Dieser Trigger empfängt unverarbeitete Identitätsanbieter-Attribute als Eingabe und gibt modifizierte Attribute zurück, die Amazon Cognito auf das Benutzerprofil anwendet.

**Topics**
+ [Überblick über den Ablauf](#cognito-user-pools-lambda-trigger-inbound-federation-flow)
+ [Lambda-Triggerparameter für eingehenden Verbund](#cognito-user-pools-lambda-trigger-syntax-inbound-federation)
+ [Beispiel für einen eingehenden Verbund: Verwaltung der Gruppenmitgliedschaft](#aws-lambda-triggers-inbound-federation-example-groups)
+ [Beispiel für einen eingehenden Verbund: Große Attribute kürzen](#aws-lambda-triggers-inbound-federation-example-truncate)
+ [Beispiel für einen eingehenden Verbund: Protokollierung von Verbundereignissen](#aws-lambda-triggers-inbound-federation-example-logging)

## Überblick über den Ablauf
<a name="cognito-user-pools-lambda-trigger-inbound-federation-flow"></a>

Wenn sich ein Benutzer bei einem externen Identitätsanbieter authentifiziert, ruft Amazon Cognito den Trigger für eingehende Verbindungen auf, bevor das Benutzerprofil erstellt oder aktualisiert wird. Der Trigger empfängt die Rohattribute vom Identitätsanbieter und kann sie transformieren, bevor Amazon Cognito sie speichert. Dieser Ablauf findet sowohl für neue Verbundbenutzer als auch für bestehende Benutzer statt, die sich erneut über den Verbund anmelden.

![\[Lambda-Triggerfluss für eingehenden Verbund\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-inbound-federation.png)


## Lambda-Triggerparameter für eingehenden Verbund
<a name="cognito-user-pools-lambda-trigger-syntax-inbound-federation"></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.

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

```
{
    "version": "string",
    "triggerSource": "InboundFederation_ExternalProvider",
    "region": AWSRegion,
    "userPoolId": "string",
    "userName": "string",
    "callerContext": {
        "awsSdkVersion": "string",
        "clientId": "string"
    },
    "request": {
        "providerName": "string",
        "providerType": "string",
        "attributes": {
            "tokenResponse": {
                "access_token": "string",
                "token_type": "string",
                "expires_in": "string"
            },
            "idToken": {
                "sub": "string",
                "email": "string",
                "email_verified": "string"
            },
            "userInfo": {
                "email": "string",
                "given_name": "string",
                "family_name": "string"
            },
            "samlResponse": {
                "string": "string"
            }
        }
    },
    "response": {
        "userAttributesToMap": {
            "string": "string"
        }
    }
}
```

------

### Parameter für eingehende Verbundanfragen
<a name="cognito-user-pools-lambda-trigger-syntax-inbound-federation-request"></a>

**Name des Anbieters**  
Der Name des externen Identitätsanbieters.

**Anbietertyp**  
Der Typ des externen Identitätsanbieters. Gültige Werte:`OIDC`,`SAML`,`Facebook`,`Google`,`SignInWithApple`,`LoginWithAmazon`.

**Attribute**  
Die Rohattribute, die vor der Verarbeitung vom Identity Provider empfangen wurden. Die Struktur variiert je nach Anbietertyp.

**Attributes.TokenResponse**  
OAuth Token-Antwortdaten vom Endpunkt. `/token` Nur für OIDC und soziale Anbieter verfügbar. Enthält`access_token`,`id_token`, `refresh_token` `token_type``expires_in`, und. `scope`

**attribute.idToken**  
Dekodiertes und validiertes ID-Token, das JWT behauptet. Nur für OIDC und soziale Anbieter verfügbar. Enthält verifizierte Informationen zur Benutzeridentität, einschließlich `sub` (eindeutige Benutzerkennung) `email``name`,, `iss` (Aussteller), `aud` (Zielgruppe), `exp` (Ablauf) und `iat` (Ausstellungszeit).

**Attributes.UserInfo**  
Erweiterte Benutzerprofilinformationen vom Endpunkt aus. UserInfo Nur für OIDC und soziale Anbieter verfügbar. Enthält detaillierte Profilattribute wie`given_name`,, `family_name` `picture``address`, und andere anbieterspezifische Felder. Kann leer sein, wenn der IdP den Endpunkt nicht unterstützt oder wenn der UserInfo Endpunktaufruf fehlschlägt.

**Attributes.samlResponse**  
SAML-Assertion-Attribute. Nur für SAML-Anbieter verfügbar. Enthält Attribute aus der SAML-Antwort.

### Antwortparameter für eingehende Föderationen
<a name="cognito-user-pools-lambda-trigger-syntax-inbound-federation-response"></a>

**userAttributesToKarte**  
Die Benutzerattribute, die auf das Benutzerprofil angewendet werden sollen.

**Wichtig**  
Sie müssen ALLE Benutzerattribute, die Sie behalten möchten, in der Antwort angeben, einschließlich der Attribute, die Sie nicht ändern. Alle Attribute, die nicht in der `userAttributesToMap` Antwort enthalten sind, werden gelöscht und nicht im Benutzerprofil gespeichert. Dies gilt sowohl für modifizierte als auch für unveränderte Attribute.

**Leeres Antwortverhalten**  
Wenn Sie ein leeres Objekt `{}` für zurückgeben`userAttributesToMap`, werden alle ursprünglichen Attribute des Identity Providers unverändert beibehalten. Dies wirkt wie ein No-Op, als ob die Lambda-Funktion nie ausgeführt worden wäre. Dies unterscheidet sich vom Weglassen von Attributen, wodurch sie gelöscht werden.

**Anbieterspezifische Attribute**  
Die Struktur von `request.attributes` variiert je nach. `providerType` Zu IDC und sozialen Anbietern gehören `tokenResponse``idToken`, und `userInfo` Objekte. SAML-Anbieter schließen nur das Objekt ein. `samlResponse`

## Beispiel für einen eingehenden Verbund: Verwaltung der Gruppenmitgliedschaft
<a name="aws-lambda-triggers-inbound-federation-example-groups"></a>

Dieses Beispiel zeigt, wie föderierte Identitätsanbietergruppen Amazon Cognito-Benutzerpool-Gruppen zugeordnet werden. Diese Funktion extrahiert die Gruppenmitgliedschaft aus der Verbundantwort und fügt Benutzer automatisch zu den entsprechenden Amazon Cognito Cognito-Gruppen hinzu, sodass keine Trigger nach der Authentifizierung erforderlich sind.

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

```
exports.handler = async (event) => {
    const { providerType, attributes } = event.request;
    
    // Extract user attributes based on provider type
    let userAttributesFromIdp = {};
    if (providerType === 'SAML') {
        userAttributesFromIdp = attributes.samlResponse || {};
    } else {
        // For OIDC and Social providers, merge userInfo and idToken
        userAttributesFromIdp = {
            ...(attributes.userInfo || {}),
            ...(attributes.idToken || {})
        };
    }
    
    // Extract groups from federated response
    const federatedGroups = userAttributesFromIdp.groups?.split(',') || [];
    
    // Map federated groups to Cognito groups
    const groupMapping = {
        'Domain Admins': 'Administrators',
        'Engineering': 'Developers',
        'Sales': 'SalesTeam'
    };
    
    // Filter to only in-scope groups
    const mappedGroups = federatedGroups
        .map(group => groupMapping[group.trim()])
        .filter(group => group); // Remove undefined values
    
    // Pass through attributes with mapped groups as custom attribute
    const attributesToMap = {
        ...userAttributesFromIdp,
        'custom:user_groups': mappedGroups.join(',')
    };
    
    // Remove original groups attribute
    delete attributesToMap.groups;
    
    event.response.userAttributesToMap = attributesToMap;
    return 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 ]

```
{
    "userPoolId": "us-east-1_XXXXXXXXX",
    "request": {
        "providerName": "CorporateAD",
        "providerType": "SAML",
        "attributes": {
            "samlResponse": {
                "email": "jane.smith@company.com",
                "given_name": "Jane",
                "family_name": "Smith",
                "groups": "Engineering,Domain Admins",
                "department": "Engineering"
            }
        }
    },
    "response": {
        "userAttributesToMap": {}
    }
}
```

------

## Beispiel für einen eingehenden Verbund: Große Attribute kürzen
<a name="aws-lambda-triggers-inbound-federation-example-truncate"></a>

Dieses Beispiel zeigt, wie Attributwerte gekürzt werden, die die Speicherlimits von Amazon Cognito überschreiten. Diese Funktion überprüft jedes Attribut des Identitätsanbieters. Wenn ein Attributwert 2048 Zeichen überschreitet, wird der Wert gekürzt und es werden Auslassungspunkte hinzugefügt, um auf die Kürzung hinzuweisen. Alle anderen Attribute werden unverändert übernommen.

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

```
exports.handler = async (event) => {
    const MAX_ATTRIBUTE_LENGTH = 2048;
    
    // Get the identity provider attributes based on provider type
    const { providerType, attributes } = event.request;
    let idpAttributes = {};
    
    if (providerType === 'SAML') {
        idpAttributes = attributes.samlResponse || {};
    } else {
        // For OIDC and Social providers, merge userInfo and idToken
        idpAttributes = {
            ...(attributes.userInfo || {}),
            ...(attributes.idToken || {})
        };
    }
    
    const userAttributes = {};
    
    // Process each attribute
    for (const [key, value] of Object.entries(idpAttributes)) {
        if (typeof value === 'string' && value.length > MAX_ATTRIBUTE_LENGTH) {
            // Truncate the value and add ellipsis
            userAttributes[key] = value.substring(0, MAX_ATTRIBUTE_LENGTH - 3) + '...';
            console.log(`Truncated attribute ${key} from ${value.length} to ${userAttributes[key].length} characters`);
        } else {
            // Keep the original value
            userAttributes[key] = value;
        }
    }
    
    // Return the modified attributes
    event.response.userAttributesToMap = userAttributes;
    return 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": "string",
    "triggerSource": "InboundFederation_ExternalProvider",
    "region": "us-east-1",
    "userPoolId": "us-east-1_XXXXXXXXX",
    "userName": "ExampleProvider_12345",
    "callerContext": {
        "awsSdkVersion": "string",
        "clientId": "string"
    },
    "request": {
        "providerName": "ExampleProvider",
        "providerType": "OIDC",
        "attributes": {
            "tokenResponse": {
                "access_token": "abcDE...",
                "token_type": "Bearer",
                "expires_in": "3600"
            },
            "idToken": {
                "sub": "12345",
                "email": "user@example.com"
            },
            "userInfo": {
                "email": "user@example.com",
                "given_name": "Example",
                "family_name": "User",
                "bio": "This is a very long biography that contains more than 2048 characters..."
            }
        }
    },
    "response": {
        "userAttributesToMap": {}
    }
}
```

------

## Beispiel für einen eingehenden Verbund: Protokollierung von Verbundereignissen
<a name="aws-lambda-triggers-inbound-federation-example-logging"></a>

Dieses Beispiel zeigt, wie Verbundauthentifizierungsereignisse zur Überwachung und zum Debuggen protokolliert werden. Diese Beispielfunktion erfasst detaillierte Informationen zu Verbundbenutzern und ihren Attributen und bietet so Einblick in den Authentifizierungsprozess.

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

```
exports.handler = async (event) => {
    const { providerName, providerType, attributes } = event.request;
    
    // Extract user attributes based on provider type
    let userAttributesFromIdp = {};
    if (providerType === 'SAML') {
        userAttributesFromIdp = attributes.samlResponse || {};
    } else {
        // For OIDC and Social providers, merge userInfo and idToken
        userAttributesFromIdp = {
            ...(attributes.userInfo || {}),
            ...(attributes.idToken || {})
        };
    }
    
    // Log federated authentication details
    console.log(JSON.stringify({
        timestamp: new Date().toISOString(),
        providerName,
        providerType,
        userEmail: userAttributesFromIdp.email,
        attributeCount: Object.keys(userAttributesFromIdp).length,
        attributes: userAttributesFromIdp
    }));
    
    // Pass through all attributes unchanged
    event.response.userAttributesToMap = userAttributesFromIdp;
    return 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": "string",
    "triggerSource": "InboundFederation_ExternalProvider",
    "region": "us-east-1",
    "userPoolId": "us-east-1_XXXXXXXXX",
    "userName": "CorporateAD_john.doe",
    "callerContext": {
        "awsSdkVersion": "string",
        "clientId": "string"
    },
    "request": {
        "providerName": "CorporateAD",
        "providerType": "SAML",
        "attributes": {
            "samlResponse": {
                "email": "john.doe@company.com",
                "given_name": "John",
                "family_name": "Doe",
                "department": "Engineering",
                "employee_id": "EMP12345"
            }
        }
    },
    "response": {
        "userAttributesToMap": {}
    }
}
```

------

Erwartete CloudWatch Protokollausgabe:

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

```
{
    "timestamp": "2025-01-14T21:17:40.153Z",
    "providerName": "CorporateAD",
    "providerType": "SAML",
    "userEmail": "john.doe@company.com",
    "attributeCount": 5,
    "attributes": {
        "email": "john.doe@company.com",
        "given_name": "John",
        "family_name": "Doe",
        "department": "Engineering",
        "employee_id": "EMP12345"
    }
}
```

------

# Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen
<a name="user-pool-lambda-challenge"></a>

Beim Aufbau Ihrer Authentifizierungsabläufe für Ihren Amazon Cognito Cognito-Benutzerpool stellen Sie möglicherweise fest, dass Sie Ihr Authentifizierungsmodell über die integrierten Abläufe hinaus erweitern möchten. Ein häufiger Anwendungsfall für die benutzerdefinierten Challenge-Trigger ist die Implementierung zusätzlicher Sicherheitsüberprüfungen, die über Benutzername, Passwort und Multi-Faktor-Authentifizierung (MFA) hinausgehen. Eine benutzerdefinierte Herausforderung ist jede Frage und Antwort, die Sie in einer von Lambda unterstützten Programmiersprache generieren können. Sie könnten beispielsweise verlangen, dass Benutzer ein CAPTCHA lösen oder eine Sicherheitsfrage beantworten müssen, bevor sie sich authentifizieren dürfen. Ein weiterer potenzieller Bedarf ist die Integration mit speziellen Authentifizierungsfaktoren oder -geräten. Oder Sie haben möglicherweise bereits Software entwickelt, die Benutzer mit einem Hardware-Sicherheitsschlüssel oder einem biometrischen Gerät authentifiziert. Die Definition des Authentifizierungserfolgs für eine benutzerdefinierte Abfrage ist die Antwort, die Ihre Lambda-Funktion als richtig akzeptiert: zum Beispiel eine feste Zeichenfolge oder eine zufriedenstellende Antwort von einer externen API.

Sie können die Authentifizierung mit Ihrer benutzerdefinierten Abfrage beginnen und den Authentifizierungsprozess vollständig kontrollieren, oder Sie können eine Benutzername-Passwort-Authentifizierung durchführen, bevor Ihre Anwendung Ihre benutzerdefinierte Abfrage erhält.

Der Lambda-Trigger für benutzerdefinierte Authentifizierungsherausforderungen:

**[Definiert](user-pool-lambda-define-auth-challenge.md)**  
Initiiert eine Challenge-Sequenz. Legt fest, ob Sie eine neue Herausforderung initiieren, die Authentifizierung als abgeschlossen markieren oder den Authentifizierungsversuch beenden möchten.

**[Erzeugt](user-pool-lambda-create-auth-challenge.md)**  
Stellt die Frage an Ihre Anwendung, die der Benutzer beantworten muss. Diese Funktion kann eine Sicherheitsfrage oder einen Link zu einem CAPTCHA enthalten, das Ihre Anwendung Ihrem Benutzer anzeigen soll.

**[Überprüft](user-pool-lambda-verify-auth-challenge-response.md)**  
Kennt die erwartete Antwort und vergleicht sie mit der Antwort, die Ihre Anwendung in der Challenge-Antwort liefert. Die Funktion ruft möglicherweise die API Ihres CAPTCHA-Dienstes auf, um die erwarteten Ergebnisse des Lösungsversuchs Ihres Benutzers abzurufen.

Diese drei Lambda-Funktionen sind miteinander verknüpft, um einen Authentifizierungsmechanismus zu bieten, den Sie vollständig kontrollieren können und den Sie selbst entworfen haben. Da für die benutzerdefinierte Authentifizierung Anwendungslogik in Ihrem Client und in den Lambda-Funktionen erforderlich ist, können Sie die benutzerdefinierte Authentifizierung nicht innerhalb der verwalteten Anmeldung verarbeiten. Dieses Authentifizierungssystem erfordert zusätzlichen Entwickleraufwand. Ihre Anwendung muss den Authentifizierungsablauf mit der Benutzerpools-API durchführen und die daraus resultierende Herausforderung mit einer maßgeschneiderten Anmeldeschnittstelle bewältigen, die die Frage in den Mittelpunkt der benutzerdefinierten Authentifizierungsherausforderung stellt.

![\[Lambda-Auslöser für Aufforderungen\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-challenges.png)


Weitere Informationen zur Implementierung der benutzerdefinierten Authentifizierung finden Sie unter [Benutzerdefinierter Authentifizierungsablauf und Aufforderungen](amazon-cognito-user-pools-authentication-flow-methods.md#Custom-authentication-flow-and-challenges)

Authentifizierung zwischen den API-Vorgängen [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)oder [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), und [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)oder [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). In diesem Ablauf führt ein Benutzer die Authentifizierung durch Beantwortung aufeinanderfolgender Aufforderungen durch, bis die Authentifizierung entweder fehlschlägt oder Token für den Benutzer ausgestellt werden. Eine Antwort auf eine Herausforderung könnte eine neue Herausforderung sein. In diesem Fall reagiert Ihre Anwendung so oft wie nötig auf neue Herausforderungen. Eine erfolgreiche Authentifizierung erfolgt, wenn die Funktion Define Auth Challenge die bisherigen Ergebnisse analysiert, feststellt, dass alle Challenges beantwortet wurden, und ein Ergebnis zurückgibt`IssueTokens`.

**Topics**
+ [SRP-Authentifizierung in benutzerdefinierten Challenge-Flows](#user-pool-lambda-challenge-srp-authentication)
+ [Lambda-Auslöser für die Definition einer Authentifizierungsaufforderung](user-pool-lambda-define-auth-challenge.md)
+ [Lambda-Auslöser für die Erstellung einer Authentifizierungsaufforderung](user-pool-lambda-create-auth-challenge.md)
+ [Lambda-Auslöser für die Verifizierung der Antwort auf eine Authentifizierungsaufforderung](user-pool-lambda-verify-auth-challenge-response.md)

## SRP-Authentifizierung in benutzerdefinierten Challenge-Flows
<a name="user-pool-lambda-challenge-srp-authentication"></a>

Sie können Amazon-Cognito-Benutzerpasswörter überprüfen lassen, bevor es Ihre benutzerdefinierten Herausforderungen ausgibt. Alle Lambda-Trigger, die in der Authentifizierungskategorie [Ressourcen- und Anforderungskontingente](quotas.md#category_operations.title) zugeordnet sind, werden ausgeführt, wenn Sie eine SRP-Authentifizierung in einem benutzerdefinierten Challenge-Flow durchführen. Es folgt eine Übersicht über den Prozess:

1. Ihre App initiiert die Anmeldung, indem `InitiateAuth` oder `AdminInitiateAuth` mit der `AuthParameters`-Karte aufgerufen werden. Parameter müssen `CHALLENGE_NAME: SRP_A,` und Werte für `SRP_A` und `USERNAME` umfassen.

1. Amazon Cognito ruft Ihren Lambda-Auslöser „Authentifizierungsaufforderung definieren“ mit einer ersten Sitzung auf, die `challengeName: SRP_A` und `challengeResult: true` enthält.

1. Nachdem Sie diese Eingaben empfangen haben, reagiert Ihre Lambda-Funktion mit `challengeName: PASSWORD_VERIFIER`, `issueTokens: false`, `failAuthentication: false`.

1. Wenn die Kennwortverifizierung erfolgreich ist, ruft Amazon Cognito Ihre Lambda-Funktion erneut mit einer neuen Sitzung auf, die `challengeName: PASSWORD_VERIFIER` und `challengeResult: true` enthält.

1. Ihre Lambda-Funktion initiiert Ihre benutzerdefinierten Aufforderungen, indem sie mit `challengeName: CUSTOM_CHALLENGE`, `issueTokens: false` und `failAuthentication: false` antwortet. Wenn Sie Ihren benutzerdefinierten Authentifizierungsablauf nicht mit Passwortüberprüfung starten möchten, können Sie die Anmeldung mit der `AuthParameters`-Karte einschließlich `CHALLENGE_NAME: CUSTOM_CHALLENGE` initiieren.

1. Die Aufforderungsschleife wird so lange ausgeführt, bis alle Aufforderungen beantwortet sind.

Im Folgenden finden Sie ein Beispiel für eine `InitiateAuth` Startanforderung, die der benutzerdefinierten Authentifizierung mit einem SRP-Flow vorausgeht.

```
{
    "AuthFlow": "CUSTOM_AUTH",
    "ClientId": "1example23456789",
    "AuthParameters": {
        "CHALLENGE_NAME": "SRP_A",
        "USERNAME": "testuser",
        "SRP_A": "[SRP_A]",
        "SECRET_HASH": "[secret hash]"
    }
}
```

### Das Passwort wurde im SRP-Flow für die benutzerdefinierte Authentifizierung zurückgesetzt
<a name="user-pool-lambda-challenge-force-password-change"></a>

Wenn sich Benutzer im `FORCE_CHANGE_PASSWORD` Status befinden, muss Ihr benutzerdefinierter Authentifizierungsablauf den Schritt zur Passwortänderung integrieren und gleichzeitig die Integrität Ihrer Authentifizierungsherausforderungen wahren. Amazon Cognito ruft während der Herausforderung Ihren Lambda-Trigger für [die Definitionsauthentifizierungsherausforderung](user-pool-lambda-define-auth-challenge.md) auf. `NEW_PASSWORD_REQUIRED` In diesem Szenario kann ein Benutzer, der sich mit einem benutzerdefinierten Challenge-Flow und SRP-Authentifizierung anmeldet, ein neues Passwort festlegen, wenn er sich in einem Zustand befindet, in dem das Passwort zurückgesetzt wurde.

Wenn sich Benutzer im `FORCE_CHANGE_PASSWORD` Status `RESET_REQUIRED` oder befinden, müssen sie auf eine Aufforderung mit einem [`NEW_PASSWORD_REQUIRED`antworten](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#API_RespondToAuthChallenge_RequestParameters). `NEW_PASSWORD` Bei der benutzerdefinierten Authentifizierung mit SRP gibt Amazon Cognito eine `NEW_PASSWORD_REQUIRED` Aufforderung zurück, nachdem Benutzer die `PASSWORD_VERIFIER` SRP-Abfrage abgeschlossen haben. Ihr Trigger zur Definition einer Authentifizierungsabfrage empfängt beide Challenge-Ergebnisse im `session` Array und kann mit weiteren benutzerdefinierten Abfragen fortfahren, nachdem der Benutzer sein Passwort erfolgreich geändert hat.

Ihr Lambda-Trigger zur Definierung der Authentifizierungsherausforderung muss die Abfragesequenz durch SRP-Authentifizierung, Kennwortrücksetzung und nachfolgende benutzerdefinierte Abfragen verwalten. Der Trigger empfängt eine Reihe abgeschlossener Herausforderungen im `session` Parameter, einschließlich sowohl `PASSWORD_VERIFIER` der Ergebnisse als auch der Ergebnisse. `NEW_PASSWORD_REQUIRED` Eine Beispielimplementierung finden Sie unter[Beispiel für „Authentifizierungsaufforderung definieren“](user-pool-lambda-define-auth-challenge.md#aws-lambda-triggers-define-auth-challenge-example).

#### Schritte des Authentifizierungsablaufs
<a name="user-pool-lambda-challenge-password-flow-steps"></a>

Für Benutzer, die ihr Passwort vor benutzerdefinierten Herausforderungen verifizieren müssen, folgt der Prozess diesen Schritten:

1. Ihre App initiiert die Anmeldung, indem `InitiateAuth` oder `AdminInitiateAuth` mit der `AuthParameters`-Karte aufgerufen werden. Die Parameter müssen Folgendes enthalten: `CHALLENGE_NAME: SRP_A` und Werte für `SRP_A` und`USERNAME`.

1. Amazon Cognito ruft Ihren Lambda-Auslöser „Authentifizierungsaufforderung definieren“ mit einer ersten Sitzung auf, die `challengeName: SRP_A` und `challengeResult: true` enthält.

1. Nachdem Sie diese Eingaben empfangen haben, reagiert Ihre Lambda-Funktion mit `challengeName: PASSWORD_VERIFIER`, `issueTokens: false`, `failAuthentication: false`.

1. Wenn die Passwortverifizierung erfolgreich ist, passiert eines von zwei Dingen:  
**Für Benutzer mit normalem Status:**  
Amazon Cognito ruft Ihre Lambda-Funktion erneut mit einer neuen Sitzung auf, die und enthält. `challengeName: PASSWORD_VERIFIER` `challengeResult: true`  
Ihre Lambda-Funktion initiiert Ihre benutzerdefinierten Aufforderungen, indem sie mit `challengeName: CUSTOM_CHALLENGE`, `issueTokens: false` und `failAuthentication: false` antwortet.  
**Für Benutzer im Status oder`RESET_REQUIRED`: `FORCE_CHANGE_PASSWORD`**  
Amazon Cognito ruft Ihre Lambda-Funktion mit einer Sitzung auf, die und enthält. `challengeName: PASSWORD_VERIFIER` `challengeResult: true`  
Ihre Lambda-Funktion sollte mit `challengeName: NEW_PASSWORD_REQUIRED`, `issueTokens: false` und `failAuthentication: false` antworten.  
Nach erfolgreicher Kennwortänderung ruft Amazon Cognito Ihre Lambda-Funktion mit einer Sitzung auf, die sowohl die als auch die `PASSWORD_VERIFIER` Ergebnisse enthält. `NEW_PASSWORD_REQUIRED`  
Ihre Lambda-Funktion initiiert Ihre benutzerdefinierten Aufforderungen, indem sie mit `challengeName: CUSTOM_CHALLENGE`, `issueTokens: false` und `failAuthentication: false` antwortet.

1. Die Aufforderungsschleife wird so lange ausgeführt, bis alle Aufforderungen beantwortet sind.

Wenn Sie Ihren benutzerdefinierten Authentifizierungsablauf nicht mit Passwortüberprüfung starten möchten, können Sie die Anmeldung mit der `AuthParameters`-Karte einschließlich `CHALLENGE_NAME: CUSTOM_CHALLENGE` initiieren.

#### Verwaltung von Sitzungen
<a name="user-pool-lambda-challenge-session-management"></a>

Durch den Authentifizierungsablauf wird die Sitzungskontinuität durch eine Reihe von Sitzungs IDs - und Challenge-Ergebnissen aufrechterhalten. Jede Challenge-Antwort generiert eine neue Sitzungs-ID, um Fehler bei der Wiederverwendung von Sitzungen zu vermeiden. Dies ist besonders wichtig bei mehrstufigen Authentifizierungsabläufen.

Challenge-Ergebnisse werden chronologisch in dem Session-Array gespeichert, das Ihre Lambda-Trigger empfangen. Für Benutzer mit `FORCE_CHANGE_PASSWORD` Status enthält das Sitzungs-Array:

1. `session[0]`- Erste `SRP_A` Herausforderung

1. `session[1]`- `PASSWORD_VERIFIER` Ergebnis

1. `session[2]`- `NEW_PASSWORD_REQUIRED` Ergebnis

1. Nachfolgende Elemente — Ergebnisse zusätzlicher benutzerdefinierter Herausforderungen

#### Beispiel für einen Authentifizierungsablauf
<a name="user-pool-lambda-challenge-example-flow"></a>

Das folgende Beispiel zeigt einen vollständigen benutzerdefinierten Authentifizierungsablauf für einen Benutzer mit `FORCE_CHANGE_PASSWORD` Status, der sowohl eine Passwortänderung als auch eine benutzerdefinierte CAPTCHA-Abfrage durchführen muss.

1. **InitiateAuth Anfrage**

   ```
   {
       "AuthFlow": "CUSTOM_AUTH",
       "ClientId": "1example23456789",
       "AuthParameters": {
           "CHALLENGE_NAME": "SRP_A",
           "USERNAME": "testuser",
           "SRP_A": "[SRP_A]"
       }
   }
   ```

1. **InitiateAuth Antwort**

   ```
   {
       "ChallengeName": "PASSWORD_VERIFIER",
       "ChallengeParameters": {
           "USER_ID_FOR_SRP": "testuser"
       },
       "Session": "[session_id_1]"
   }
   ```

1. **RespondToAuthChallenge Anfrage mit `PASSWORD_VERIFIER`**

   ```
   {
       "ChallengeName": "PASSWORD_VERIFIER",
       "ClientId": "1example23456789",
       "ChallengeResponses": {
           "PASSWORD_CLAIM_SIGNATURE": "[claim_signature]",
           "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]",
           "TIMESTAMP": "[timestamp]",
           "USERNAME": "testuser"
       },
       "Session": "[session_id_1]"
   }
   ```

1. **RespondToAuthChallenge Antwort mit `NEW_PASSWORD_REQUIRED` Herausforderung**

   ```
   {
       "ChallengeName": "NEW_PASSWORD_REQUIRED",
       "ChallengeParameters": {},
       "Session": "[session_id_2]"
   }
   ```

1. **RespondToAuthChallenge Anfrage mit `NEW_PASSWORD_REQUIRED`**

   ```
   {
       "ChallengeName": "NEW_PASSWORD_REQUIRED",
       "ClientId": "1example23456789",
       "ChallengeResponses": {
           "NEW_PASSWORD": "[password]",
           "USERNAME": "testuser"
       },
       "Session": "[session_id_2]"
   }
   ```

1. **RespondToAuthChallenge Antwort mit benutzerdefinierter CAPTCHA-Herausforderung**

   ```
   {
       "ChallengeName": "CUSTOM_CHALLENGE",
       "ChallengeParameters": {
           "captchaUrl": "url/123.jpg"
       },
       "Session": "[session_id_3]"
   }
   ```

1. **RespondToAuthChallenge Anfrage mit Antwort auf die benutzerdefinierte CAPTCHA-Herausforderung**

   ```
   {
       "ChallengeName": "CUSTOM_CHALLENGE",
       "ClientId": "1example23456789",
       "ChallengeResponses": {
           "ANSWER": "123",
           "USERNAME": "testuser"
       },
       "Session": "[session_id_3]"
   }
   ```

**6. Endgültige Erfolgsantwort**

```
{
    "AuthenticationResult": {
        "AccessToken": "eyJra456defEXAMPLE",
        "ExpiresIn": 3600,
        "IdToken": "eyJra789ghiEXAMPLE",
        "RefreshToken": "eyJjd123abcEXAMPLE",
        "TokenType": "Bearer"
    },
    "ChallengeParameters": {}
}
```

# Lambda-Auslöser für die Definition einer Authentifizierungsaufforderung
<a name="user-pool-lambda-define-auth-challenge"></a>

Der Define Auth Challenge Trigger ist eine Lambda-Funktion, die die Abfragesequenz in einem benutzerdefinierten Authentifizierungsablauf beibehält. Sie erklärt den Erfolg oder Misserfolg der Challenge-Sequenz und legt die nächste Challenge fest, falls die Sequenz noch nicht abgeschlossen ist.

![\[Lambda-Auslöser für Aufforderungen\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-challenges1.png)


**Authentifizierungsaufforderung definieren**  
 Amazon Cognito ruft diesen Auslöser auf, um den [benutzerdefinierten Authentifizierungsablauf](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-custom-authentication-flow) zu initiieren.

Die Anforderung für diesen Lambda-Auslöser enthält `session`. Der `session`-Parameter ist ein Array, das alle Aufforderungen enthält, die dem Benutzer im aktuellen Authentifizierungsprozess präsentiert werden. Die Anfrage enthält auch das entsprechende Ergebnis. Das `session`-Array speichert Aufforderungsdetails (`ChallengeResult`) in chronologischer Reihenfolge. Die Aufforderung `session[0]` stellt die erste Aufforderung dar, die der Benutzer erhält.

**Topics**
+ [Definition von Lambda-Auslöserparametern für die Authentifizierungsaufforderung](#cognito-user-pools-lambda-trigger-syntax-define-auth-challenge)
+ [Beispiel für „Authentifizierungsaufforderung definieren“](#aws-lambda-triggers-define-auth-challenge-example)

## Definition von Lambda-Auslöserparametern für die Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-define-auth-challenge"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
                . . .
        },
        "session": [
            ChallengeResult,
            . . .
        ],
        "clientMetadata": {
            "string": "string",
            . . .
        },
        "userNotFound": boolean
    },
    "response": {
        "challengeName": "string",
        "issueTokens": boolean,
        "failAuthentication": boolean
    }
}
```

------

### Anforderungsparameter für die Definition der Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-define-auth-challenge-request"></a>

 Wenn Amazon Cognito Ihre Lambda-Funktion aufruft, bietet Amazon Cognito die folgenden Parameter:

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**userNotFound**  
Ein boolescher Wert, den Amazon Cognito eingibt, wenn `PreventUserExistenceErrors` für Ihren Benutzerpool-Client auf `ENABLED` festgelegt ist. Ein Wert von `true` bedeutet, dass die Benutzer-ID (Benutzername, E-Mail-Adresse usw.) mit keinem vorhandenen Benutzer übereinstimmt. Wenn `PreventUserExistenceErrors` auf `ENABLED` gesetzt ist, informiert der Service die App nicht über nicht existierende Benutzer. Wir empfehlen, dass Ihre Lambda-Funktionen dieselbe Benutzererfahrung beibehalten und die Latenz berücksichtigen. Auf diese Weise kann der Aufrufer abweichendes Verhalten nicht erkennen, wenn der Benutzer vorhanden ist oder nicht vorhanden ist.

**Sitzung**  
Ein Array von `ChallengeResult`-Elementen. Jede enthält die folgenden Elemente:    
**challengeName**  
Einer der folgenden Challenge-Typen:`CUSTOM_CHALLENGE`,`SRP_A`,`PASSWORD_VERIFIER`,`SMS_MFA`,`EMAIL_OTP`,`SOFTWARE_TOKEN_MFA`, `DEVICE_SRP_AUTH``DEVICE_PASSWORD_VERIFIER`, oder`ADMIN_NO_SRP_AUTH`.  
Wenn Ihre Define Auth Challenge-Funktion eine `PASSWORD_VERIFIER` Herausforderung für einen Benutzer ausgibt, der die Multifaktor-Authentifizierung eingerichtet hat, folgt Amazon Cognito darauf mit einer `SMS_MFA``EMAIL_OTP`, oder -Aufforderung. `SOFTWARE_TOKEN_MFA` Dies sind die Eingabeaufforderungen zur Eingabe eines Multi-Faktor-Authentifizierungscodes. Schließen Sie in Ihrer Funktion die Behandlung von Eingabeereignissen aus `SMS_MFA``EMAIL_OTP`, und `SOFTWARE_TOKEN_MFA` Herausforderungen ein. Sie müssen in Ihrer Define Auth Challenge-Funktion keine MFA-Challenges aufrufen.  
Wenn Ihre Funktion feststellt, ob ein Benutzer sich erfolgreich authentifiziert hat und Sie Token ausgeben müssen, überprüfen Sie immer den `challengeName` in Ihrer Define-Auth-Challenge, um sicherzustellen, dass er mit dem erwarteten Wert übereinstimmt.  
**challengeResult**  
Setzen Sie diesen Parameter auf `true`, wenn der Benutzer die Aufforderung erfolgreich abgeschlossen hat. Setzen Sie ihn andernfalls auf `false`.  
**challengeMetadata**  
Ihr Name für die benutzerdefinierte Aufforderung. Nur verwendet, wenn `challengeName` `CUSTOM_CHALLENGE`entspricht.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für die Authentifizierungsaufforderung definieren. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können 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 verwenden. Die Anfrage, die die Funktion define auth challenge aufruft, enthält keine Daten, die in den 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-Vorgängen übergeben wurden.

### Antwortparameter für die Definition der Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-define-auth-challenge-response"></a>

In der Antwort können Sie die nächste Phase des Authentifizierungsvorgangs zurückgeben.

**challengeName**  
Eine Zeichenfolge, die den Namen der nächsten Aufforderung enthält. Wenn dem Benutzer eine neue Aufforderung angezeigt werden soll, geben Sie den Namen der Aufforderung hier an.

**issueTokens**  
Wenn Sie feststellen, dass der Benutzer den Authentifizierungsaufforderungen ausreichend nachgekommen ist, setzen Sie ihn auf `true`. Wenn der Benutzer den Aufforderungen nicht ausreichend nachgekommen ist, setzen Sie ihn auf `false`.

**failAuthentication**  
Wenn Sie den aktuellen Authentifizierungsprozess beenden möchten, setzen Sie ihn auf `true`. Um den aktuellen Authentifizierungsprozess fortzusetzen, setzen Sie ihn auf `false`.

## Beispiel für „Authentifizierungsaufforderung definieren“
<a name="aws-lambda-triggers-define-auth-challenge-example"></a>

Mit diesem Beispiel werden eine Reihe von Aufforderungen für die Authentifizierung definiert. Token werden nur dann ausgegeben, wenn der Benutzer alle Aufforderungen erfolgreich abgeschlossen hat. Wenn Benutzer die SRP-Authentifizierung mit den `SRP_A` und `PASSWORD_VERIFIER` Challenges abschließen, übergibt ihnen diese Funktion eine, `CUSTOM_CHALLENGE` die den Create Auth Challenge-Trigger auslöst. In Kombination mit unserem [Beispiel für die Create Auth Challenge](user-pool-lambda-create-auth-challenge.md#aws-lambda-triggers-create-auth-challenge-example) liefert diese Sequenz eine CAPTCHA-Herausforderung für Herausforderung drei und eine Sicherheitsfrage für Herausforderung vier.

Nachdem der Benutzer das CAPTCHA gelöst und die Sicherheitsfrage beantwortet hat, bestätigt diese Funktion, dass Ihr Benutzerpool Token ausstellen kann. Eine SRP-Authentifizierung ist nicht erforderlich. Sie können das CAPTCHA und die Sicherheitsfrage auch als Herausforderung eins und zwei festlegen. Für den Fall, dass Ihre Funktion zum Definieren einer Authentifizierungsabfrage keine SRP-Herausforderungen deklariert, hängt der Erfolg Ihrer Benutzer ausschließlich von ihren Antworten auf Ihre benutzerdefinierten Eingabeaufforderungen ab.

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

```
const handler = async (event) => {
  if (
    event.request.session.length === 1 &&
    event.request.session[0].challengeName === "SRP_A"
  ) {
    event.response.issueTokens = false;
    event.response.failAuthentication = false;
    event.response.challengeName = "PASSWORD_VERIFIER";
  } else if (
    event.request.session.length === 2 &&
    event.request.session[1].challengeName === "PASSWORD_VERIFIER" &&
    event.request.session[1].challengeResult === true
  ) {
    event.response.issueTokens = false;
    event.response.failAuthentication = false;
    event.response.challengeName = "CUSTOM_CHALLENGE";
  } else if (
    event.request.session.length === 3 &&
    event.request.session[2].challengeName === "CUSTOM_CHALLENGE" &&
    event.request.session[2].challengeResult === true
  ) {
    event.response.issueTokens = false;
    event.response.failAuthentication = false;
    event.response.challengeName = "CUSTOM_CHALLENGE";
  } else if (
    event.request.session.length === 4 &&
    event.request.session[3].challengeName === "CUSTOM_CHALLENGE" &&
    event.request.session[3].challengeResult === true
  ) {
    event.response.issueTokens = true;
    event.response.failAuthentication = false;
  } else {
    event.response.issueTokens = false;
    event.response.failAuthentication = true;
  }

  return event;
};

export { handler };
```

------

# Lambda-Auslöser für die Erstellung einer Authentifizierungsaufforderung
<a name="user-pool-lambda-create-auth-challenge"></a>

Der Create Auth Challenge-Trigger ist eine Lambda-Funktion, die die Details jeder Abfrage enthält, die durch den Define Auth Challenge Trigger deklariert wurde. Sie verarbeitet den durch den Define Auth Challenge-Trigger deklarierten Challenge-Namen und gibt einen Wert zurück`publicChallengeParameters`, den Ihre Anwendung dem Benutzer präsentieren muss. Diese Funktion liefert Ihrem Benutzerpool dann die Antwort auf die Herausforderung`privateChallengeParameters`, die Ihr Benutzerpool an den Verify Auth Challenge-Trigger weiterleitet. Während Ihr Define Auth Challenge-Trigger die Challenge-Sequenz verwaltet, verwaltet Ihr Create Auth Challenge-Trigger den Inhalt der Herausforderung.

![\[Lambda-Auslöser für Aufforderungen\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-challenges2.png)


**Authentifizierungsaufforderung erstellen**  
Amazon Cognito aktiviert den Auslöser nach **Authentifizierungsaufforderung definieren**, falls eine benutzerdefinierte Anforderung als Teil des Auslösers für **Authentifizierungsaufforderung definieren** festgelegt wurde. Erstellt einen [benutzerdefinierten Authentifizierungsablauf](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-custom-authentication-flow).

Dieser Lambda-Auslöser wird aufgerufen, um eine Aufforderung zu erstellen, die dem Benutzer angezeigt wird. Die Anforderung für diesen Lambda-Auslöser umfasst `challengeName` und `session`. `challengeName` ist eine Zeichenfolge und der Name der nächsten Aufforderung für den Benutzer. Der Wert dieses Attributs wird im Lambda-Auslöser „Authentifizierungsaufforderung definieren“ festgelegt.

Die Aufforderungsschleife wird so lange ausgeführt, bis alle Aufforderungen beantwortet werden.

**Topics**
+ [Lambda-Auslöserparameter für die Erstellung einer Authentifizierungsaufforderung](#cognito-user-pools-lambda-trigger-syntax-create-auth-challenge)
+ [Beispiel für „Authentifizierungsaufforderung erstellen“](#aws-lambda-triggers-create-auth-challenge-example)

## Lambda-Auslöserparameter für die Erstellung einer Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-create-auth-challenge"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "challengeName": "string",
        "session": [
            ChallengeResult,
            . . .
        ],
        "clientMetadata": {
            "string": "string",
            . . .
        },
        "userNotFound": boolean
    },
    "response": {
        "publicChallengeParameters": {
            "string": "string",
            . . .
        },
        "privateChallengeParameters": {
            "string": "string",
            . . .
        },
        "challengeMetadata": "string"
    }
}
```

------

### Anforderungsparameter für die Erstellung einer Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-create-auth-challenge-request"></a>

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**userNotFound**  
Dieser boolesche Wert wird eingegeben, wenn `PreventUserExistenceErrors` für Ihren Benutzerpool-Client auf `ENABLED` festgelegt ist.

**challengeName**  
Der Name der neuen Aufforderung.

**Sitzung**  
Das session-Element ist ein Array aus `ChallengeResult`-Elementen, die jeweils die folgenden Elemente enthalten:    
**challengeName**  
Der Aufforderungstyp: Einer von:`"CUSTOM_CHALLENGE"`,,`"PASSWORD_VERIFIER"`,`"SMS_MFA"`, `"DEVICE_SRP_AUTH"` `"DEVICE_PASSWORD_VERIFIER"``"NEW_PASSWORD_REQUIRED"`, oder. `"ADMIN_NO_SRP_AUTH"`   
**challengeResult**  
Setzen Sie diesen Parameter auf `true`, wenn der Benutzer die Aufforderung erfolgreich abgeschlossen hat. Setzen Sie ihn andernfalls auf `false`.  
**challengeMetadata**  
Ihr Name für die benutzerdefinierte Aufforderung. Nur verwendet, wenn `challengeName` `"CUSTOM_CHALLENGE"`entspricht.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser zum Erstellen einer Authentifizierungsaufforderung angeben. Sie können den ClientMetadata Parameter in den [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-Aktionen verwenden, um diese Daten an Ihre Lambda-Funktion zu übergeben. Die Anfrage, die die Funktion create auth challenge aufruft, enthält keine Daten, die in den 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-Vorgängen übergeben wurden.

### Antwortparameter für die Erstellung einer Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-create-auth-challenge-response"></a>

**publicChallengeParameters**  
Ein oder mehrere Schlüssel-Wert-Paare für die Client-App zur Verwendung in der Aufforderung, die dem Benutzer angezeigt wird. Dieser Parameter sollte alle erforderlichen Informationen enthalten, um dem Benutzer die Aufforderung richtig anzuzeigen.

**privateChallengeParameters**  
Dieser Parameter wird nur vom Lambda-Auslöser „Antwort auf Authentifizierungsaufforderung überprüfen“ verwendet. Dieser Parameter sollte enthalten alle Informationen, die erforderlich ist, um sicherzustellen, dass die Benutzer die Antwort auf die Aufforderung. Anders ausgedrückt, der Parameter `publicChallengeParameters` enthält die Frage, die dem Benutzer angezeigt wird, und `privateChallengeParameters` die gültigen Antworten auf die Frage.

**challengeMetadata**  
Ihr Name für die benutzerdefinierte Aufforderung, sofern es sich um eine benutzerdefinierte Aufforderung handelt.

## Beispiel für „Authentifizierungsaufforderung erstellen“
<a name="aws-lambda-triggers-create-auth-challenge-example"></a>

Diese Funktion hat zwei benutzerdefinierte Herausforderungen, die der Challenge-Sequenz in unserem Beispiel für eine [Define Auth](user-pool-lambda-define-auth-challenge.md#aws-lambda-triggers-define-auth-challenge-example) Challenge entsprechen. Bei den ersten beiden Herausforderungen handelt es sich um die SRP-Authentifizierung. Bei der dritten Challenge gibt diese Funktion in der Challenge-Antwort eine CAPTCHA-URL an Ihre Anwendung zurück. Ihre Anwendung rendert das CAPTCHA unter der angegebenen URL und gibt die Benutzereingabe zurück. Die URL für das CAPTCHA-Bild wird den Parametern der öffentlichen Aufforderung als "`captchaUrl`" hinzugefügt. Die erwartete Antwort wird den Parametern der privaten Aufforderung hinzugefügt.

Für die vierte Herausforderung gibt diese Funktion eine Sicherheitsfrage zurück. Ihre Anwendung rendert die Frage und fordert den Benutzer zur Eingabe seiner Antwort auf. Nachdem Benutzer beide benutzerdefinierten Herausforderungen gelöst haben, bestätigt der Trigger zur Definition der Authentifizierungsabfrage, dass Ihr Benutzerpool Token ausstellen kann.

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

```
const handler = async (event) => {
  if (event.request.challengeName !== "CUSTOM_CHALLENGE") {
    return event;
  }

  if (event.request.session.length === 2) {
    event.response.publicChallengeParameters = {};
    event.response.privateChallengeParameters = {};
    event.response.publicChallengeParameters.captchaUrl = "url/123.jpg";
    event.response.privateChallengeParameters.answer = "5";
  }

  if (event.request.session.length === 3) {
    event.response.publicChallengeParameters = {};
    event.response.privateChallengeParameters = {};
    event.response.publicChallengeParameters.securityQuestion =
      "Who is your favorite team mascot?";
    event.response.privateChallengeParameters.answer = "Peccy";
  }

  return event;
};

export { handler };
```

------

# Lambda-Auslöser für die Verifizierung der Antwort auf eine Authentifizierungsaufforderung
<a name="user-pool-lambda-verify-auth-challenge-response"></a>

Der Verify Auth Challenge-Trigger ist eine Lambda-Funktion, die die von einem Benutzer bereitgestellte Antwort mit einer bekannten Antwort vergleicht. Diese Funktion teilt Ihrem Benutzerpool mit, ob der Benutzer die Anfrage richtig beantwortet hat. Wenn der Challenge-Trigger zur Überprüfung `answerCorrect` der Authentifizierung mit einem Aus antwortet`true`, kann die Authentifizierungssequenz fortgesetzt werden.

![\[Lambda-Auslöser für Aufforderungen\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/lambda-challenges3.png)


**Überprüfen Sie die Antwort auf die Authentifizierungsabfrage**  
Amazon Cognito ruft diesen Auslöser auf, um zu überprüfen, ob die Antwort des Benutzers auf eine benutzerdefinierte Authentifizierungsaufforderung gültig ist. Es ist Teil eines [benutzerdefinierten Authentifizierungsablaufs](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-custom-authentication-flow) für einen Benutzerpool.

Die Anforderung für diesen Auslöser enthält die Parameter `privateChallengeParameters` und `challengeAnswer`. Die `privateChallengeParameters`-Werte werden vom Lambda-Auslöser „Authentifizierungsaufforderung erstellen“ zurückgegeben und enthalten die erwartete Antwort vom Benutzer. Der Parameter `challengeAnswer` enthält die Benutzerantwort auf die Aufforderung.

Die Antwort enthält das `answerCorrect`-Attribut. Wenn der Benutzer die Herausforderung erfolgreich abgeschlossen hat, legt Amazon Cognito den Attributwert auf `true` fest. Wenn der Benutzer die Herausforderung nicht erfolgreich abgeschlossen hat, legt Amazon Cognito den Wert auf `false` fest.

Die Aufforderungsschleife wird so lange ausgeführt, bis die Benutzer alle Aufforderungen beantwortet hat.

**Topics**
+ [Lambda-Auslöserparameter für die Überprüfung einer Authentifizierungsaufforderung](#cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge)
+ [Beispiel für „Antwort auf Authentifizierungsaufforderung überprüfen“](#aws-lambda-triggers-verify-auth-challenge-response-example)

## Lambda-Auslöserparameter für die Überprüfung einer Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "privateChallengeParameters": {
            "string": "string",
            . . .
        },
        "challengeAnswer": "string",
        "clientMetadata": {
            "string": "string",
            . . .
        },
        "userNotFound": boolean
    },
    "response": {
        "answerCorrect": boolean
    }
}
```

------

### Anforderungsparameter für die Verifizierung einer Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge-request"></a>

**userAttributes**  
Dieser Parameter enthält ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**userNotFound**  
Amazon Cognito gibt diesen booleschen Wert ein, wenn Amazon Cognito `PreventUserExistenceErrors` für Ihren Benutzerpool-Client auf `ENABLED` festgelegt hat.

**privateChallengeParameters**  
Dieser Parameter stammt aus dem Trigger „Authentifizierungsaufforderung erstellen“. Um festzustellen, ob der Benutzer eine Aufforderung erfüllt hat, vergleicht Amazon Cognito die Parameter mit der **challengeAnswer** eines Benutzers.  
Dieser Parameter sollte alle erforderlichen Informationen enthalten, um die Antwort des Benutzerstauf die Aufforderung zu validieren. Diese Informationen beinhalten die Frage, die Amazon Cognito dem Benutzer stellt (`publicChallengeParameters`), sowie die gültigen Antworten auf die Frage (`privateChallengeParameters`). Dieser Parameter wird nur vom Lambda-Auslöser „Antwort auf Authentifizierungsaufforderung überprüfen“ verwendet. 

**challengeAnswer**  
Dieser Parameterwert ist die Antwort des Benutzers auf die Aufforderung.

**clientMetadata**  
Dieser Parameter enthält ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion für den Auslöser zur Überprüfung der Authentifizierungsaufforderung 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 Verify Auth Challenge-Funktion weiterleitet.

### Antwortparameter für die Verifizierung der Authentifizierungsaufforderung
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge-response"></a>

**answerCorrect**  
Wenn der Benutzer die Aufforderung erfolgreich abschließt, legt Amazon Cognito diesen Parameter auf `true` fest. Wenn der Benutzer die Aufforderung nicht erfolgreich abschließt, legt Amazon Cognito den Parameter auf `false` fest. 

## Beispiel für „Antwort auf Authentifizierungsaufforderung überprüfen“
<a name="aws-lambda-triggers-verify-auth-challenge-response-example"></a>

Diese Funktion zur Überprüfung der Authentifizierung überprüft, ob die Antwort des Benutzers auf eine Abfrage mit der erwarteten Antwort übereinstimmt. Die Antwort des Benutzers wird durch Eingaben aus Ihrer Anwendung definiert, und die bevorzugte Antwort wird durch die Antwort aus der Antwort `privateChallengeParameters.answer` auf den [Trigger „Create Auth Challenge](user-pool-lambda-create-auth-challenge.md#aws-lambda-triggers-create-auth-challenge-example)“ definiert. Sowohl die richtige Antwort als auch die angegebene Antwort sind Teil des Eingabeereignisses für diese Funktion.

Wenn in diesem Beispiel die Antwort des Benutzers mit der erwarteten Antwort übereinstimmt, setzt Amazon Cognito den `answerCorrect` Parameter auf`true`.

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

```
const handler = async (event) => {
  if (
    event.request.privateChallengeParameters.answer ===
    event.request.challengeAnswer
  ) {
    event.response.answerCorrect = true;
  } else {
    event.response.answerCorrect = false;
  }

  return event;
};

export { handler };
```

------

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

------

# Lambda-Auslöser für die Benutzermigration.
<a name="user-pool-lambda-migrate-user"></a>

Wenn ein Benutzer zum Zeitpunkt der Anmeldung mit einem Passwort oder während des Ablaufs bei vergessenem Passwort nicht im Benutzerpool vorhanden ist, ruft Amazon Cognito den Auslöser auf. Nachdem die Lambda-Funktion erfolgreich ausgeführt wurde, erstellt Amazon Cognito den Benutzer in den Benutzerpool. Weitere Informationen zum Authentifizierungsablauf mit dem Lambda-Auslöser für die Benutzermigration finden Sie unter [Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration](cognito-user-pools-import-using-lambda.md).

Um Benutzer zum Zeitpunkt der Anmeldung oder während des Ablaufs bei vergessenem Passwort aus Ihrem vorhandenen Benutzerverzeichnis in Amazon-Cognito-Benutzerpools zu migrieren, verwenden Sie diese Lambda-Auslöser.

**Topics**
+ [Lambda-Auslöserquellen für die Benutzermigration](#user-pool-lambda-migrate-user-trigger-source)
+ [Lambda-Auslöserparameter für die Benutzermigration](#cognito-user-pools-lambda-trigger-syntax-user-migration)
+ [Beispiel: Migration eines Benutzers mit einem bestehenden Passwort](#aws-lambda-triggers-user-migration-example-1)

## Lambda-Auslöserquellen für die Benutzermigration
<a name="user-pool-lambda-migrate-user-trigger-source"></a>


| triggerSource-Wert | Veranstaltung | 
| --- | --- | 
| UserMigration\$1Authentication[1](#cognito-migrate-user-passwordless-note) | Benutzermigration bei der Anmeldung. | 
| UserMigration\$1ForgotPassword | Benutzermigration während des Ablaufs bei vergessenem Passwort. | 

1 [Amazon Cognito ruft diesen Trigger nicht auf, wenn sich Benutzer mit passwortloser Anmeldung authentifizieren.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

## Lambda-Auslöserparameter für die Benutzermigration
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration"></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.

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

```
{
    "userName": "string",
    "request": {
        "password": "string",
        "validationData": {
            "string": "string",
            . . .
        },
        "clientMetadata": {
            "string": "string",
      	. . .
        }
    },
    "response": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "finalUserStatus": "string",
        "messageAction": "string",
        "desiredDeliveryMediums": [ "string", . . .],
        "forceAliasCreation": boolean,
        "enableSMSMFA": boolean
    }
}
```

------

### Anforderungsparameter für die Benutzermigration
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-request"></a>

**userName**  
Der Benutzername, den der Benutzer bei der Anmeldung eingibt.

**password**  
Das Passwort, den der Benutzer bei der Anmeldung eingibt. Amazon Cognito sendet diesen Wert nicht in einer Anfrage, die durch einen Ablauf bei vergessenem Passwort initiiert wird.

**validationData**  
Ein oder mehrere Schlüssel-Wert-Paare, die die Validierungsdaten in der Anmeldeanforderung des Benutzers enthalten. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den Aktionen [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API verwenden.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion zum Migrieren von Benutzern bereitstellen können. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den Aktionen [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)und [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API verwenden.

### Antwortparameter für die Benutzermigration
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-response"></a>

**userAttributes**  
Dies ist ein Pflichtfeld.   
Dieses Feld muss ein oder mehrere Name-Wert-Paare enthalten, die Amazon Cognito im Benutzerprofil in Ihrem Benutzerpool speichert und als Benutzerattribute verwendet. Sie können sowohl Standard- als auch benutzerdefinierte Benutzerattribute aufnehmen. Für benutzerdefinierte Attribute muss das Präfix `custom:` angegeben werden, damit sie von Standardattributen unterschieden werden können. Weitere Informationen finden Sie unter [Benutzerdefinierte Attribute](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes.html).  
Ein Benutzer benötigt eine verifizierte E-Mail-Adresse oder eine verifizierte Telefonnummer, um seine Passwörter im Ablauf bei vergessenem Passwort zurückzusetzen. Amazon Cognito sendet eine Nachricht mit einem Code zum Zurücksetzen des Passworts an die in den Benutzerattributen angegebene E-Mail-Adresse oder Telefonnummer.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/user-pool-lambda-migrate-user.html)

**finalUserStatus**  
Sie können diesen Parameter auf `CONFIRMED` festlegen, um Ihre Benutzer automatisch zu bestätigen, damit sie sich mit ihren vorherigen Passwörtern anmelden können. Wenn Sie einen Benutzer auf `CONFIRMED` festlegen, müssen sie keine zusätzlichen Maßnahmen ergreifen, bevor sie sich anmelden können. Wenn Sie dieses Attribut nicht auf `CONFIRMED` festlegen, ist es auf `RESET_REQUIRED` eingestellt.  
Ein `finalUserStatus` von `RESET_REQUIRED` bedeutet, dass der Benutzer sein Passwort sofort nach der Migration bei der Anmeldung ändern muss und Ihre Client-App die `PasswordResetRequiredException` während des Authentifizierungsflusses erledigen muss.  
Amazon Cognito setzt die Kennwortstärkerichtlinie nicht durch, die Sie während der Migration mit einem Lambda-Auslöser für den Benutzerpool konfiguriert haben. Wenn das Kennwort nicht die von Ihnen konfigurierte Passwortrichtlinie erfüllt, akzeptiert Amazon Cognito das Kennwort trotzdem, damit es die Migration des Benutzers fortsetzen kann. Überprüfen Sie die Passwortstärke in Ihrem Code, um Richtlinien für die Passwortstärke durchzusetzen und Passwörter abzulehnen, die nicht der Richtlinie entsprechen. Wenn das Passwort dann nicht der Richtlinie entspricht, setzen Sie es finalUserStatus auf`RESET_REQUIRED`.

**messageAction**  
Sie können diesen Parameter auf `SUPPRESS` festlegen, um die Begrüßungsnachricht abzulehnen, die Amazon Cognito normalerweise an neue Benutzer sendet. Wenn Ihre Funktion diesen Parameter nicht zurückgibt, sendet Amazon Cognito die Begrüßungsnachricht.

**desiredDeliveryMediums**  
Sie können diesen Parameter auf `EMAIL` festlegen, um die Begrüßungsmeldung per E-Mail zu senden, oder auf `SMS`, um die Begrüßungsnachricht per SMS zu senden. Wenn Ihre Funktion diesen Parameter nicht zurückgibt, sendet Amazon Cognito die Begrüßungsnachricht per SMS.

**forceAliasCreation**  
Wenn Sie diesen Parameter auf setzen `TRUE` und die Telefonnummer oder E-Mail-Adresse im UserAttributes Parameter bereits als Alias für einen anderen Benutzer existiert, migriert der API-Aufruf den Alias vom vorherigen Benutzer zum neu erstellten Benutzer. Der vorherige Benutzer kann sich nicht mehr mit diesem Alias anmelden.  
Wenn Sie diesen Parameter auf `FALSE` setzen und der Alias existiert, migriert Amazon Cognito den Benutzer nicht und gibt einen Fehler an die Client-App zurück.  
Wenn Sie diesen Parameter nicht zurückgeben, geht Amazon Cognito davon aus, dass der Wert „falsch“ ist.

**enableSMSMFA**  
Legen Sie diesen Parameter auf `true` fest, damit der migrierte Benutzer für die Anmeldung die Multi-Faktor-Authentifizierung (MFA) per SMS-Nachricht abschließen muss. In Ihrem Benutzerpool muss MFA aktiviert sein. Die Attribute des Benutzers in den Anforderungsparametern müssen eine Telefonnummer enthalten, andernfalls schlägt die Migration dieses Benutzers fehl.

## Beispiel: Migration eines Benutzers mit einem bestehenden Passwort
<a name="aws-lambda-triggers-user-migration-example-1"></a>

Die Lambda-Funktion in diesem Beispiel migriert der Benutzer mit einem bestehenden Passwort und unterdrückt die Begrüßungsmeldung von Amazon Cognito.

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

```
exports.handler = (event, context, callback) => {
  var user;

  if (event.triggerSource == "UserMigration_Authentication") {
    // authenticate the user with your existing user directory service
    user = authenticateUser(event.userName, event.request.password);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        email_verified: "true",
      };
      event.response.finalUserStatus = "CONFIRMED";
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else if (event.triggerSource == "UserMigration_ForgotPassword") {
    // Lookup the user in your existing user directory service
    user = lookupUser(event.userName);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        // required to enable password-reset code to be sent to user
        email_verified: "true",
      };
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else {
    // Return error to Amazon Cognito
    callback("Bad triggerSource " + event.triggerSource);
  }
};
```

------

# Lambda-Auslöser für benutzerdefinierte Nachrichten
<a name="user-pool-lambda-custom-message"></a>

Wenn Sie über einen externen Standard für die E-Mail- und SMS-Nachrichten verfügen, die Sie an Ihre Benutzer senden möchten, oder wenn Sie zur Laufzeit Ihre eigene Logik auf die Formatierung von Benutzernachrichten anwenden möchten, fügen Sie Ihrem Benutzerpool einen benutzerdefinierten Nachrichtenauslöser hinzu. Die benutzerdefinierte Nachricht Lambda empfängt den Inhalt aller E-Mail- und SMS-Nachrichten, bevor Ihr Benutzerpool sie sendet. Ihre Lambda-Funktion hat dann die Möglichkeit, den Inhalt und den Betreff der Nachricht zu ändern.

Amazon Cognito ruft diesen Auslöser vor dem Senden einer E-Mail, einer Nachricht zur Telefonverifizierung oder eines MFA-Codes (Multi-Factor Authentication, Multifaktor-Authentifizierung) auf. Sie können die Nachricht mit Ihrem Auslöser für benutzerdefinierte Nachrichten dynamisch anpassen.

Die Anforderung beinhaltet `codeParameter`. Dies ist eine Zeichenfolge, die als Platzhalter für den von Amazon Cognito dem Benutzerzugestellten Code dient. Fügen Sie die Zeichenfolge `codeParameter` dort im Nachrichtentext ein, an der der Verifizierungscode erscheinen soll. Wenn Amazon Cognito diese Antwort empfängt, ersetzt Amazon Cognito die Zeichenfolge `codeParameter` durch den tatsächlichen Verifizierungscode. 

**Anmerkung**  
Das Eingabeereignis für eine Lambda-Funktion mit benutzerdefinierter Nachricht und der `CustomMessage_AdminCreateUser` Triggerquelle umfasst einen Benutzernamen und einen Bestätigungscode. Da ein vom Administrator erstellter Benutzer sowohl seinen Benutzernamen als auch seinen Code erhalten muss, muss die Antwort Ihrer Funktion Platzhaltervariablen für den Benutzernamen und den Code enthalten. Die Platzhalter für Ihre Nachricht sind die Werte von und. `request.usernameParameter` `request.codeParameter` Diese Werte sind in der Regel `{username}` und`{####}`. Es hat sich bewährt, auf die Eingabewerte zu verweisen, anstatt die Variablennamen fest zu codieren.

**Topics**
+ [Lambda-Auslöserquellen für benutzerdefinierte Nachrichten](#cognito-user-pools-lambda-trigger-syntax-custom-message-trigger-source)
+ [Lambda-Auslöserparameter für benutzerdefinierte Nachrichten](#cognito-user-pools-lambda-trigger-syntax-custom-message)
+ [Benutzerdefinierte Nachricht für das Registrierbeispiel](#aws-lambda-triggers-custom-message-example)
+ [Benutzerdefinierte Nachricht für das Beispiel, bei dem der Administrator einen Benutzer anlegt](#aws-lambda-triggers-custom-message-admin-example)

## Lambda-Auslöserquellen für benutzerdefinierte Nachrichten
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-trigger-source"></a>


| triggerSource-Wert | Veranstaltung | 
| --- | --- | 
| CustomMessage\$1SignUp | Benutzerdefinierte Nachricht – Zum Senden des Bestätigungscodes nach der Anmeldung. | 
| CustomMessage\$1AdminCreateUser | Benutzerdefinierte Nachricht – Zum Senden des temporären Passworts an einen neuen Benutzer. | 
| CustomMessage\$1ResendCode | Benutzerdefinierte Nachricht – Zum erneuten Senden des Bestätigungscodes an einen vorhandenen Benutzer. | 
| CustomMessage\$1ForgotPassword | Benutzerdefinierte Nachricht – Zum Senden des Bestätigungscodes für die Anforderung „Passwort vergessen“. | 
| CustomMessage\$1UpdateUserAttribute | Benutzerdefinierte Nachricht – Wenn die E-Mail-Adresse oder die Telefonnummer eines Benutzers geändert wird, sendet dieser Auslöser automatisch einen Verifizierungscode an den Benutzer. Kann nicht für andere Attribute verwendet werden. | 
| CustomMessage\$1VerifyUserAttribute | Benutzerdefinierte Nachricht – Dieser Auslöser sendet einen Verifizierungscode an Benutzer, wenn sie ihn manuell für eine neue E-Mail-Adresse oder Telefonnummer anfordern. | 
| CustomMessage\$1Authentication | Benutzerdefinierte Nachricht – Zum Senden eines MFA-Codes während der Authentifizierung. | 

## Lambda-Auslöserparameter für benutzerdefinierte Nachrichten
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message"></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.

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

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        }
        "codeParameter": "####",
        "usernameParameter": "string",
        "clientMetadata": {
            "string": "string",
            . . .
        }
    },
    "response": {
        "smsMessage": "string",
        "emailMessage": "string",
        "emailSubject": "string"
    }
}
```

------

### Anforderungsparameter für benutzerdefinierte Nachrichten
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-request"></a>

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

**codeParameter**  
Eine Zeichenfolge, die Sie als Platzhalter für den Verifizierungscode in der benutzerdefinierten Nachricht verwenden.

**usernameParameter**  
Der Benutzername Amazon Cognito bezieht diesen Parameter in Anfragen von Benutzern ein, die von einem Administrator erstellt wurden.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für benutzerdefinierte Nachrichten angeben. Die Anfrage, die eine benutzerdefinierte Nachrichtenfunktion aufruft, enthält keine Daten, die in den 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-Vorgängen übergeben wurden. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den folgenden API-Aktionen verwenden:  
+  [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) 
+  [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 
+  [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)
+  [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+  [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)
+  [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+  [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+  [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)

### Antwortparameter für benutzerdefinierte Nachrichten
<a name="cognito-user-pools-lambda-trigger-syntax-custom-message-response"></a>

In der Antwort geben Sie den benutzerdefinierten Text an, der in Nachrichten an Ihre Benutzer enthalten sein soll. Informationen zu den Zeichenketteneinschränkungen, die Amazon Cognito auf diese Parameter anwendet, finden Sie unter [MessageTemplateType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_MessageTemplateType.html).

**smsMessage**  
Die benutzerdefinierte SMS-Nachricht, die an die Benutzer gesendet wird. Muss den in der Anforderung erhaltenen `codeParameter`-Wert enthalten, den Sie empfangen haben.

**emailMessage**  
Die benutzerdefinierte E-Mail-Nachricht, die an Ihre Benutzer gesendet werden soll. Sie können die HTML-Formatierung im `emailMessage`-Parameter verwenden. Muss den in der Anforderung erhaltenen `codeParameter`-Wert enthalten, den Sie als die Variable `{####}` empfangen haben. Amazon Cognito kann den `emailMessage`-Parameter nur verwenden, wenn das `EmailSendingAccount`-Attribut des Benutzerpools `DEVELOPER` lautet. Wenn das `EmailSendingAccount`-Attribut des Benutzerpools nicht `DEVELOPER` lautet und ein `emailMessage`-Parameter ausgegeben wird, generiert Amazon Cognito einen 400-Fehlercode `com.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException`. Wenn Sie den Amazon Simple Email Service (Amazon SES) zum Senden von E-Mail-Nachrichten verwenden möchten, lautet das `EmailSendingAccount`-Attribut eines Benutzerpools `DEVELOPER`. Andernfalls lautet der Wert `COGNITO_DEFAULT`.

**emailSubject**  
Die Betreffzeile für die benutzerdefinierte Nachricht. Sie können den `emailSubject` Parameter nur verwenden, wenn das EmailSendingAccount Attribut des Benutzerpools `DEVELOPER` Wenn das `EmailSendingAccount`-Attribut des Benutzerpools nicht `DEVELOPER` lautet und Amazon Cognito einen `emailSubject`-Parameter ausgibt, generiert Amazon Cognito einen 400-Fehlercode `com.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException`. Wenn Sie den Amazon Simple Email Service (Amazon SES) zum Senden von E-Mail-Nachrichten verwenden möchten, lautet das `EmailSendingAccount`-Attribut eines Benutzerpools `DEVELOPER`. Andernfalls lautet der Wert `COGNITO_DEFAULT`.

## Benutzerdefinierte Nachricht für das Registrierbeispiel
<a name="aws-lambda-triggers-custom-message-example"></a>

Diese Lambda-Beispielfunktion passt eine benutzerdefinierte E-Mail oder SMS-Nachricht an, wenn der Service eine App zum Senden eines Verifizierungscodes an den Benutzer benötigt.

Amazon Cognito kann einen Lambda-Auslöser bei verschiedenen Ereignissen aufrufen: nach der Registrierung, beim erneuten Senden eines Verifizierungscodes, bei einem vergessenen Passwort oder bei der Verifizierung eines Benutzerattributs. Die Antwort umfasst Nachrichten sowohl für SMS als auch für E-Mail. Die Nachricht muss den Codeparameter `"####"` enthalten. Dieser Parameter ist der Platzhalter für den Verifizierungscode, den der Benutzer erhält.

Die maximale Länge einer E-Mail-Nachricht beträgt 20.000 UTF-8-Zeichen. Diese Länge beinhaltet den Verifizierungscode. In diesen E-Mail-Nachrichten können Sie HTML-Tags verwenden.

Die maximale Länge von SMS-Nachrichten beträgt 140 UTF-8-Zeichen. Diese Länge beinhaltet den Verifizierungscode.

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

```
const handler = async (event) => {
  if (event.triggerSource === "CustomMessage_SignUp") {
    const message = `Thank you for signing up. Your confirmation code is ${event.request.codeParameter}.`;
    event.response.smsMessage = message;
    event.response.emailMessage = message;
    event.response.emailSubject = "Welcome to the service.";
  }
  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 ]

```
{
	"version": "1",
	"region": "us-west-2",
	"userPoolId": "us-west-2_EXAMPLE",
	"userName": "test-user",
	"callerContext": {
		"awsSdkVersion": "aws-sdk-unknown-unknown",
		"clientId": "1example23456789"
	},
	"triggerSource": "CustomMessage_SignUp",
	"request": {
		"userAttributes": {
			"sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
			"cognito:user_status": "CONFIRMED",
			"email_verified": "true",
			"phone_number_verified": "true",
			"phone_number": "+12065551212",
			"email": "test-user@example.com"
		},
		"codeParameter": "{####}",
		"linkParameter": "{##Click Here##}",
		"usernameParameter": "None"
	},
	"response": {
		"smsMessage": "None",
		"emailMessage": "None",
		"emailSubject": "None"
	}
}
```

------

## Benutzerdefinierte Nachricht für das Beispiel, bei dem der Administrator einen Benutzer anlegt
<a name="aws-lambda-triggers-custom-message-admin-example"></a>

Die Anfrage, die Amazon Cognito an diese Lambda-Funktion für eine benutzerdefinierte Beispielnachricht gesendet hat, hat den `triggerSource` Wert `CustomMessage_AdminCreateUser` und einen Benutzernamen und ein temporäres Passwort. Die Funktion wird `${event.request.codeParameter}` anhand des temporären Kennworts in der Anfrage und anhand des Benutzernamens in `${event.request.usernameParameter}` der Anfrage aufgefüllt.

Ihre benutzerdefinierten Nachrichten müssen die Werte von `codeParameter` und `usernameParameter` in `smsMessage` und `emailMessage` in das Antwortobjekt einfügen. In diesem Beispiel schreibt die Funktion dieselbe Nachricht in die Antwortfelder `event.response.smsMessage` und`event.response.emailMessage`.

Die maximale Länge einer E-Mail-Nachricht beträgt 20.000 UTF-8-Zeichen. Diese Länge beinhaltet den Verifizierungscode. Sie können HTML-Tags in diesen E-Mails verwenden. Die maximale Länge von SMS-Nachrichten beträgt 140 UTF-8-Zeichen. Diese Länge beinhaltet den Verifizierungscode.

Die Antwort umfasst Nachrichten sowohl für SMS als auch für E-Mail. 

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

```
const handler = async (event) => {
  if (event.triggerSource === "CustomMessage_AdminCreateUser") {
    const message = `Welcome to the service. Your user name is ${event.request.usernameParameter}. Your temporary password is ${event.request.codeParameter}`;
    event.response.smsMessage = message;
    event.response.emailMessage = message;
    event.response.emailSubject = "Welcome to the service";
  }
  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 ]

```
{
  "version": 1,
  "triggerSource": "CustomMessage_AdminCreateUser",
  "region": "<region>",
  "userPoolId": "<userPoolId>",
  "userName": "<userName>",
  "callerContext": {
      "awsSdk": "<calling aws sdk with version>",
      "clientId": "<apps client id>",
      ...
  },
  "request": {
      "userAttributes": {
          "phone_number_verified": false,
          "email_verified": true,
           ...
      },
      "codeParameter": "####",
      "usernameParameter": "username"
  },
  "response": {
      "smsMessage": "<custom message to be sent in the message with code parameter and username parameter>"
      "emailMessage": "<custom message to be sent in the message with code parameter and username parameter>"
      "emailSubject": "<custom email subject>"
  }
}
```

------

# Benutzerdefinierter Lambda-Auslöser für Sender
<a name="user-pool-lambda-custom-sender-triggers"></a>

Das Lambda löst E-Mail `CustomEmailSender` - und SMS-Benachrichtigungen von Drittanbietern in Benutzerpools aus und `CustomSMSSender` unterstützt diese. Sie können SMS- und E-Mail-Anbieter auswählen, um Benachrichtigungen an Benutzer aus Ihrem Lambda-Funktionscode zu senden. Wenn Amazon Cognito Einladungen, MFA-Codes, Bestätigungscodes, Bestätigungscodes und temporäre Passwörter an Benutzer sendet, aktivieren die Ereignisse Ihre konfigurierten Lambda-Funktionen. Amazon Cognito sendet den Code und die temporären Passwörter (Geheimnisse) an Ihre aktivierten Lambda-Funktionen. Amazon Cognito verschlüsselt diese Geheimnisse mit einem vom AWS KMS Kunden verwalteten Schlüssel und dem. AWS Encryption SDK Die AWS Encryption SDK ist eine clientseitige Verschlüsselungsbibliothek, mit der Sie generische Daten ver- und entschlüsseln können.

**[CustomEmailSender](user-pool-lambda-custom-email-sender.md)**  
Amazon Cognito ruft diesen Auslöser auf, um E-Mail-Benachrichtigungen an Benutzer zu senden. 

**[Custom (Benutzerdefiniert)SMSSender](user-pool-lambda-custom-sms-sender.md)**  
Amazon Cognito ruft diesen Auslöser auf, um SMS-Benachrichtigungen an Benutzer zu senden.

## Konzepte der Verschlüsselung
<a name="user-pool-lambda-custom-sender-triggers-resources"></a>

Amazon Cognito sendet Benutzercodes in den Ereignissen, die es an benutzerdefinierte Absenderauslöser sendet, nicht im Klartext. Die Lambda-Funktionen müssen die Codes in den Ereignissen entschlüsseln. Die folgenden Konzepte beschreiben die Verschlüsselungsarchitektur, die Ihre Funktion verwenden muss, um Codes abzurufen, die sie Benutzern zur Verfügung stellen kann.

**AWS KMS**  
AWS KMS ist ein verwalteter Dienst zum Erstellen und Steuern von AWS KMS Schlüsseln. Diese Schlüssel verschlüsseln Ihre Daten. Weitere Informationen finden Sie unter [Was ist AWS Key Management Service?](/kms/latest/developerguide/overview.html).

**KMS-Schlüssel**  
Ein KMS-Schlüssel ist eine logische Darstellung eines kryptografischen Schlüssels. Der KMS-Schlüssel enthält Metadaten wie die Schlüssel-ID, das Erstellungsdatum, die Beschreibung und den Schlüsselstatus. Der KMS-Schlüssel enthält auch das zur Ver- und Entschlüsselung von Daten verwendete Schlüsselmaterial. Weitere Informationen finden Sie unter [Löschen von AWS -KMS-Schlüsseln](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys).

**Symmetrische KMS-Schlüssel**  
Ein symmetrischer KMS-Schlüssel ist ein 256-Bit-Verschlüsselungsschlüssel, der AWS KMS nicht unverschlüsselt verlässt. Um einen symmetrischen KMS-Schlüssel zu verwenden, müssen Sie anrufen AWS KMS. Amazon Cognito verwendet symmetrische Schlüssel. Derselbe Schlüssel verschlüsselt und entschlüsselt. Weitere Informationen finden Sie unter [Symmetrische KMS-Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). 

## Wissenswertes über Lambda-Trigger mit benutzerdefiniertem Sender
<a name="user-pool-lambda-custom-sender-triggers-things-to-know"></a>
+ Sie können das AWS CLI oder SDK verwenden, um Ihre Benutzerpools für die Verwendung dieser Lambda-Auslöser zu konfigurieren. Diese Konfigurationen sind über die Amazon-Cognito-Konsole nicht verfügbar.

  Die `UpdateUserPool` Operation legt die Lambda-Konfiguration fest. Anfragen für diesen Vorgang erfordern alle Parameter Ihres Benutzerpools *und* die Parameter, die Sie ändern möchten. Wenn Sie nicht alle relevanten Parameter angeben, legt Amazon Cognito die Werte aller fehlenden Parameter auf ihre Standardwerte fest. Fügen Sie, wie im folgenden AWS CLI-Beispiel gezeigt, Einträge für alle Lambda-Funktionen hinzu, die Sie zu Ihrem Benutzerpool hinzufügen oder in diesem behalten möchten. Weitere Informationen finden Sie unter [Aktualisierung der Benutzerpool- und App-Client-Konfiguration](cognito-user-pool-updating.md).

  ```
      #Send this parameter in an 'aws cognito-idp update-user-pool' CLI command, including any existing 
      #user pool configurations. This snippet also includes a pre sign-up trigger for syntax reference. The pre sign-up trigger
      #doesn't have a role in custom sender triggers.
                
        --lambda-config "PreSignUp=lambda-arn, \
                         CustomSMSSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \
                         CustomEmailSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \
                         KMSKeyID=key-id"
  ```

  Für Anfragen, die den JSON-Text `UpdateUserPool` des folgenden `LambdaConfig` Snippets verwenden, werden benutzerdefinierte SMS- und E-Mail-Absenderfunktionen zugewiesen.

  ```
  "LambdaConfig": {
     "KMSKeyID": "arn:aws:kms:us-east-1:111122223333:key/a6c4f8e2-0c45-47db-925f-87854bc9e357",
     "CustomEmailSender": {
        "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction",
        "LambdaVersion": "V1_0"
     },
     "CustomSMSSender": {
        "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction",
        "LambdaVersion": "V1_0"
     }
  ```
+ Um einen benutzerdefinierten Lambda-Sender-Trigger mit einem `update-user-pool` AWS CLI Befehl zu entfernen, lassen Sie den `CustomEmailSender` Parameter `CustomSMSSender` oder von weg `--lambda-config` und schließen Sie alle anderen Trigger ein, die Sie mit Ihrem Benutzerpool verwenden möchten.

  Wenn Sie einen benutzerdefinierten Lambda-Auslöser für Sender mit der API-Anfrage `UpdateUserPool` entfernen möchten, löschen Sie `CustomSMSSender` oder `CustomEmailSender` aus dem Anfragetext, der den Rest der Benutzerpool-Konfiguration enthält.
+ Amazon Cognito maskiert reservierte Zeichen wie `<` (`&lt;`) und `>` (`&gt;`) im temporären Passwort Ihres Benutzers im HTML-Format. Diese Zeichen können in temporären Passwörtern, die Amazon Cognito an Ihre benutzerdefinierte E-Mail-Senderfunktion sendet, jedoch nicht in temporären Verifizierungscodes vorkommen. Um temporäre Passwörter senden zu können, muss Ihre Lambda-Funktion die Maskierung dieser Zeichen aufheben, nachdem sie das Passwort entschlüsselt hat und bevor sie die Nachricht an Ihren Benutzer sendet.

## Lambda-Trigger mit benutzerdefiniertem Absender aktivieren
<a name="enable-custom-sender-lambda-trigger"></a>

Um benutzerdefinierte Logik zum Senden von SMS- oder E-Mail-Nachrichten für Ihren Benutzerpool zu verwenden, richten Sie benutzerdefinierte Absender-Trigger ein. Anhand des folgenden Verfahrens weisen Sie Ihrem Benutzerpool einen benutzerdefinierten SMS-Auslöser, einen benutzerdefinierten E-Mail-Auslöser oder beides zu. Nachdem Sie Ihren benutzerdefinierten Absender-Trigger hinzugefügt haben, sendet Amazon Cognito immer Benutzerattribute, einschließlich der Telefonnummer und des Einmalcodes, an Ihre Lambda-Funktion, anstatt das Standardverhalten, das eine SMS- oder E-Mail-Nachricht sendet.

1. Erstellen Sie in () einen [symmetrischen Verschlüsselungsschlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). AWS Key Management Service AWS KMS Amazon Cognito generiert Geheimnisse — temporäre Passwörter, Bestätigungscodes, Einmalkennwörter für die Authentifizierung und Bestätigungscodes — und verwendet dann diesen KMS-Schlüssel, um die Geheimnisse zu verschlüsseln. [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) Sie können dann die Funktion AWS Encryption SDK in Ihrer Lambda-Funktion verwenden, um die Geheimnisse zu entschlüsseln und sie im Klartext an den Benutzer zu senden.

1. Der IAM-Prinzipal, der Ihren Benutzerpool erstellt oder aktualisiert, erstellt einen einmaligen Zuschuss für den KMS-Schlüssel, den Amazon Cognito zur Verschlüsselung des Codes verwendet. Erteilen Sie diesem `CreateGrant` Prinzipalberechtigungen für Ihren KMS-Schlüssel. Damit dieses Beispiel für eine KMS-Schlüsselrichtlinie wirksam wird, muss der Administrator, der den Benutzerpool aktualisiert, mit einer Sitzung mit angenommener Rolle für die IAM-Rolle angemeldet sein. `arn:aws:iam::111222333444:role/my-example-administrator-role` 

   Wenden Sie die folgende, an Ihre Umgebung angepasste, ressourcenbasierte Richtlinie auf Ihren KMS-Schlüssel an.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::111122223333:role/my-example-administrator-role"
           },
           "Action": "kms:CreateGrant",
           "Resource": "arn:aws:kms:us-west-2:111122223333:key/1example-2222-3333-4444-999example",
           "Condition": {
               "StringEquals": {
                  "kms:EncryptionContext:userpool-id": "us-west-2_EXAMPLE"
               }
           }
       },
       {
           "Sid": "Allow Lambda to decrypt",
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::111122223333:role/my-lambda-function-role"
           },
           "Action": "kms:Decrypt",
           "Resource": "*"
       }]
   }
   ```

------

1. Erstellen Sie eine Lambda-Funktion für den benutzerdefinierten Sender-Auslöser. Amazon Cognito verwendet das [AWS -Verschlüsselungs-SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html), um die Secrets, temporären Passwörter und Codes zu verschlüsseln, die die API-Anfragen Ihrer Benutzer autorisieren.

   1. Weisen Sie eine [Lambda-Ausführungsrolle](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) zu, die mindestens über `kms:Decrypt` Berechtigungen für Ihren KMS-Schlüssel verfügt.

   1. Verfassen Sie den Lambda-Funktionscode, um Ihre Nachrichten zu senden. Das Eingabeereignis für Ihre Funktion enthält ein Geheimnis. Entschlüsseln Sie in Ihrer Funktion das Geheimnis mit dem AWS Encryption SDK und verarbeiten Sie alle relevanten Metadaten. Senden Sie dann den Code, Ihre eigene benutzerdefinierte Nachricht und die Zieltelefonnummer an die benutzerdefinierte API, die Ihre Nachricht übermittelt.

   1. Fügen Sie das AWS Encryption SDK zu Ihrer Lambda-Funktion hinzu. Weitere Informationen finden Sie unter [AWS -Verschlüsselungs-SDK – Programmiersprachen](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/programming-languages.html). Aktualisieren Sie das Lambda-Paket, indem Sie die folgenden Schritte ausführen.

      1. Exportieren Sie Ihre Lambda-Funktion als ZIP-Datei in die AWS-Managementkonsole.

      1. Öffnen Sie Ihre Funktion und fügen Sie die AWS Encryption SDK hinzu. Weitere Informationen und Download-Links finden Sie unter [AWS Encryption SDK – Programmiersprachen](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/programming-languages.html) im *Entwicklerhandbuch zum AWS Encryption SDK *.

      1. Komprimieren Sie Ihre Funktion mit Ihren SDK-Abhängigkeiten und laden Sie die Funktion in Lambda hoch. Weitere Informationen finden Sie unter [Bereitstellen von Lambda-Funktionen als ZIP-Dateiarchive](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html#configuration-function-create) im *Entwicklerhandbuch zu AWS Lambda *.

1. Gewähren Sie dem Amazon-Cognito-Serviceprinzipal `cognito-idp.amazonaws.com`-Zugriff, um die Lambda-Funktion aufzurufen.

   Der folgende AWS CLI Befehl erteilt Amazon Cognito die Erlaubnis, Ihre Lambda-Funktion aufzurufen:

   ```
   aws lambda add-permission --function-name lambda_arn --statement-id "CognitoLambdaInvokeAccess" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
   ```

1. Generieren Sie eine [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Anfrage mit einem `LambdaConfig` Parameter, der benutzerdefinierte Lambda-Sender-Trigger hinzufügt. Sie können in der Amazon Cognito Cognito-Konsole keine Auslöser dieses Typs hinzufügen. Benutzerdefinierte Absender-Trigger erfordern die `LambdaConfig` Parameter `KMSKeyID` und `CustomSMSSender` oder `CustomEmailSender` (oder beide).

# Benutzerdefinierter Lambda-Auslöser für E-Mail-Sender
<a name="user-pool-lambda-custom-email-sender"></a>

Wenn Sie Ihrem Benutzerpool einen benutzerdefinierten E-Mail-Absender-Trigger zuweisen, ruft Amazon Cognito statt des Standardverhaltens eine Lambda-Funktion auf, wenn ein Benutzerereignis das Senden einer E-Mail-Nachricht erfordert. Mit einem benutzerdefinierten Absender-Trigger kann Ihre AWS Lambda Funktion E-Mail-Benachrichtigungen über eine von Ihnen gewählte Methode und einen Anbieter an Ihre Benutzer senden. Der benutzerdefinierte Code Ihrer Funktion muss alle E-Mail-Nachrichten aus Ihrem Benutzerpool verarbeiten und versenden.

Dieser Trigger eignet sich für Szenarien, in denen Sie möglicherweise mehr Kontrolle darüber haben möchten, wie Ihr Benutzerpool E-Mail-Nachrichten sendet. Ihre Lambda-Funktion kann den Aufruf von Amazon SES SES-API-Vorgängen anpassen, z. B. wenn Sie mehrere verifizierte Identitäten oder Kreuzungen verwalten möchten. AWS-Regionen Ihre Funktion kann auch Nachrichten an ein anderes Übermittlungsmedium oder einen Drittanbieter-Service weiterleiten.

Informationen zur Konfiguration eines benutzerdefinierten E-Mail-Absender-Triggers finden Sie unter[Lambda-Trigger mit benutzerdefiniertem Absender aktivieren](user-pool-lambda-custom-sender-triggers.md#enable-custom-sender-lambda-trigger).

## Benutzerdefinierte E-Mail-Sender-Lambda-Auslöser-Quellen
<a name="trigger-source"></a>

Die folgende Tabelle zeigt die auslösenden Ereignisse für benutzerdefinierte E-Mail-Auslöserquellen in Ihrem Lambda-Code.


| `TriggerSource value` | Veranstaltung | 
| --- | --- | 
| CustomEmailSender\$1SignUp | Ein Benutzer meldet sich an und Amazon Cognito sendet eine Willkommensnachricht. | 
| CustomEmailSender\$1Authentication | Ein Benutzer meldet sich an und Amazon Cognito sendet einen OTP- oder MFA-Code per E-Mail. | 
| CustomEmailSender\$1ForgotPassword | Ein Benutzer fordert einen Code an, um sein Passwort zurückzusetzen. | 
| CustomEmailSender\$1ResendCode | Ein Benutzer fordert einen Ersatzcode für die Kontobestätigung an. | 
| CustomEmailSender\$1UpdateUserAttribute | Ein Benutzer aktualisiert eine E-Mail-Adresse oder ein Telefonnummernattribut und Amazon Cognito sendet einen Code zur Verifizierung des Attributs. | 
| CustomEmailSender\$1VerifyUserAttribute | Ein Benutzer erstellt eine neue E-Mail-Adresse oder ein Telefonnummernattribut und Amazon Cognito sendet einen Code zur Verifizierung des Attributs. | 
| CustomEmailSender\$1AdminCreateUser | Sie erstellen einen neuen Benutzer in Ihrem Benutzerpool und Amazon Cognito sendet ihm ein temporäres Passwort. | 
| CustomEmailSender\$1AccountTakeOverNotification | Amazon Cognito erkennt einen Versuch, ein Benutzerkonto zu übernehmen, und sendet dem Benutzer eine Benachrichtigung. | 

## Benutzerdefinierte Lambda-Auslöserparameter für SMS-Sender
<a name="custom-email-sender-parameters"></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.

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

```
{
    "request": {
        "type": "customEmailSenderRequestV1",
        "code": "string",
        "clientMetadata": {
            "string": "string",
             . . .
            },
        "userAttributes": {
            "string": "string",
            . . .
         }
}
```

------

### Benutzerdefinierte E-Mail-Sender-Anforderungsparameter
<a name="custom-email-sender-request-parameters"></a>

**type**  
Die Anforderungsversion. Für ein benutzerdefiniertes E-Mail-Sender-Ereignis ist der Wert dieses Strings immer `customEmailSenderRequestV1`.

**Code**  
Der verschlüsselte Code, den Ihre Funktion entschlüsseln und an Ihren Benutzer senden kann.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für den benutzerdefinierten E-Mail-Sender-Auslöser der Lambda-Funktion bereitstellen können. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den Aktionen [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 verwenden. 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 Post-Authentifizierungsfunktion weiterleitet.  
Amazon Cognito sendet bei Ereignissen mit `ClientMetadata` den folgenden Triggerquellen an benutzerdefinierte E-Mail-Auslösefunktionen:  
+ `CustomEmailSender_ForgotPassword`
+ `CustomEmailSender_SignUp`
+ `CustomEmailSender_Authentication`
Amazon Cognito sendet keine Trigger-Ereignisse mit `ClientMetadata` der Quelle `CustomEmailSender_AccountTakeOverNotification` ein.

**userAttributes**  
Ein oder mehrere Schlüssel-Wert-Paare, die Benutzerattribute darstellen.

### Benutzerdefinierte E-Mail-Sender-Antwortparameter
<a name="custom-email-sender-response-parameters"></a>

Amazon Cognito erwartet keine zusätzlichen Rückgabeinformationen in der benutzerdefinierten E-Mail-Sender-Antwort. Ihre Lambda-Funktion muss das Ereignis interpretieren und den Code entschlüsseln und dann den Nachrichteninhalt übermitteln. Eine typische Funktion stellt eine E-Mail-Nachricht zusammen und leitet sie an ein SMTP-Relay eines Drittanbieters weiter.

## Codebeispiel
<a name="custom-email-sender-code-examples"></a>

Das folgende Beispiel für Node.js verarbeitet ein E–Mail-Nachrichtenereignis in Ihrer benutzerdefinierten Lambda-Funktion für E-Mail-Sender. In diesem Beispiel wird davon ausgegangen, dass Ihre Funktion zwei Umgebungsvariablen definiert hat.

**`KEY_ID`**  
Die ID des KMS-Schlüssels, den Sie zum Verschlüsseln und Entschlüsseln der Benutzercodes verwenden möchten.

**`KEY_ARN`**  
Der Amazon-Ressourcenname (ARN) des KMS-Schlüssels, den Sie zum Verschlüsseln und Entschlüsseln von Benutzercodes verwenden möchten.

**Um diese Funktion bereitzustellen**

1. Installieren Sie die neueste Version von NodeJS in Ihrem Developer Workspace.

1. Erstellen Sie ein neues NodeJS-Projekt in Ihrem Workspace.

1. Initialisieren Sie Ihr Projekt mit. `npm init -y`

1. Erstellen Sie das Skript für die Lambda-Funktion:`touch index.mjs`.

1. Fügen Sie den Inhalt des folgenden Beispiels in ein`index.mjs`.

1. Laden Sie die Projektabhängigkeit herunter, AWS Encryption SDK:`npm install @aws-crypto/client-node`.

1. Komprimieren Sie das Projektverzeichnis in eine Datei:`zip -r my_deployment_package.zip .`.

1. [Stellen Sie die ZIP-Datei für Ihre Funktion](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-package.html) bereit.

Diese Beispielfunktion entschlüsselt den Code und simuliert bei Anmeldeereignissen das Senden einer E-Mail-Nachricht an die E-Mail-Adresse des Benutzers.

```
import { KmsKeyringNode, buildClient, CommitmentPolicy } from '@aws-crypto/client-node';

// Configure the encryption SDK client with the KMS key from the environment variables
const { encrypt, decrypt } = buildClient(
    CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT
);

const generatorKeyId = process.env.KEY_ID;
const keyIds = [process.env.KEY_ARN];
const keyring = new KmsKeyringNode({ generatorKeyId, keyIds });

// Example function to simulate sending email.
// This example logs message details to CloudWatch Logs from your Lambda function.
// Update this function with custom logic that sends an email message to 'emailaddress' with body 'message'.
const sendEmail = async (emailAddress, message) => {
    // Log the destination with the email address masked.
    console.log(`Simulating email send to ${emailAddress.replace(/[^@.]/g, '*')}`);
    // Log the message with the code masked.
    console.log(`Message content: ${message.replace(/\b\d{6,8}\b/g, '********')}`);
    // Simulate API delay
    await new Promise(resolve => setTimeout(resolve, 100));
    console.log('Email sent successfully');
    return true;
};

export const handler = async (event) => {
    try {
        // Decrypt the secret code using encryption SDK
        let plainTextCode;
        if (event.request.code) {
            const { plaintext, messageHeader } = await decrypt(keyring, Buffer.from(event.request.code, 'base64'));
            plainTextCode = Buffer.from(plaintext).toString('utf-8');
        }

        // Handle different trigger sources
        if (event.triggerSource == 'CustomEmailSender_SignUp') {
            const emailAddress = event.request.userAttributes.email;
            const message = `Welcome! Your verification code is: ${plainTextCode}`;
            await sendEmail(emailAddress, message);
        }
        else if (event.triggerSource == 'CustomEmailSender_ResendCode') {
            // Handle resend code
        }
        else if (event.triggerSource == 'CustomEmailSender_ForgotPassword') {
            // Handle forgot password
        }
        else if (event.triggerSource == 'CustomEmailSender_UpdateUserAttribute') {
            // Handle update attribute
        }
        else if (event.triggerSource == 'CustomEmailSender_VerifyUserAttribute') {
            // Handle verify attribute
        }
        else if (event.triggerSource == 'CustomEmailSender_AdminCreateUser') {
            // Handle admin create user
        }
        else if (event.triggerSource == 'CustomEmailSender_Authentication') {
            // Handle authentication
        }
        else if (event.triggerSource == 'CustomEmailSender_AccountTakeOverNotification') {
            // Handle account takeover notification
        }

        return;
    } catch (error) {
        console.error('Error in custom email sender:', error);
        throw error;
    }
};
```

# Benutzerdefinierter Lambda-Auslöser für SMS-Sender
<a name="user-pool-lambda-custom-sms-sender"></a>

Wenn Sie Ihrem Benutzerpool einen benutzerdefinierten SMS-Absender-Trigger zuweisen, ruft Amazon Cognito statt des Standardverhaltens eine Lambda-Funktion auf, wenn ein Benutzerereignis das Senden einer SMS-Nachricht erfordert. Mit einem benutzerdefinierten Absender-Trigger kann Ihre AWS Lambda Funktion SMS-Benachrichtigungen über eine von Ihnen gewählte Methode und einen Anbieter an Ihre Benutzer senden. Der benutzerdefinierte Code Ihrer Funktion muss alle SMS-Nachrichten aus Ihrem Benutzerpool verarbeiten und versenden.

Dieser Trigger eignet sich für Szenarien, in denen Sie möglicherweise mehr Kontrolle darüber haben möchten, wie Ihr Benutzerpool SMS-Nachrichten sendet. Ihre Lambda-Funktion kann den Aufruf von Amazon SNS SNS-API-Vorgängen anpassen, z. B. wenn Sie mehrere Originationen oder Kreuzungen verwalten möchten. IDs AWS-Regionen Ihre Funktion kann auch Nachrichten an ein anderes Übermittlungsmedium oder einen Drittanbieter-Service weiterleiten.

Informationen zur Konfiguration eines benutzerdefinierten E-Mail-Absender-Triggers finden Sie unter[Lambda-Trigger mit benutzerdefiniertem Absender aktivieren](user-pool-lambda-custom-sender-triggers.md#enable-custom-sender-lambda-trigger).

## Benutzerdefinierte SMS-Sender-Lambda-Auslöser-Quellen
<a name="trigger-source"></a>

Die folgende Tabelle zeigt das auslösende Ereignis für benutzerdefinierte SMS-Auslöserquellen in Ihrem Lambda-Code.


| `TriggerSource value` | Veranstaltung | 
| --- | --- | 
| CustomSMSSender\$1SignUp | Ein Benutzer meldet sich an und Amazon Cognito sendet eine Willkommensnachricht. | 
| CustomSMSSender\$1ForgotPassword | Ein Benutzer fordert einen Code an, um sein Passwort zurückzusetzen. | 
| CustomSMSSender\$1ResendCode | Ein Benutzer fordert einen neuen Code an, um seine Registrierung zu bestätigen. | 
| CustomSMSSender\$1VerifyUserAttribute | Ein Benutzer erstellt eine neue E-Mail-Adresse oder ein Telefonnummernattribut und Amazon Cognito sendet einen Code zur Verifizierung des Attributs. | 
| CustomSMSSender\$1UpdateUserAttribute | Ein Benutzer aktualisiert eine E-Mail-Adresse oder ein Telefonnummernattribut und Amazon Cognito sendet einen Code zur Verifizierung des Attributs. | 
| CustomSMSSender\$1Authentication | Ein Benutzer meldet sich an und Amazon Cognito sendet einen SMS-OTP- oder MFA-Code. | 
| CustomSMSSender\$1AdminCreateUser | Sie erstellen einen neuen Benutzer in Ihrem Benutzerpool und Amazon Cognito sendet ihm ein temporäres Passwort. | 

## Benutzerdefinierte Lambda-Auslöserparameter für SMS-Sender
<a name="custom-sms-sender-parameters"></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.

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

```
{
    "request": {
        "type": "customSMSSenderRequestV1",
        "code": "string",
        "clientMetadata": {
            "string": "string",
             . . .
            },
        "userAttributes": {
            "string": "string",
            . . .
         }
}
```

------

### Benutzerdefinierte SMS-Sender-Anforderungsparameter
<a name="custom-sms-sender-request-parameters"></a>

**type**  
Die Anforderungsversion. Für ein benutzerdefiniertes SMS-Sender-Ereignis ist der Wert dieses Strings immer `customSMSSenderRequestV1`.

**Code**  
Der verschlüsselte Code, den Ihre Funktion entschlüsseln und an Ihren Benutzer senden kann.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für den benutzerdefinierten SMS-Sender-Auslöser der Lambda-Funktion bereitstellen können. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den Aktionen [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 verwenden. 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 Post-Authentifizierungsfunktion weiterleitet.

**userAttributes**  
Ein oder mehrere Schlüssel-Wert-Paare, die Benutzerattribute darstellen.

### Benutzerdefinierte SMS-Sender-Antwortparameter
<a name="custom-sms-sender-response-parameters"></a>

Amazon Cognito erwartet keine zusätzlichen Rückgabeinformationen in der Antwort. Ihre Funktion kann API-Operationen verwenden, um Ihre Ressourcen abzufragen und zu ändern oder Ereignismetadaten in einem externen System aufzuzeichnen.

## Codebeispiel
<a name="custom-sms-sender-code-examples"></a>

Das folgende Beispiel für Node.js verarbeitet ein SMS-Nachrichtenereignis in Ihrer benutzerdefinierten Lambda-Funktion für SMS-Sender. In diesem Beispiel wird davon ausgegangen, dass Ihre Funktion zwei Umgebungsvariablen definiert hat.

**`KEY_ID`**  
Die ID des KMS-Schlüssels, den Sie zum Verschlüsseln und Entschlüsseln der Benutzercodes verwenden möchten.

**`KEY_ARN`**  
Der Amazon-Ressourcenname (ARN) des KMS-Schlüssels, den Sie zum Verschlüsseln und Entschlüsseln von Benutzercodes verwenden möchten.

**Um diese Funktion bereitzustellen**

1. Installieren Sie die neueste Version von NodeJS in Ihrem Developer Workspace.

1. Erstellen Sie ein neues NodeJS-Projekt in Ihrem Workspace.

1. Initialisieren Sie Ihr Projekt mit. `npm init -y`

1. Erstellen Sie das Skript für die Lambda-Funktion:`touch index.mjs`.

1. Fügen Sie den Inhalt des folgenden Beispiels in ein`index.mjs`.

1. Laden Sie die Projektabhängigkeit herunter, AWS Encryption SDK:`npm install @aws-crypto/client-node`.

1. Komprimieren Sie das Projektverzeichnis in eine Datei:`zip -r my_deployment_package.zip .`.

1. [Stellen Sie die ZIP-Datei für Ihre Funktion](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-package.html) bereit.

```
import { KmsKeyringNode, buildClient, CommitmentPolicy } from '@aws-crypto/client-node';

// Configure the encryption SDK client with the KMS key from the environment variables
const { encrypt, decrypt } = buildClient(
    CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT
);

const generatorKeyId = process.env.KEY_ID;
const keyIds = [process.env.KEY_ARN];
const keyring = new KmsKeyringNode({ generatorKeyId, keyIds });

// Example function to simulate sending SMS.
// This example logs message details to CloudWatch Logs from your Lambda function.
// Update this function with custom logic that sends an SMS message to 'phoneNumber' with body 'message'.
const sendSMS = async (phoneNumber, message) => {
    // Log the destination with the phone number masked.
    console.log(`Simulating SMS send to ${phoneNumber.replace(/[^+]/g, '*')}`);
    // Log the message with the code masked.
    console.log(`Message content: ${message.replace(/\b\d{6,8}\b/g, '********')}`);    
    // Simulate API delay
    await new Promise(resolve => setTimeout(resolve, 100));
    console.log('SMS sent successfully');
    return true;
};

export const handler = async (event) => {
    try {
        // Decrypt the secret code using encryption SDK
        let plainTextCode;
        if (event.request.code) {
            const { plaintext, messageHeader } = await decrypt(keyring, Buffer.from(event.request.code, 'base64'));
            plainTextCode = Buffer.from(plaintext).toString('utf-8');
        }

        // Handle different trigger sources
        if (event.triggerSource == 'CustomSMSSender_SignUp') {
            const phoneNumber = event.request.userAttributes.phone_number;
            const message = `Welcome! Your verification code is: ${plainTextCode}`;
            await sendSMS(phoneNumber, message);
        }
        else if (event.triggerSource == 'CustomSMSSender_ResendCode') {
            // Handle resend code
        }
        else if (event.triggerSource == 'CustomSMSSender_ForgotPassword') {
            // Handle forgot password
        }
        else if (event.triggerSource == 'CustomSMSSender_UpdateUserAttribute') {
            // Handle update attribute
        }
        else if (event.triggerSource == 'CustomSMSSender_VerifyUserAttribute') {
            // Handle verify attribute
        }
        else if (event.triggerSource == 'CustomSMSSender_AdminCreateUser') {
            // Handle admin create user
        }
        return;
    } catch (error) {
        console.error('Error in custom SMS sender:', error);
        throw error;
    }
};
```

**Topics**
+ [Benutzerdefinierte SMS-Sender-Lambda-Auslöser-Quellen](#trigger-source)
+ [Benutzerdefinierte Lambda-Auslöserparameter für SMS-Sender](#custom-sms-sender-parameters)
+ [Codebeispiel](#custom-sms-sender-code-examples)
+ [Bewerten von SMS-Nachrichtenfunktionen mit einer benutzerdefinierten SMS-Sender-Funktion](#sms-to-email-example)

## Bewerten von SMS-Nachrichtenfunktionen mit einer benutzerdefinierten SMS-Sender-Funktion
<a name="sms-to-email-example"></a>

Eine benutzerdefinierte Lambda-Funktion für SMS-Sender akzeptiert die SMS-Nachrichten, die Ihr Benutzerpool senden würde, und die Funktion stellt den Inhalt basierend auf Ihrer benutzerdefinierten Logik bereit. Amazon Cognito sendet die [Benutzerdefinierte Lambda-Auslöserparameter für SMS-Sender](#custom-sms-sender-parameters) an Ihre Funktion. Ihre Funktion kann diese Informationen nach Ihren Wünschen verarbeiten. Sie können den Code beispielsweise an ein Amazon Simple Notification Service (Amazon SNS)-Thema senden. Ein Abonnent eines Amazon-SNS-Themas kann eine SMS-Nachricht, ein HTTPS-Endpunkt oder eine E-Mail-Adresse sein.

Informationen zum Erstellen einer Testumgebung für Amazon Cognito SMS-Messaging mit einer benutzerdefinierten Lambda-Funktion für SMS-Absender finden Sie unter [amazon-cognito-user-pool- development-and-testing-with - sms-redirected-to-email](https://github.com/aws-samples/amazon-cognito-user-pool-development-and-testing-with-sms-redirected-to-email) in der [aws-samples-Bibliothek](https://github.com/aws-samples) unter. GitHub Das Repository enthält AWS CloudFormation Vorlagen, mit denen Sie einen neuen Benutzerpool erstellen oder mit einem Benutzerpool arbeiten können, den Sie bereits haben. Diese Vorlagen erstellen Lambda-Funktionen und ein Amazon-SNS-Thema. Die Lambda-Funktion, die die Vorlage als benutzerdefinierten SMS-Sender-Auslöser zuweist, leitet Ihre SMS-Nachrichten an die Abonnenten des Amazon-SNS-Themas um. 

Wenn Sie diese Lösung in einem Benutzerpool bereitstellen, werden alle Nachrichten, die Amazon Cognito normalerweise mit SNS-Messaging sendet, mit der Lambda-Funktion stattdessen an eine zentrale E-Mail-Adresse gesendet. Verwenden Sie diese Lösung, um SMS-Nachrichten anzupassen und in der Vorschau anzuzeigen und um die Benutzerpool-Ereignisse zu testen, die dazu führen, dass Amazon Cognito eine SMS-Nachricht sendet. Nachdem Sie Ihre Tests abgeschlossen haben, setzen Sie den CloudFormation Stack zurück oder entfernen Sie die Zuweisung der benutzerdefinierten SMS-Absenderfunktion aus Ihrem Benutzerpool.

**Wichtig**  
Verwenden Sie die Vorlagen in [amazon-cognito-user-pool- development-and-testing-with -](https://github.com/aws-samples/amazon-cognito-user-pool-development-and-testing-with-sms-redirected-to-email) nichtsms-redirected-to-email, um eine Produktionsumgebung zu erstellen. Die benutzerdefinierte Lambda-Funktion für SMS-Sender in der Lösung *simuliert* SMS-Nachrichten, die Lambda-Funktion sendet sie jedoch alle an eine einzige zentrale E-Mail-Adresse. Bevor Sie SMS-Nachrichten in einem Amazon-Cognito-Benutzerpool in der Produktion senden können, müssen Sie die unter [Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools](user-pool-sms-settings.md) angegebenen Anforderungen erfüllen.

# Verwalten von Benutzern in Ihrem Benutzerpool
<a name="managing-users"></a>

Nachdem Sie einen Benutzerpool erstellt haben, können Sie Benutzerkonten erstellen, bestätigen und verwalten. Mit Amazon-Cognito-Benutzerpool-Gruppen können Sie Ihre Benutzer und ihren Zugriff auf Ressourcen durch die Zuweisung von IAM-Rollen zu Gruppen verwalten.

Die Verwaltung von Benutzern in Ihrem Amazon Cognito Cognito-Benutzerpool umfasst eine Vielzahl von Konfigurationsoptionen und Verwaltungsaufgaben. Benutzerpools können auf Millionen von Benutzern skaliert werden. Ein Benutzerverzeichnis dieser Größenordnung erfordert gleichermaßen skalierbare und wiederholbare Verwaltungstools. Möglicherweise möchten Sie viele Benutzerprofile erstellen, inaktive Benutzer verwalten, Governance- und Compliance-Berichte erstellen oder Self-Service-Tools einrichten, bei denen Benutzer die meiste Arbeit erledigen. Nachdem Sie einen Benutzerpool erstellt haben, können Sie steuern, wie Benutzer sich registrieren und ihre Konten bestätigen, einschließlich der Anforderung, dass E-Mail oder Telefonnummer verifiziert werden müssen. Administratoren können Benutzerkonten auch direkt erstellen und die Willkommensnachrichten und Kennwortanforderungen anpassen.

Benutzerpools verfügen über Benutzergruppen, in denen Sie den Zugriff auf Ressourcen auf der Grundlage der Gruppenmitgliedschaft eines Benutzers verwalten können. Sie können diesen Gruppen IAM-Rollen zuweisen, um den Zugriff AWS-Services mit Identitätspools zu verwalten. Die Gruppenmitgliedschaft der Benutzer ist sowohl in ID- als auch in Zugriffstoken enthalten. Mit diesen Informationen können Sie zur Laufzeit in Ihrer Anwendung oder mit einer Richtlinien-Engine wie Amazon Verified Permissions Entscheidungen zur Zugriffskontrolle treffen.

Benutzerpools haben oft viele Benutzer. Sie werden häufig nach Benutzerkonten suchen und diese aktualisieren müssen. Die Amazon Cognito Cognito-Konsole und die API unterstützen die Abfrage von Benutzern anhand von Standardattributen wie Benutzername, E-Mail und Telefonnummer. Administratoren können auch Passwörter zurücksetzen, Konten deaktivieren und den Verlauf von Benutzerereignissen einsehen.

Für die Migration vorhandener Benutzerdaten bietet Amazon Cognito Optionen zum Importieren von Benutzern aus einer CSV-Datei und zur Verwendung eines [Lambda-Triggers](user-pool-lambda-migrate-user.md), um Benutzer bei der ersten Anmeldung automatisch zu migrieren. Diese Optionen unterstützen Benutzerübergänge von anderen Benutzerverzeichnissen zu Ihrem Benutzerpool.

Sie können die Benutzerverwaltungsfunktionen in Benutzerpools verwenden, um eine genaue Kontrolle über den Benutzerlebenszyklus und die Authentifizierungserfahrung zu haben. Die Kombination aus Self-Service-Registrierung, vom Administrator erstellten Konten, Gruppen und Migrationstools macht Amazon Cognito Cognito-Benutzerpools zu einem flexiblen Benutzerverzeichnis.

**Topics**
+ [Konfigurieren von Richtlinien für die Benutzererstellung](user-pool-settings-admin-create-user-policy.md)
+ [Registrieren und Bestätigen von Benutzerkonten](signing-up-users-in-your-app.md)
+ [Erstellen von Benutzerkonten als Administrator](how-to-create-user-accounts.md)
+ [Hinzufügen von Gruppen zu einem Benutzerpool](cognito-user-pools-user-groups.md)
+ [Verwalten von und Suchen nach Benutzerkonten](how-to-manage-user-accounts.md)
+ [Passwörter, Kontowiederherstellung und Passwortrichtlinien](managing-users-passwords.md)
+ [Importieren von Benutzern in einen Benutzerpool](cognito-user-pools-import-users.md)
+ [Mit Benutzerattributen arbeiten](user-pool-settings-attributes.md)

# Konfigurieren von Richtlinien für die Benutzererstellung
<a name="user-pool-settings-admin-create-user-policy"></a>

Ihr Benutzerpool kann Benutzern gestatten, sich zu registrieren, oder Sie können sie als Administrator erstellen. Sie können auch kontrollieren, in welchem Umfang der Verifizierungs- und Bestätigungsprozess nach der Registrierung in den Händen Ihrer Benutzer liegt. Beispielsweise möchten Sie eventuell Anmeldungen auf der Grundlage eines externen Validierungsprozesses überprüfen und akzeptieren. Diese Konfiguration bzw. die *Richtlinie für die Benutzererstellung durch Administratoren* legt auch die Zeit fest, die vergehen muss, bevor ein Benutzer sein Benutzerkonto nicht mehr bestätigen kann.

Amazon Cognito kann als Customer Identity and Access Management (CIAM)-Plattform für Ihre Software die Anforderungen Ihrer öffentlichen Kunden erfüllen. Ein Benutzerpool, der Registrierungen akzeptiert und über einen App-Client mit oder ohne verwaltetes Login verfügt, erstellt ein Benutzerprofil für jeden Benutzer im Internet, der Ihre öffentlich auffindbare App-Client-ID kennt und eine Registrierung anfordert. Ein registriertes Benutzerprofil kann Zugriffs- und Identitätstoken erhalten und auf Ressourcen zugreifen, die Sie für Ihre App autorisiert haben. Bevor Sie die Registrierung in Ihrem Benutzerpool aktivieren, überprüfen Sie Ihre Optionen und stellen Sie sicher, dass die Konfiguration Ihren Sicherheitsstandards entspricht. Stellen Sie die Option **Selbstregistrierung aktivieren** und `AllowAdminCreateUserOnly` ein, wie in den folgenden Verfahren beschrieben; gehen Sie dabei vorsichtig vor.

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

Das **Anmeldemenü** Ihres Benutzerpools enthält einige Einstellungen für die Registrierung und administrative Erstellung von Benutzern in Ihrem Benutzerpool.

**So konfigurieren Sie die Anmeldeerfahrung**

1. Wählen Sie unter **Von Cognito unterstützte Überprüfung und Bestätigung** aus, ob Sie **Cognito erlauben, automatisch Nachrichten zur Überprüfung und Bestätigung zu senden**. Wenn diese Einstellung aktiviert ist, sendet Amazon Cognito eine E-Mail- oder SMS-Nachricht an neue Benutzer mit einem Code, den sie Ihrem Benutzerpool vorlegen müssen. Dadurch wird bestätigt, dass sie Eigentümer der E-Mail-Adresse oder Telefonnummer sind, das entsprechende Attribut wird als verifiziert festgelegt und das Benutzerkonto für die Anmeldung bestätigt. Die von Ihnen ausgewählten **Attribute zur Überprüfung** bestimmen die Zustellungsmethoden und Ziele der Bestätigungsnachrichten.

1. Die **Überprüfung von Attributänderungen** ist nicht wichtig, wenn Sie Benutzer erstellen, sondern bezieht sich auf die Überprüfung von Attributen. Sie können Benutzern, die ihre [Anmeldeattribute](user-pool-settings-attributes.md#user-pool-settings-aliases.title) geändert, aber noch nicht verifiziert haben, gestatten, sich weiterhin entweder mit ihrem neuen oder ihrem ursprünglichen Attributwert anzumelden. Weitere Informationen finden Sie unter [Verifizieren, wenn Benutzer ihre E-Mail-Adresse oder Telefonnummer ändern](signing-up-users-in-your-app.md#verifying-when-users-change-their-email-or-phone-number).

1. Unter **Erforderliche Attribute** werden die Attribute angezeigt, für die ein Wert angegeben werden muss, bevor sich ein Benutzer registrieren kann oder Sie einen Benutzer erstellen können. Sie können die erforderlichen Attribute nur festlegen, wenn Sie einen Benutzerpool erstellen.

1. **Benutzerdefinierte Attribute** sind wichtig für den Benutzererstellungs- und Anmeldeprozess, da Sie einen Wert für *unveränderliche* benutzerdefinierte Attribute nur dann festlegen können, wenn Sie zuvor einen Benutzer erstellt haben. Weitere Informationen zu benutzerdefinierten Attributen finden Sie unter [Custom attributes (Benutzerdefinierte Attribute)](user-pool-settings-attributes.md#user-pool-settings-custom-attributes).

1. Wählen Sie unter **Selbstregistrierung** die Option **Selbstregistrierung aktivieren** aus, wenn Sie möchten, dass Benutzer mit der [nicht authentifizierten](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html#user-pool-apis-auth-unauth) `SignUp`-API ein neues Konto erstellen können. Wenn Sie die Selbstregistrierung deaktivieren, können Sie neue Benutzer nur als Administrator, in der Amazon Cognito Cognito-Konsole oder mit [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API-Anfragen erstellen. **In einem Benutzerpool, in dem die Selbstregistrierung inaktiv ist, kehren [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API-Anfragen zurück `NotAuthorizedException` und bei verwalteter Anmeldung wird kein Anmeldelink angezeigt.**

Für Benutzerpools, in denen Sie Benutzer als Administrator erstellen möchten, können Sie die Dauer ihrer temporären Passwörter in der Einstellung im Menü **Authentifizierungsmethoden** unter **Von Administratoren festgelegte temporäre Passwörter laufen ab in** konfigurieren.

Ein weiteres wichtiges Element bei der Erstellung von Benutzern als Administrator ist die Einladungsnachricht. Wenn Sie einen neuen Benutzer erstellen, sendet Amazon Cognito diesem eine Nachricht mit einem Link zu Ihrer App, damit er sich zum ersten Mal anmelden kann. Passen Sie diese Nachrichtenvorlage im Menü **Authentifizierungsmethoden** unter **Nachrichtenvorlagen an**.

Sie können [vertrauliche App-Clients](user-pool-settings-client-apps.md#user-pool-settings-client-app-client-types.title), in der Regel Webanwendungen, mit einem geheimen Client-Secret konfigurieren, das eine Anmeldung ohne das geheime App-Client-Secret verhindert. Aus Sicherheitsgründen sollten Sie App-Client-Secrets nicht auf öffentlichen App-Clients, die in der Regel mobile Apps sind, verteilen. Sie können App-Clients mit Client-Geheimnissen im **App-Client-Menü** der Amazon Cognito Cognito-Konsole erstellen.

------
#### [ Amazon Cognito user pools API ]

Sie können die Parameter für die Erstellung von Benutzern in einem Benutzerpool programmgesteuert in einer [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 festlegen.

Das [AdminCreateUserConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AdminCreateUserConfig)Element legt Werte für die folgenden Eigenschaften eines Benutzerpools fest.

1. Aktivieren der Self-Service-Anmeldung

1. Die Einladungsnachricht, die Sie an neue vom Administrator erstellte Benutzer senden

Wird das folgende Beispiel zu einem vollständigen API-Anfragetext hinzugefügt, wird ein Benutzerpool mit inaktiver Self-Service-Registrierung und einer einfachen Einladungs-E-Mail eingerichtet.

```
"AdminCreateUserConfig": { 
      "AllowAdminCreateUserOnly": true,
      "InviteMessageTemplate": { 
         "EmailMessage": "Your username is {username} and temporary password is {####}.",
         "EmailSubject": "Welcome to ExampleApp",
         "SMSMessage": "Your username is {username} and temporary password is {####}."
      }
   }
```

Die folgenden zusätzlichen Parameter einer [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Anfrage regeln die Erstellung neuer Benutzer.

[AutoVerifiedAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AutoVerifiedAttributes)  
Die Attribute, E-Mail-Adressen oder Telefonnummern, an die Sie [automatisch eine Nachricht senden](user-pool-settings-email-phone-verification.md#user-pool-settings-email-phone-verification.title) möchten, wenn Sie einen neuen Benutzer registrieren.

[Richtlinien](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Policies)  
Die [Passwortrichtlinie](managing-users-passwords.md#user-pool-settings-policies.title) für den Benutzerpool.

[Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
Die [benutzerdefinierten Attribute](user-pool-settings-attributes.md#user-pool-settings-custom-attributes.title) des Benutzerpools. Diese sind wichtig für den Benutzererstellungs- und Anmeldeprozess, da Sie einen Wert für *unveränderliche* benutzerdefinierte Attribute nur dann festlegen können, wenn Sie zuvor einen Benutzer erstellt haben.  
Dieser Parameter legt auch die erforderlichen Attribute für Ihren Benutzerpool fest. Wird der folgende Text in das `Schema`-Element eines vollständigen API-Anforderungstexts eingefügt, wird das `email`-Attribut nach Bedarf festgelegt.  

```
{
            "Name": "email",
            "Required": true
}
```

------

# Registrieren und Bestätigen von Benutzerkonten
<a name="signing-up-users-in-your-app"></a>

Benutzerkonten können auf eine der folgenden Weisen einem Benutzerpool hinzugefügt werden:
+ Der Benutzer meldet sich in der Client-App Ihres Benutzerpools an. Dies kann eine mobile oder webbasierte App sein.
+ Sie können das Benutzerkonto in Ihren Benutzerpool importieren. Weitere Informationen finden Sie unter [Importieren von Benutzern aus einer CSV-Datei in Benutzerpools](cognito-user-pools-using-import-tool.md).
+ Sie können das Benutzerkonto in Ihrem Create a User Pool und den Benutzer einladen, sich anzumelden. Weitere Informationen finden Sie unter [Erstellen von Benutzerkonten als Administrator](how-to-create-user-accounts.md).

Benutzer, die sich selbst registrieren, müssen bestätigt werden, bevor sie sich anmelden können. Importierte und erstellte Benutzer sind bereits bestätigt, aber sie müssen ihr eigenes Passwort erstellen, wenn sie sich das erste Mal anmelden. In den folgenden Abschnitten werden der Bestätigungsprozess und die Verifizierung per E-Mail und Telefon erläutert.

**Passwörter bei der Anmeldung**  
Amazon Cognito verlangt Passwörter von allen Benutzern, wenn sie sich registrieren, außer unter den folgenden Bedingungen. Wenn *alle* diese Bedingungen erfüllt sind, können Sie Passwörter bei Anmeldevorgängen weglassen.

1. Die [passwortlose Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) ist in Ihrem Benutzerpool und App-Client aktiv.

1. Ihre Anwendung wurde mit Authentifizierungsmodulen in einem SDK maßgeschneidert. AWS Für die verwaltete Anmeldung und die gehostete Benutzeroberfläche sind immer Passwörter erforderlich.

1. Benutzer geben Attributwerte für die kennwortlosen Anmeldemethoden — Einmalpasswörter für E-Mail oder SMS-Nachrichten () — an, die Sie zulassen. OTPs Wenn Sie beispielsweise die Anmeldung mit E-Mail und Telefon-OTP zulassen, können Benutzer entweder eine Telefonnummer oder eine E-Mail-Adresse angeben. Wenn Sie jedoch nur die Anmeldung mit E-Mail zulassen, müssen sie eine E-Mail-Adresse angeben.

1. Ihr Benutzerpool [überprüft automatisch](#allowing-users-to-sign-up-and-confirm-themselves) die Attribute, die Benutzer bei der kennwortlosen Anmeldung verwenden können.

1. [Für jede [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)Anfrage gibt der Benutzer keinen Wert für den Password-Parameter an.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Password)

## Überblick über die Benutzerkonto-Bestätigung
<a name="signup-confirmation-verification-overview"></a>

Das folgende Diagramm illustriert den Bestätigungsprozess:

![\[Wenn Benutzer ihren Bestätigungscode eingeben, verifizieren sie automatisch ihre E-Mail-Adresse oder Telefonnummer.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/amazon-cognito-sign-in-confirm-user.png)


Ein Benutzerkonto kann einen der folgenden Status aufweisen:

**Registriert (Unbestätigt)**  
Der Benutzer hat sich erfolgreich registriert, kann sich aber nicht anmelden, bis das Benutzerkonto bestätigt wird. Der Benutzer aktiviert ist, aber in diesem Status nicht bestätigt.  
Neue Benutzer, die sich selbst registrieren, starten in diesem Status.

**Bestätigt**  
Das Benutzerkonto ist bestätigt, und der Benutzer kann sich anmelden. Wenn ein Benutzer einen Code eingibt oder einem E-Mail-Link folgt, um sein Benutzerkonto zu bestätigen, wird die E-Mail-Adresse oder Telefonnummer automatisch verifiziert. Der Code oder Link ist 24 Stunden gültig.  
Wenn das Benutzerkonto vom Administrator oder einem Lambda-Auslöser vor der Anmeldung bestätigt wurde, ist möglicherweise keine verifizierte E-Mail-Adresse oder Telefonnummer mit dem Konto verknüpft.

**Zurücksetzen des Passworts erforderlich**  
Das Benutzerkonto ist bestätigt, aber der Benutzer muss einen Code anfordern und sein Passwort zurücksetzen, bevor er sich anmelden kann.  
Benutzerkonten, die von einem Administrator oder Entwickler importiert werden, starten in diesem Status.

**Ändern des Passworts erzwingen**  
Das Benutzerkonto ist bestätigt, und der Benutzer kann sich mit einem temporären Passwort anmelden, aber bei der ersten Anmeldung muss der Benutzer zunächst das Passwort ändern.  
Benutzerkonten, die von einem Administrator oder Entwickler erstellt werden, starten in diesem Status.

**Disabled**  
Bevor Sie ein Benutzerkonto löschen können, müssen Sie den Anmeldezugriff für diesen Benutzer deaktivieren.

**Weitere -Quellen**
+ [Erkennung und Behebung inaktiver Benutzerkonten mit Amazon Cognito](https://aws.amazon.com/blogs/security/detecting-and-remediating-inactive-user-accounts-with-amazon-cognito/)

## Überprüfen von Kontaktinformationen bei der Anmeldung
<a name="allowing-users-to-sign-up-and-confirm-themselves"></a>

Wenn sich neue Benutzer in Ihrer App anmelden, möchten Sie wahrscheinlich, dass sie mindestens eine Kontaktmethode angeben. Mit den Kontaktinformationen des Benutzers haben Sie zum Beispiel folgende Möglichkeiten:
+ Senden Sie ein temporäres Passwort, wenn ein Benutzer sein Passwort zurücksetzt.
+ Benachrichtigen der Benutzer, wenn deren persönliche oder finanziellen Daten aktualisiert werden
+ Senden von Werbemitteilungen, beispielsweise zu Sonderangeboten oder Rabatten
+ Senden von Kontoübersichten oder Zahlungserinnerungen

Für solche Anwendungsfälle müssen Sie Ihre Nachrichten unbedingt an ein Ziel senden, das überprüft wurde. Andernfalls senden Sie Ihre Nachrichten möglicherweise an eine ungültige E-Mail-Adresse oder falsch eingegebene Telefonnummer. Im schlimmsten Fall könnten Sie sogar sensible Daten an böswillige Angreifer übermitteln, die sich als Ihre Benutzer ausgeben.

Um sicherzustellen, dass Sie Nachrichten nur an die richtigen Personen senden, konfigurieren Sie den Amazon-Cognito-Benutzerpool so, dass die Benutzer Folgendes angeben müssen, wenn sie sich anmelden:

1. Eine E-Mail-Adresse oder Telefonnummer.

1. Einen Verifizierungscode, den Amazon Cognito an diese E-Mail-Adresse oder Telefonnummer sendet. Wenn 24 Stunden vergangen sind und der Code oder Link Ihres Benutzers nicht mehr gültig ist, rufen Sie den [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API-Vorgang auf, um einen neuen Code oder Link zu generieren und zu senden.

Durch die Angabe des Verifizierungscodes weist ein Benutzer nach, dass er über Zugriff auf das Postfach oder Telefon verfügt, welches den Code erhalten hat. Nachdem der Benutzer den Code angegeben hat, aktualisiert Amazon Cognito die Informationen über den Benutzer im Benutzerpool wie folgt:
+ Der Status des Benutzers wird auf festgelegt `CONFIRMED`.
+ Die Attribute des Benutzers werden aktualisiert, um anzugeben, dass die E-Mail-Adresse oder Telefonnummer bestätigt wurde.

Sie können diese Informationen in der Amazon-Cognito-Konsole anzeigen. Oder Sie können die `AdminGetUser` API-Operation, den `admin-get-user` Befehl mit dem AWS CLI oder eine entsprechende Aktion in einer der AWS SDKs.

Wenn ein Benutzer über eine überprüfte Kontaktmethode verfügt, sendet Amazon Cognito dem Benutzer automatisch eine Nachricht, wenn der Benutzer die Zurücksetzung des Passworts anfordert.

### Andere Aktionen, die Benutzerattribute bestätigen und verifizieren
<a name="allowing-users-to-sign-up-and-confirm-themselves-other-actions"></a>

Die folgende Benutzeraktivität überprüft Benutzerattribute. Sie müssen diese Attribute nicht für die automatische Überprüfung festlegen: Die aufgelisteten Aktionen kennzeichnen sie in allen Fällen als verifiziert.

**E-Mail-Adresse**  

1. Die [passwortlose Authentifizierung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) mit einem E-Mail-Einmalpasswort (OTP) wurde erfolgreich abgeschlossen.

1. Erfolgreicher Abschluss der [Multi-Faktor-Authentifizierung (MFA)](user-pool-settings-mfa.md) mit einem E-Mail-OTP.

**Phone number (Telefonnummer)**  

1. Erfolgreicher Abschluss der [passwortlosen Authentifizierung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) mit einem SMS-OTP.

1. Erfolgreicher Abschluss von [MFA](user-pool-settings-mfa.md) mit einem SMS-OTP.

### Benutzerpool für eine obligatorische Verifizierung der E-Mail-Adresse oder Telefonnummer konfigurieren
<a name="verification-configure"></a>

Wenn Sie die E-Mail-Adressen und Telefonnummern Ihrer Benutzer überprüfen, stellen Sie sicher, dass Sie Ihre Benutzer kontaktieren können. Gehen Sie wie folgt vor AWS-Managementkonsole , um Ihren Benutzerpool so zu konfigurieren, dass Ihre Benutzer ihre E-Mail-Adressen oder Telefonnummern bestätigen müssen.

**Anmerkung**  
Wenn Sie noch keinen Benutzerpool in Ihrem Konto eingerichtet haben, finden Sie weitere Informationen unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).

**So konfigurieren Sie den Benutzerpool**

1. Navigieren Sie zur [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home). Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie im Navigationsbereich **User Pools** (Benutzerpools) aus. 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 **Anmeldemenü** und suchen Sie nach **Attributverifizierung und Benutzerkontobestätigung**. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie unter **Von Cognito unterstützte Überprüfung und Bestätigung** aus, ob Sie **Cognito erlauben, automatisch Nachrichten zur Überprüfung und Bestätigung zu senden**. Wenn diese Einstellung aktiviert ist, sendet Amazon Cognito Nachrichten an die von Ihnen ausgewählten Benutzerkontaktattribute, wenn sich ein Benutzer anmeldet oder wenn Sie ein Benutzerprofil erstellen. Um Attribute zu überprüfen und Benutzerprofile für die Anmeldung zu bestätigen, sendet Amazon Cognito einen Code oder Link in Nachrichten an Benutzer. Die Benutzer müssen dann den Code in Ihre Benutzeroberfläche eingeben, damit Ihre App sie in einer `ConfirmSignUp`- oder `AdminConfirmSignUp`-API-Anfrage bestätigen kann.
**Anmerkung**  
Sie können **Cognito-assisted verification and confirmation** (Cognito-unterstütze Verifizierung und Bestätigung) auch deaktivieren und die authentifizierten API-Aktionen oder Lambda-Auslöser verwenden, um Attribute zu verifizieren und Benutzer zu bestätigen.  
Bei dieser Auswahl sendet Amazon Cognito keine Verifizierungscodes, wenn Benutzer sich anmelden. Aktivieren Sie diese Option, wenn Sie einen benutzerdefinierten Authentifizierungsablauf verwenden, der mindestens eine Kontaktmethode verifiziert, ohne Verifizierungscodes von Amazon Cognito zu nutzen. Sie könnten beispielsweise einen Lambda-Auslöser vor der Anmeldung verwenden, der automatisch E-Mail-Adressen verifiziert, die einer bestimmten Domäne angehören.  
Wenn Sie die Kontaktinformationen Ihrer Benutzer nicht verifizieren, können die Benutzer die App möglicherweise nicht verwenden. Beachten Sie, dass die Benutzer die folgenden Aktionen nur mit verifizierten Kontaktinformationen ausführen können:  
**Passwörter zurücksetzen** – Wenn ein Benutzer eine Option in Ihrer Anwendung auswählt, die die API-Aktion `ForgotPassword` abruft, sendet Amazon Cognito ein temporäres Passwort an die E-Mail-Adresse oder Telefonnummer des Benutzers. Amazon Cognito sendet dieses Kennwort nur, wenn der Benutzer über mindestens eine verifizierte Kontaktmethode verfügt.
**Anmeldung mit einer E-Mail-Adresse oder Telefonnummer als Alias** – Wenn Sie den Benutzerpool so konfigurieren, dass diese Alias zulässig sind, kann ein Benutzer sich nur mit einem Alias anmelden, wenn der Alias verifiziert wurde. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

1. Wählen Sie Ihre **zu überprüfenden Attribute** aus:  
**SMS-Nachricht senden, Telefonnummer verifizieren**  
Amazon Cognito sendet einen Verifizierungscode in einer SMS-Nachricht, wenn der Benutzer sich anmeldet. Treffen Sie diese Auswahl, wenn Sie mit Ihren Benutzern normalerweise per SMS kommunizieren. Verifizierte Telefonnummern verwenden Sie beispielsweise zum Senden von Lieferbenachrichtigungen, Terminbestätigungen oder Warnungen. Benutzertelefonnummern sind das verifizierte Attribut, wenn Konten bestätigt werden. Sie müssen zusätzliche Maßnahmen ergreifen, um die E-Mail-Adressen der Benutzer zu überprüfen und mit ihnen zu kommunizieren.  
**E-Mail-Nachricht senden, E-Mail-Adresse überprüfen**  
Amazon Cognito sendet einen Verifizierungscode per E-Mail, wenn der Benutzer sich anmeldet. Wählen Sie diese Option aus, wenn Sie mit Ihren Benutzern in der Regel über E-Mail kommunizieren. Sie benötigen verifizierte E-Mail-Adressen zum Beispiel, wenn Sie Abrechnungen, Bestellübersichten oder Sonderangebote senden. Benutzertelefonnummern sind das verifizierte Attribut, wenn Konten bestätigt werden. Sie müssen zusätzliche Maßnahmen ergreifen, um die Telefonnummern der Benutzer zu überprüfen und mit ihnen zu kommunizieren.  
**SMS-Nachricht senden, wenn die Telefonnummer verfügbar ist, andernfalls E-Mail-Nachricht senden**  
Wählen Sie diese Option aus, wenn es nicht erforderlich ist, dass alle Benutzer über dieselbe verifizierte Kontaktmethode verfügen. In diesem Fall könnte die Anmeldeseite in Ihrer App die Benutzer dazu auffordern, nur ihre bevorzugte Kontaktmethode zu verifizieren. Beim Übermitteln eines Verifizierungscodes sendet Amazon Cognito den Code an die Kontaktmethode, die in der `SignUp`-Anforderung von Ihrer App bereitgestellt wird. Wenn ein Benutzer eine E-Mail-Adresse und eine Telefonnummer angibt und die App beide Kontaktmethoden in der `SignUp`-Anforderung übermittelt, sendet Amazon Cognito nur einen Verifizierungscode an die Telefonnummer.  
Wählen Sie diese Option aus, um festzulegen, dass die Benutzer sowohl eine E-Mail-Adresse als auch eine Telefonnummer verifizieren müssen. Amazon Cognito verifiziert eine Kontaktmethode, wenn sich der Benutzer anmeldet. Die App verifiziert die andere Kontaktmethode, nachdem sich der Benutzer angemeldet hat. Weitere Informationen finden Sie unter [Wenn die Benutzer sowohl E-Mail-Adressen als auch Telefonnummern bestätigen müssen](#verification-email-plus-phone).

1. Wählen Sie **Save Changes (Änderungen speichern)**.

### Authentifizierungsablauf mit Verifizierung per E-Mail oder Telefon
<a name="verification-flow"></a>

Wenn der Benutzerpool erfordert, dass die Benutzer ihre Kontaktinformationen verifizieren, muss Ihre Anwendung den folgenden Ablauf unterstützen, wenn sich ein Benutzer anmeldet:

1. Ein Benutzer registriert sich in Ihrer App, indem er einen Benutzernamen, eine Telefonnummer, eine and/or E-Mail-Adresse und möglicherweise andere Attribute eingibt.

1. Die Amazon-Cognito-Service erhält die Registrierungs-Anforderung von der App. Nachdem verifiziert wurde, dass die Anforderung alle für die Registrierung erforderlichen Attribute enthält, schließt der Service die Registrierung ab und sendet einen Bestätigungscode an die Telefonnummer (per SMS) oder E-Mail-Adresse des Benutzers. Der Code ist 24 Stunden gültig.

1. Der Service gibt der App zurück, dass die Registrierung abgeschlossen ist und die Bestätigung des Benutzerkontos noch ansteht. Die Antwort enthält Informationen darüber, wohin der Bestätigungscode gesendet wurde. An diesem Punkt ist das Benutzerkonto in einem unbestätigten Status, und die E-Mail-Adresse und Telefonnummer des Benutzers sind noch nicht verifiziert.

1. Die App kann jetzt den Benutzer dazu auffordern, den Bestätigungscode einzugeben. Der Benutzer muss den Code nicht sofort eingeben. Er kann sich jedoch erst anmelden, nachdem er den Bestätigungscode eingegeben hat.

1. Der Benutzer gibt den Bestätigungscode in die App ein.

1. Die App ruft [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) auf und sendet den Code an den Amazon-Cognito-Service, welcher den Code verifiziert. Wenn der Code korrekt ist, wird das Konto des Benutzers bestätigt. Nach erfolgreicher Bestätigung des Benutzerkontos markiert der Amazon-Cognito-Service automatisch das zur Bestätigung verwendete Attribut (E-Mail-Adresse oder Telefonnummer) als verifiziert. Sofern der Wert dieses Attributs nicht geändert wird, muss der Benutzer es nicht erneut verifizieren.

1. An diesem Punkt ist das Benutzerkonto in einem bestätigten Status, und der Benutzer kann sich anmelden.

### Wenn die Benutzer sowohl E-Mail-Adressen als auch Telefonnummern bestätigen müssen
<a name="verification-email-plus-phone"></a>

Amazon Cognito verifiziert nur eine Kontaktmethode, wenn sich ein Benutzer anmeldet. In Fällen, in denen Amazon Cognito zwischen der Verifizierung einer E-Mail-Adresse oder Telefonnummer wählen muss, verifiziert der Service die Telefonnummer, indem er einen Verifizierungscode per SMS-Nachricht sendet. Wenn Sie beispielsweise den Benutzerpool so konfigurieren, dass Benutzern die Verifizierung über die E-Mail-Adresse oder Telefonnummer gestattet ist und wenn Ihre App beide Attribute bei der Anmeldung übermittelt, verifiziert Amazon Cognito nur die Telefonnummer. Nachdem ein Benutzer seine Telefonnummer verifiziert hat, setzt Amazon Cognito den Status des Benutzers auf `CONFIRMED` und der Benutzer darf sich bei der App anmelden.

Nachdem der Benutzer angemeldet ist, kann die App optional die Verifizierung der während der Anmeldung nicht verifizierten Kontaktmethode bereitstellen. Zur Überprüfung dieser zweiten Methode ruft die App die `VerifyUserAttribute`-API-Aktion auf. Beachten Sie, dass diese Aktion einen `AccessToken`-Parameter erfordert und Amazon Cognito nur authentifizierten Benutzern Zugriff auf Token bietet. Aus diesem Grund können Sie die zweite Kontaktmethode erst verifizieren, nachdem der Benutzer sich angemeldet hat.

Wenn es erforderlich ist, dass die Benutzer sowohl E-Mail-Adressen als auch Telefonnummern verifizieren, führen Sie die folgenden Schritte aus:

1. Konfigurieren Sie den Benutzerpool so, dass Benutzern die Verifizierung über die E-Mail-Adresse oder Telefonnummern gestattet ist.

1. Fordern Sie im Anmeldungsfluss für die App, dass die Benutzer eine E-Mail-Adresse und eine Telefonnummer angeben müssen. Rufen Sie die [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)-API-Aktion auf und stellen Sie die E-Mail-Adresse und Telefonnummer für den `UserAttributes`-Parameter bereit. An diesem Punkt sendet Amazon Cognito einen Verifizierungscode an das Telefon des Benutzers.

1. Zeigen Sie in der App-Oberfläche eine Bestätigungsseite an, auf der der Benutzer den Verifizierungscode eingibt. Bestätigen Sie den Benutzer durch Aufrufen der [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)-API-Aktion. An diesem Punkt ist der Status des Benutzers `CONFIRMED`. Die Telefonnummer des Benutzers wurde verifiziert, jedoch nicht die E-Mail-Adresse.

1. Zeigen Sie die Anmeldeseite an und authentifizieren Sie den Benutzer durch Aufrufen der [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)-API-Aktion. Nachdem der Benutzer authentifiziert wurde, gibt Amazon Cognito ein Zugriffstoken an die App zurück.

1. Rufen Sie die [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)-API-Aktion auf. Geben Sie in der Anforderung die folgenden Parameter an:
   + `AccessToken` – Das von Amazon Cognito bei der Anmeldung des Benutzers zurückgegebene Zugriffstoken.
   + `AttributeName` – Legen Sie `"email"` als Attributwert fest.

   Amazon Cognito sendet einen Verifizierungscode an die E-Mail-Adresse des Benutzers.

1. Zeigen Sie eine Bestätigungsseite an, auf der der Benutzer den Verifizierungscode eingibt. Wenn der Benutzer den Code übermittelt, rufen Sie die [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)-API-Aktion auf. Geben Sie in der Anforderung die folgenden Parameter an:
   + `AccessToken` – Das von Amazon Cognito bei der Anmeldung des Benutzers zurückgegebene Zugriffstoken.
   + `AttributeName` – Legen Sie `"email"` als Attributwert fest.
   + `Code` – Der Verifizierungscode, den der Benutzer eingegeben hat.

   Die E-Mail-Adresse wurde jetzt verifiziert.

## Benutzern erlauben, sich in der Anwendung anzumelden, sie aber als Benutzerpool-Administrator bestätigen
<a name="signing-up-users-in-your-app-and-confirming-them-as-admin"></a>

Möglicherweise möchten Sie nicht, dass Ihr Benutzerpool automatisch Bestätigungsnachrichten an Ihren Benutzerpool sendet, möchten aber dennoch jedem ermöglichen, sich für ein Konto anzumelden. Dieses Modell bietet beispielsweise Spielraum für die manuelle Überprüfung neuer Anmeldeanfragen sowie für die Batch-Validierung und Bearbeitung von Anmeldungen. Sie können neue Benutzerkonten in der Amazon Cognito Cognito-Konsole oder mit dem IAM-authentifizierten API-Vorgang bestätigen. [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) Sie können Benutzerkonten als Administrator bestätigen, unabhängig davon, ob Ihr Benutzerpool Bestätigungsnachrichten sendet oder nicht.

Mit dieser Technik können Sie die Self-Service-Registrierung eines Benutzers nur bestätigen. Um einen Benutzer zu bestätigen, den Sie als Administrator erstellen, erstellen Sie eine [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API-Anfrage mit der Einstellung auf. `Permanent` `True`

1. Ein Benutzer registriert sich in Ihrer App, indem er einen Benutzernamen, eine Telefonnummer, eine and/or E-Mail-Adresse und möglicherweise andere Attribute eingibt.

1. Die Amazon-Cognito-Service erhält die Registrierungs-Anforderung von der App. Nachdem Sie verifiziert haben, dass die Anforderung alle für die Anmeldung benötigten Attribute enthält, schließt der Service den Anmeldevorgang ab und gibt an die App zurück, dass die Anmeldung abgeschlossen ist, aber noch nicht bestätigt wurde. An diesem Punkt befindet sich das Benutzerkonto in einem unbestätigten Status. Der Benutzer kann nicht anmelden, bis das Konto bestätigt ist.

1. Bestätigen Sie das Konto des Benutzers. Sie müssen sich bei der API-Anfrage anmelden AWS-Managementkonsole oder Ihre API-Anfrage mit AWS Anmeldeinformationen unterschreiben, um das Konto zu bestätigen. 

   1. Um einen Benutzer in der Amazon Cognito Cognito-Konsole zu bestätigen, navigieren Sie zum Menü **Benutzer**, wählen Sie den Benutzer aus, den Sie bestätigen möchten, und wählen Sie im Menü **Aktionen** die Option **Bestätigen** aus.

   1. Um einen Benutzer in der AWS API oder CLI zu bestätigen, erstellen Sie eine [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)API-Anfrage oder [admin-confirm-sign-up](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-confirm-sign-up.html)in der AWS CLI.

1. An diesem Punkt ist das Benutzerkonto in einem bestätigten Status, und der Benutzer kann sich anmelden.

## Berechnen von Werten für geheime Hashes
<a name="cognito-user-pools-computing-secret-hash"></a>

Es ist eine bewährte Methode, Ihrem vertraulichen App-Client einen geheimen Client-Schlüssel zuzuweisen. Wenn Sie Ihrem App-Client einen geheimen Client-Schlüssel zuweisen, müssen API-Anforderungen Ihrer Amazon-Cognito-Benutzerpools einen Hash enthalten, der den geheimen Client-Schlüssel im Anforderungstext enthält. Um zu überprüfen, ob Sie den geheimen Client-Schlüssel für die API-Operationen in den folgenden Listen kennen, verketten Sie den geheimen Client-Schlüssel mit Ihrer App-Client-ID und dem Benutzernamen Ihres Benutzers und codieren Sie dann diese Zeichenfolge mit Base64.

Wenn Ihre App Benutzer bei einem Client anmeldet, der über einen geheimen Hash verfügt, können Sie den Wert eines beliebigen Benutzerpool-Anmeldeattributs als Benutzernamenselement des geheimen Hashs verwenden. Wenn Ihre App im Rahmen eines Authentifizierungsvorgangs mit `REFRESH_TOKEN_AUTH` neue Token anfordert, hängt der Wert des Benutzernamenselements von Ihren Anmeldeattributen ab. Wenn Ihr Benutzerpool nicht `username` als Anmeldeattribut hat, legen Sie den Wert für den geheimen Hash-Benutzernamen fest, der sich aus dem `sub`-Anspruch des Benutzers aus seinem Zugriffs- oder ID-Token ergibt. Wenn es sich bei `username` um ein Anmeldeattribut handelt, legen Sie den Wert für den geheimen Hash-Benutzernamen aus dem `username`-Anspruch fest.

Die folgenden Amazon Cognito Cognito-Benutzerpools APIs akzeptieren einen geheimen Client-Hashwert in einem Parameter. `SecretHash`
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Darüber hinaus APIs akzeptieren die folgenden Benutzer einen geheimen Client-Hashwert in einem `SECRET_HASH` Parameter, entweder in Authentifizierungsparametern oder in einer Challenge-Antwort.


| API-Operation | Übergeordneter Parameter für SECRET\$1HASH | 
| --- |--- |
| InitiateAuth | AuthParameters | 
| AdminInitiateAuth | AuthParameters | 
| RespondToAuthChallenge | ChallengeResponses | 
| AdminRespondToAuthChallenge | ChallengeResponses | 

Der Wert für den geheimen Hash ist ein Base 64-codierter Keyed-Hash Message Authentication Code (HMAC), der anhand des geheimen Schlüssels eines Benutzerpool-Clients und Benutzernamens plus der Client-ID in der Nachricht berechnet wird. Die folgende Pseudocode zeigt, wie dieser Wert berechnet wird. In diesem Pseudocode `HMAC_SHA256` steht er für eine `+` Verkettung, für eine Funktion, die mithilfe von Hmac einen HMAC-Wert erzeugt, und für eine FunktionSHA256, die eine Base-64-kodierte Version der `Base64` Hashausgabe erzeugt.

```
Base64 ( HMAC_SHA256 ( "Client Secret Key", "Username" + "Client Id" ) )
```

Eine ausführliche Übersicht über die Berechnung und Verwendung des `SecretHash` Parameters finden Sie unter [Wie behebe ich die Fehler „Unable to verify secret hash for client“ in meiner Amazon Cognito Cognito-Benutzerpools-API](https://aws.amazon.com/premiumsupport/knowledge-center/cognito-unable-to-verify-secret-hash/)<client-id>? im AWS Knowledge Center.

Sie können die folgenden Codebeispiele in Ihrem serverseitigen Anwendungscode verwenden.

------
#### [ Shell ]

```
echo -n "[username][app client ID]" | openssl dgst -sha256 -hmac [app client secret] -binary | openssl enc -base64
```

------
#### [ Java ]

```
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
 
public static String calculateSecretHash(String userPoolClientId, String userPoolClientSecret, String userName) {
    final String HMAC_SHA256_ALGORITHM = "HmacSHA256";
    
    SecretKeySpec signingKey = new SecretKeySpec(
            userPoolClientSecret.getBytes(StandardCharsets.UTF_8),
            HMAC_SHA256_ALGORITHM);
    try {
        Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
        mac.init(signingKey);
        mac.update(userName.getBytes(StandardCharsets.UTF_8));
        byte[] rawHmac = mac.doFinal(userPoolClientId.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(rawHmac);
    } catch (Exception e) {
        throw new RuntimeException("Error while calculating ");
    }
}
```

------
#### [ Python ]

```
import sys
import hmac, hashlib, base64 
username = sys.argv[1] 
app_client_id = sys.argv[2] 
key = sys.argv[3] 
message = bytes(sys.argv[1]+sys.argv[2],'utf-8') 
key = bytes(sys.argv[3],'utf-8') 
secret_hash = base64.b64encode(hmac.new(key, message, digestmod=hashlib.sha256).digest()).decode() 
print("SECRET HASH:",secret_hash)
```

------

## Bestätigen von Benutzerkonten ohne Verifizieren der E-Mail-Adresse oder Telefonnummer
<a name="confirming-user-without-verification-of-email-or-phone-number"></a>

Der Lambda-Auslöser vor der Registrierung kann verwendet werden, um Benutzerkonten bei der Registrierung automatisch zu bestätigen, ohne dass ein Bestätigungscode oder eine Verifizierung der E-Mail-Adresse oder Telefonnummer erforderlich ist. Benutzer, die auf diese Weise bestätigt werden, können sich sofort anmelden, ohne dass Sie einen Code benötigen.

Sie können über diesen Auslöser auch eine E-Mail-Adresse oder Telefonnummer als verifiziert markieren. 

**Anmerkung**  
Dieser Ansatz ist praktisch, um Benutzern bei den ersten Schritten zu helfen, doch wir empfehlen die automatische Verifizierung von mindestens E-Mail-Adresse oder Telefonnummer. Andernfalls kann der Benutzer nicht wiederhergestellt werden, wenn er sein Passwort vergisst.

Wenn Sie es nicht erfordern, dass der Benutzer bei der Registrierung einen Bestätigungscode erhält und eingibt und Sie E-Mail-Adresse und Telefonnummer nicht im Lambda-Auslöser vor der Registrierung automatisch verifizieren, riskieren Sie, dass Sie keine verifizierte E-Mail-Adresse oder Telefonnummer für das Benutzerkonto haben. Der Benutzer kann die E-Mail-Adresse oder Telefonnummer zu einem späteren Zeitpunkt verifizieren. Wenn der Benutzer jedoch sein Passwort vergisst und keine verifizierte E-Mail-Adresse oder Telefonnummer hat, wird der Benutzer aus dem Konto gesperrt, da der Ablauf für „Passwort vergessen“ eine verifizierte E-Mail-Adresse oder Telefonnummer erfordert, um einen Verifizierungscode an den Benutzer zu senden.

## Verifizieren, wenn Benutzer ihre E-Mail-Adresse oder Telefonnummer ändern
<a name="verifying-when-users-change-their-email-or-phone-number"></a>

In Benutzerpools, die Sie mit mehreren Anmeldenamen konfigurieren, können Benutzer bei der Anmeldung eine Telefonnummer oder eine E-Mail-Adresse als Benutzernamen eingeben. Wenn sie ihre E-Mail-Adresse oder Telefonnummer in Ihrer App aktualisieren, kann Amazon Cognito ihnen sofort eine Nachricht mit einem Code senden, der bestätigt, dass sie Eigentümer des neuen Attributwerts sind. Informationen zum Aktivieren des automatischen Versendens dieser Bestätigungscodes finden Sie unter. [Konfigurieren der Verifizierung per E-Mail und Telefon](user-pool-settings-email-phone-verification.md)

Benutzer, die einen Bestätigungscode erhalten, müssen diesen Code in einer [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)Anfrage an Amazon Cognito zurücksenden. Nachdem sie den Code eingegeben haben, wird ihr Attribut als verifiziert markiert. Wenn Benutzer ihre E-Mail-Adresse oder Telefonnummer aktualisieren, sollten Sie in der Regel überprüfen, ob sie Eigentümer des neuen Werts sind, bevor sie ihn für die Anmeldung und den Empfang von Nachrichten verwenden können. Benutzerpools verfügen über eine konfigurierbare Option, mit der festgelegt wird, ob Benutzer Aktualisierungen ihrer E-Mail-Adresse oder Telefonnummer verifizieren müssen.

Bei dieser Option handelt es sich um eine Eigenschaft des Benutzerpools`AttributesRequireVerificationBeforeUpdate`. Konfigurieren Sie es in einer [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-UserAttributeUpdateSettings)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UserAttributeUpdateSettings)Oder-Anfrage oder mit der Einstellung **Ursprünglichen Attributwert aktiv lassen, wenn ein Update aussteht** im **Anmeldemenü** der Amazon Cognito Cognito-Konsole.

Wie Ihr Benutzerpool mit Aktualisierungen von E-Mail-Adressen und Telefonnummern umgeht, hängt von der Benutzernamenkonfiguration Ihres Benutzerpools ab. Benutzerpool-Benutzernamen können sich in einer Konfiguration mit *Benutzernamenattributen* befinden, bei der die Anmeldenamen E-Mail-Adresse, Telefonnummer oder beides sind. Sie können sich auch in einer *Alias-Attributkonfiguration* befinden, bei der das `username` Attribut ein Anmeldename zusammen mit E-Mail-Adresse, Telefonnummer oder bevorzugtem Benutzernamen als alternative Anmeldenamen ist. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

 Sie können auch einen Lambda-Trigger für benutzerdefinierte Nachrichten verwenden, um die Bestätigungsnachricht anzupassen. Weitere Informationen finden Sie unter [Lambda-Auslöser für benutzerdefinierte Nachrichten](user-pool-lambda-custom-message.md). Wenn die E-Mail-Adresse oder Telefonnummer eines Benutzers nicht verifiziert ist, sollte Ihre Anwendung den Benutzer darüber informieren, dass er das Attribut überprüfen muss, und eine Schaltfläche oder einen Link bereitstellen, über den Benutzer ihren Bestätigungscode eingeben können.

In der folgenden Tabelle wird beschrieben, wie `AttributesRequireVerificationBeforeUpdate` und wie die Aliaseinstellungen das Ergebnis bestimmen, wenn Benutzer den Wert ihrer Anmeldeattribute ändern.


| Konfiguration des Benutzernamens | Verhalten, wenn Benutzer neue Attribute verifizieren müssen | Verhalten, wenn Benutzer keine neuen Attribute verifizieren müssen | 
| --- | --- | --- | 
| Benutzernamenattribute | Das ursprüngliche Attribut bleibt verifiziert, berechtigt zur Anmeldung und hat seinen ursprünglichen Wert. Wenn der Benutzer einen neuen Wert verifiziert, aktualisiert Amazon Cognito den Attributwert, markiert ihn als verifiziert und macht ihn für die Anmeldung berechtigt. | Amazon Cognito aktualisiert das Attribut auf einen neuen Wert. Ein neuer Wert ist für die Anmeldung berechtigt. Wenn der Benutzer einen neuen Wert verifiziert, markiert Amazon Cognito ihn als verifiziert. | 
| Aliasattribute | Das ursprüngliche Attribut bleibt verifiziert, berechtigt zur Anmeldung und hat den ursprünglichen Wert. Wenn der Benutzer einen neuen Wert verifiziert, aktualisiert Amazon Cognito den Attributwert, markiert ihn als verifiziert und macht ihn für die Anmeldung berechtigt. | Amazon Cognito aktualisiert das Attribut auf einen neuen Wert. Weder der ursprüngliche noch der neue Attributwert sind für die Anmeldung berechtigt. Wenn der Benutzer einen neuen Wert verifiziert, aktualisiert Amazon Cognito den Attributwert, markiert ihn als verifiziert und macht ihn für die Anmeldung berechtigt. | 

**Beispiel 1**  
Benutzer 1 meldet sich mit der E-Mail-Adresse bei Ihrer Anwendung an `user1@example.com` und hat den Benutzernamen `user1` (Alias-Attribute). Ihr Benutzerpool ist so konfiguriert, dass Aktualisierungen der Anmeldeattribute überprüft und automatisch Bestätigungsnachrichten gesendet werden. Sie bitten darum, ihre E-Mail-Adresse auf zu `user1+foo@example.com` aktualisieren. Sie erhalten eine Bestätigungs-E-Mail unter `user1+foo@example.com` und *können sich nur mit der E-Mail-Adresse erneut anmelden*`user1@example.com`. Später geben sie ihren Bestätigungscode ein und können sich nur mit der E-Mail-Adresse erneut anmelden`user1+foo@example.com`.

**Beispiel 2**  
Benutzer 2 meldet sich mit der E-Mail-Adresse bei Ihrer Anwendung an `user2@example.com` und hat einen Benutzernamen (Alias-Attribute). Ihr Benutzerpool ist so konfiguriert, dass Aktualisierungen der Anmeldeattribute *nicht* überprüft und Bestätigungsnachrichten automatisch gesendet werden. Sie bitten darum, ihre E-Mail-Adresse auf zu `user2+bar@example.com` aktualisieren. Sie erhalten eine Bestätigungs-E-Mail unter `user2+bar@example.com` und *können sich nicht erneut anmelden*. Später geben sie ihren Bestätigungscode ein und können sich nur mit der E-Mail-Adresse erneut anmelden`user2+bar@example.com`.

**Beispiel 3**  
Benutzer 3 meldet sich mit der E-Mail-Adresse bei Ihrer Anwendung an `user3@example.com` und hat keinen Benutzernamen (Benutzernamenattribute). Ihr Benutzerpool ist so konfiguriert, dass Aktualisierungen der Anmeldeattribute *nicht* überprüft und Bestätigungsnachrichten automatisch gesendet werden. Sie bitten darum, ihre E-Mail-Adresse auf zu `user3+baz@example.com` aktualisieren. Sie erhalten eine Bestätigungs-E-Mail unter`user3+baz@example.com`, *können sich aber sofort anmelden*, ohne dass zusätzliche Maßnahmen mit dem Bestätigungscode ergriffen werden müssen.

## Bestätigungs- und Verifizierungsprozesse für Benutzerkonten, die durch Administratoren und Entwickler erstellt wurden
<a name="confirmation-and-verification-of-users-whose-accounts-youve-created"></a>

Benutzerkonten, die von einem Administrator oder Entwickler erstellt werden, haben bereits den Status "Bestätigt", sodass die Benutzer keinen Bestätigungscode eingeben müssen. Die Einladungsnachricht sendet, die der Amazon-Cognito-Service an diese Benutzer sendet, schließt den Benutzernamen und ein temporäres Kennwort ein. Der Benutzer muss das Passwort ändern, bevor er sich anmelden kann. Weitere Informationen finden Sie unter [Anpassen von E-Mail- und SMS-Nachrichten](how-to-create-user-accounts.md#creating-a-new-user-customize-messages) in [Erstellen von Benutzerkonten als Administrator](how-to-create-user-accounts.md) und dem Custom Message-Auslöser in [Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern](cognito-user-pools-working-with-lambda-triggers.md).

## Bestätigungs- und Verifizierungsprozesse für importierte Benutzerkonten
<a name="confirmation-and-verification-of-users-whose-accounts-youve-imported"></a>

Benutzerkonten, die mithilfe der Benutzerimportfunktion in der CLI oder der AWS-Managementkonsole API (siehe[Importieren von Benutzern aus einer CSV-Datei in Benutzerpools](cognito-user-pools-using-import-tool.md)) erstellt wurden, befinden sich bereits im Status „Bestätigt“, sodass Benutzer keinen Bestätigungscode eingeben müssen. Es wird keine Einladungsnachricht gesendet. Importierte Benutzerkonten verlangen von Benutzern jedoch, zunächst einen Code durch Aufruf der `ForgotPassword`-API anzufordern und dann ein Kennwort mit dem zugestellten Code zu erstellen, indem Sie die `ConfirmForgotPassword` API aufrufen, bevor sie sich anmelden. Weitere Informationen finden Sie unter [Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

Die E-Mail-Adresse oder Telefonnummer des Benutzers muss als verifiziert markiert werden, wenn das Benutzerkonto importiert wird, damit beim Anmelden des Benutzers keine Verifizierung verlangt wird.

## Senden von E-Mails beim Testen der App
<a name="managing-users-accounts-email-testing"></a>

Amazon Cognito sendet E-Mail-Nachrichten an Ihre Benutzer, wenn sie ihre Konten in der Client-App für Ihren Benutzerpool erstellen und verwalten. Wenn Sie den Benutzerpool so konfigurieren, dass die E-Mail-Verifizierung erforderlich ist, sendet Amazon Cognito in folgenden Fällen eine E-Mail:
+ Ein Benutzer meldet sich an.
+ Ein Benutzer ändert seine E-Mail-Adresse.
+ Ein Benutzer führt eine Aktion aus, die die `ForgotPassword`-API-Aktion aufruft.
+ Sie erstellen ein Benutzerkonto als Administrator.

Abhängig von der Aktion, die die E-Mail initiiert, enthält die E-Mail einen Verifizierungscode oder ein temporäres Passwort. Ihre Benutzer müssen diese E-Mails empfangen und die Nachricht verstehen. Andernfalls können sie sich u. U. nicht anmelden und Ihre App verwenden.

Um sicherzustellen, dass E-Mails erfolgreich gesendet werden und die Nachricht korrekt ist, testen Sie die Aktionen in der App, die das Senden von E-Mails durch Amazon Cognito initiieren. Beispiel: Über die Anmeldeseite in der App oder mithilfe der `SignUp`-API-Aktion können Sie eine E-Mail initiieren, indem Sie sich mit einer Test-E-Mail-Adresse anmelden. Wenn Sie auf diese Weise einen Test ausführen, beachten Sie Folgendes:

**Wichtig**  
Wenn Sie eine E-Mail-Adresse verwenden, um Aktionen zu testen, die E-Mails von Amazon Cognito initiieren, verwenden Sie keine gefälschte E-Mail-Adresse (ohne Postfach). Verwenden Sie eine echte E-Mail-Adresse, die die E-Mail von Amazon Cognito empfängt, ohne dass eine *permanente Unzustellbarkeit* auftritt.  
Eine permanente Unzustellbarkeit kommt zustande, wenn Amazon Cognito die E-Mail nicht an das Postfach des Empfängers liefern kann. Wenn das Postfach nicht vorhanden ist, ist das immer der Fall.  
Amazon Cognito begrenzt die Anzahl der E-Mails, die von AWS Konten gesendet werden können, bei denen es ständig zu Hard-Bounces kommt.

Wenn Sie Aktionen testen, die E-Mails initiieren, verwenden Sie eine der folgenden E-Mail-Adressen, um permanente Unzustellbarkeiten zu vermeiden:
+ Eine Adresse für ein E-Mail-Konto, das Sie besitzen und für Tests verwenden. Wenn Sie Ihre eigene E-Mail-Adresse verwenden, erhalten Sie die E-Mail, die Amazon Cognito sendet. Mit dieser E-Mail können Sie den Verifizierungscode zum Testen der Anmeldung in Ihrer App nutzen. Wenn Sie die E-Mail-Nachricht für den Benutzerpool angepasst haben, können Sie überprüfen, ob Ihre Anpassungen korrekt dargestellt werden.
+ Die Adresse des Postfachsimulators, *success@simulator.amazonses.com*. Wenn Sie die Simulatoradresse verwenden, sendet Amazon Cognito die E-Mail erfolgreich. Sie können sie aber nicht ansehen. Diese Option ist nützlich, wenn Sie den Verifizierungscode nicht benötigen und die E-Mail-Nachricht nicht überprüfen müssen.
+ Die Adresse des Postfachsimulators, der eine beliebige Bezeichnung hinzugefügt wird, zum Beispiel *success\$1user1@simulator.amazonses.com* oder *success\$1user2@simulator.amazonses.com*. Amazon Cognito sendet diese Adressen erfolgreich per E-Mail, aber Sie können die gesendeten E-Mails nicht anzeigen. Diese Option ist nützlich, wenn Sie den Anmeldevorgang durch Hinzufügen mehrerer Testbenutzer zum Benutzerpool testen möchten und jeder Testbenutzer über eine eindeutige E-Mail-Adresse verfügt.

# Konfigurieren der Verifizierung per E-Mail und Telefon
<a name="user-pool-settings-email-phone-verification"></a>

Im Menü **Authentifizierungsmethoden können Sie Einstellungen für die E-Mail- oder Telefonverifizierung** auswählen. Weitere Informationen zur Multi-Faktor-Authentifizierung (MFA) finden Sie unter [SMS-MFA](user-pool-settings-mfa-sms-email-message.md).

Amazon Cognito verwendet Amazon SNS zum Senden von SMS-Nachrichten. Wenn Sie noch keine SMS-Nachricht von Amazon Cognito oder einem anderen AWS-Service gesendet haben, platziert Amazon SNS Ihr Konto möglicherweise in der SMS-Sandbox. Wir empfehlen Ihnen, eine Testnachricht an eine verifizierte Telefonnummer zu senden, bevor Sie Ihr Konto aus der Sandbox an die Produktion übergeben. Wenn Sie vorhaben, SMS-Nachrichten an US-Zieltelefonnummern zu senden, müssen Sie außerdem eine Ursprungs- oder Sender-ID von Amazon Pinpoint erhalten. Informationen zum Konfigurieren Ihres Amazon-Cognito-Benutzerpools für SMS-Nachrichten finden Sie unter [Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools](user-pool-sms-settings.md).

Amazon Cognito kann E-Mail-Adressen und Telefonnummern automatisch verifizieren. Für diese Verifizierung sendet Amazon Cognito einen Verifizierungscode oder einen Verifizierungslink. Bei E-Mail-Adressen kann Amazon Cognito einen Code oder einen Link in einer E-Mail-Nachricht senden. Sie können einen ****Bestätigungscode**** oder **Link** wählen, wenn Sie Ihre Vorlage für **Bestätigungsnachrichten im Menü **Nachrichtenvorlagen**** in der Amazon Cognito Cognito-Konsole bearbeiten. Weitere Informationen finden Sie unter [Anpassen von Nachrichten zur E-Mail-Verifizierung](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-email-verification-message-customization).

Bei Telefonnummern sendet Amazon Cognito einen Code in einer SMS-Textnachricht.

Amazon Cognito muss eine Telefonnummer oder E-Mail-Adresse verifizieren, um Benutzer zu bestätigen und ihnen bei der Wiederherstellung vergessener Passwörter zu helfen. Alternativ können Sie Benutzer automatisch mit dem Lambda-Trigger vor der Registrierung bestätigen oder den [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)API-Vorgang verwenden. Weitere Informationen finden Sie unter [Registrieren und Bestätigen von Benutzerkonten](signing-up-users-in-your-app.md).

Der Verifizierungscode oder -link ist 24 Stunden lang gültig.

Wenn Sie die Verifizierung einer E-Mail-Adresse oder Telefonnummer fordern, sendet Amazon Cognito automatisch den Verifizierungscode oder -link, wenn sich ein Benutzer anmeldet. Wenn im Benutzerpool [Benutzerdefinierter Lambda-Auslöser für SMS-Sender](user-pool-lambda-custom-sms-sender.md) oder [Benutzerdefinierter Lambda-Auslöser für E-Mail-Sender](user-pool-lambda-custom-email-sender.md) konfiguriert ist, wird diese Funktion stattdessen aufgerufen.

**Hinweise**  
SMS-Nachrichten für die Überprüfung von Telefonnummern werden von Amazon SNS separat in Rechnung gestellt. Es fallen keine Gebühren für das Senden von E-Mail-Nachrichten an. Weitere Informationen zu den Amazon-SNS-Preisen erhalten Sie unter [Weltweite SMS-Preise](https://aws.amazon.com/sns/sms-pricing/). Eine aktuelle Liste von Ländern, in denen SMS-Messaging verfügbar ist, finden Sie in den Informationen zu den [unterstützten Regionen und Ländern](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html). 
Wenn Sie Aktionen in Ihrer App testen, die E-Mails von Amazon Cognito generieren, verwenden Sie eine echte E-Mail-Adresse, die Amazon Cognito ohne permanente Unzustellbarkeiten erreichen kann. Weitere Informationen finden Sie unter [Senden von E-Mails beim Testen der App](signing-up-users-in-your-app.md#managing-users-accounts-email-testing).
Der Ablauf zu einem vergessenen Passwort setzt voraus, dass die E-Mail-Adresse des Benutzers oder die Telefonnummer des Benutzers verifiziert wird.

**Wichtig**  
Wenn sich ein Benutzer sowohl mit einer Telefonnummer als auch mit einer E-Mail-Adresse anmeldet und Ihre Benutzerpooleinstellungen die Verifizierung beider Attribute vorschreiben, sendet Amazon Cognito einen Verifizierungscode per SMS-Nachricht an die Telefonnummer. Amazon Cognito hat die E-Mail-Adresse noch nicht verifiziert, daher muss Ihre App anrufen, [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)um zu erfahren, ob eine E-Mail-Adresse noch bestätigt werden muss. Wenn eine Bestätigung erforderlich ist, muss die App anrufen, [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)um den E-Mail-Bestätigungsprozess einzuleiten. Anschließend muss sie den Bestätigungscode telefonisch einreichen [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html).

Sie können Ihr Ausgabenkontingent für SMS-Nachrichten für eine AWS-Konto und für einzelne Nachrichten anpassen. Die Limits gelten nur für die Kosten für das Senden von SMS-Nachrichten. Weitere Informationen finden Sie unter **Was sind Ausgabenkontingente auf Konto- und Nachrichtenebene und wie** funktionieren sie? im [Amazon SNS. FAQs](https://aws.amazon.com/sns/faqs/)

Amazon Cognito sendet SMS-Nachrichten mithilfe von Amazon SNS SNS-Ressourcen entweder in dem Land, in AWS-Region dem Sie den Benutzerpool erstellt haben, oder in einer **älteren Amazon SNS SNS-Alternativregion** aus der folgenden Tabelle. Die Ausnahme sind Amazon-Cognito-Benutzerpools in der Region Asien-Pazifik (Seoul). Diese Benutzerpools verwenden Ihre Amazon-SNS-Konfiguration in der Region Asien-Pazifik (Tokio). Weitere Informationen finden Sie unter [Wählen Sie AWS-Region für SMS-Nachrichten](user-pool-sms-settings.md#sms-choose-a-region).


| Amazon-Cognito-Region | Veraltete alternative Amazon-SNS-Region | 
| --- | --- | 
| US East (Ohio) | USA Ost (Nord-Virginia) | 
| Asia Pacific (Mumbai) | Asien-Pazifik (Singapur) | 
| Asia Pacific (Seoul) | Asien-Pazifik (Tokio) | 
| Canada (Central) | USA Ost (Nord-Virginia) | 
| Europe (Frankfurt) | Europa (Irland) | 
| Europe (London) | Europa (Irland) | 

**Beispiel:**Wenn sich Ihr Amazon-Cognito-Benutzerpool in der Region Asien-Pazifik (Mumbai) befindet und Sie Ihr Ausgabenlimit in ap-southeast-1 erhöht haben, möchten Sie möglicherweise keine separate Erhöhung in ap-southeast-1 beantragen. Stattdessen können Sie Ihre Amazon-SNS-Ressourcen in Asien-Pazifik (Singapur) verwenden. 

## Verifizieren von Aktualisierungen von E-Mail-Adressen und Telefonnummern
<a name="user-pool-settings-verifications-verify-attribute-updates"></a>

Ein E-Mail-Adress- oder Telefonnummernattribut kann sofort aktiv und nicht verifiziert werden, sobald Ihr Benutzer seinen Wert geändert hat. Amazon Cognito kann auch verlangen, dass Ihr Benutzer den neuen Wert verifiziert, bevor Amazon Cognito das Attribut aktualisiert. Wenn Sie verlangen, dass Ihre Benutzer zuerst den neuen Wert verifizieren, können diese den ursprünglichen Wert für die Anmeldung und den Empfang von Nachrichten verwenden, bis sie den neuen Wert bestätigen.

Wenn Ihre Benutzer ihre E-Mail-Adresse oder Telefonnummer als Anmeldealias in Ihrem Benutzerpool verwenden können, hängt ihr Anmeldename für ein aktualisiertes Attribut davon ab, ob Sie die Verifizierung aktualisierter Attribute verlangen. Wenn Benutzer ein aktualisiertes Attribut bestätigen müssen, kann sich ein Benutzer mit dem ursprünglichen Attributwert anmelden, bis er den neuen Wert verifiziert hat. Wenn Sie nicht verlangen, dass Benutzer ein aktualisiertes Attribut verifizieren, kann sich ein Benutzer weder mit dem neuen noch mit dem ursprünglichen Attributwert anmelden oder Nachrichten empfangen, bis er den neuen Wert bestätigt hat. 

Ihr Benutzerpool ermöglicht beispielsweise die Anmeldung mit einem E-Mail-Adressalias und verlangt, dass Benutzer ihre E-Mail-Adresse bei der Aktualisierung verifizieren. Sue, die sich als `sue@example.com` anmeldet, möchte ihre E-Mail-Adresse in `sue2@example.com` ändern, gibt aber versehentlich `ssue2@example.com` ein. Sue erhält die Verifizierungs-E-Mail nicht, daher kann sie `ssue2@example.com` nicht bestätigen. Sue meldet sich als `sue@example.com` an und sendet das Formular in Ihrer App erneut, um ihre E-Mail-Adresse in `sue2@example.com` zu ändern. Sie erhält diese E-Mail, stellt Ihrer App den Bestätigungscode zur Verfügung und beginnt, sich als `sue2@example.com` anzumelden. 

**Wenn Benutzer ein Attribut aktualisieren und Ihr Benutzerpool neue Attributwerte verifiziert**
+ Benutzer können sich mit dem ursprünglichen Attributwert anmelden, bevor sie den Code bestätigt haben, um den neuen Wert zu verifizieren.
+ Sie können sich nur mit dem neuen Attributwert anmelden, nachdem sie den Code bestätigt haben, um den neuen Wert zu verifizieren.
+ Wenn Sie `true` in einer [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API-Anfrage `email_verified` oder `phone_number_verified` auf festlegen, können sie sich anmelden, bevor sie den Code bestätigt haben, den Amazon Cognito an sie gesendet hat.

**Wenn Benutzer ein Attribut aktualisieren und Ihr Benutzerpool neue Attributwerte nicht verifiziert**
+ Benutzer können sich nicht mit dem ursprünglichen Attributwert anmelden oder Nachrichten empfangen.
+ Sie können sich nicht mit dem neuen Attributwert anmelden oder Nachrichten nur mit einem Bestätigungscode empfangen, bevor sie den Code bestätigt haben, um den neuen Wert zu verifizieren.
+ Wenn Sie `true` in einer [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API-Anfrage `email_verified` oder `phone_number_verified` auf festlegen, können sie sich anmelden, bevor sie den Code bestätigt haben, den Amazon Cognito an sie gesendet hat.

## Verlangen Sie eine Attributverifizierung wie folgt, wenn Benutzer ihre E-Mail-Adresse oder Telefonnummer aktualisieren


1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldedaten ein.

1. Wählen Sie im Navigationsbereich erst **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie im **Anmeldemenü** unter **Attributverifizierung und Bestätigung des Benutzerkontos** die Option **Bearbeiten** aus.

1. Wählen Sie **Keep original attribute value active when an update is pending** (Ursprünglichen Attributwert aktiv lassen, wenn ein Update aussteht) aus.

1. Wählen Sie unter **Active attribute values when an update is pending** (Aktive Attributwerte, wenn ein Update aussteht) die Attribute aus, die Ihre Benutzer verifizieren müssen, bevor Amazon Cognito den Wert aktualisiert.

1. Wählen Sie **Änderungen speichern ** aus.

Um eine Überprüfung der Attributaktualisierung mit der Amazon Cognito Cognito-API zu verlangen, können Sie den `AttributesRequireVerificationBeforeUpdate` Parameter in einer [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)Anfrage festlegen.

## Autorisieren Sie Amazon Cognito zum Senden von SMS in Ihrem Auftrag.
<a name="user-pool-settings-verifications-iam-role-for-sms"></a>

Amazon Cognito benötigt Ihre Zustimmung, um in Ihrem Auftrag SMS-Nachrichten an Benutzer zu senden. Um diese Berechtigung zu erteilen, können Sie eine AWS Identity and Access Management (IAM-) Rolle erstellen. Wählen Sie im Menü **Authentifizierungsmethoden** der Amazon Cognito Cognito-Konsole unter SMS die Option **Bearbeiten** aus, um eine Rolle festzulegen.

# Konfiguration von MFA-, Authentifizierungs-, Überprüfungs- und Einladungsnachrichten
<a name="cognito-user-pool-settings-message-customizations"></a>

Mit Amazon Cognito können Sie die SMS- und E-Mail-Authentifizierung, Verifizierung und Benutzereinladungsnachrichten individuell anpassen, um die Sicherheit und Benutzererfahrung Ihrer Anwendung zu verbessern. Bei einigen Nachrichten können Sie zwischen codebasierter Linküberprüfung und Linküberprüfung mit nur einem Klick wählen. In diesem Thema wird erläutert, wie Sie die Authentifizierungs- und Bestätigungskommunikation in der Amazon Cognito Cognito-Konsole personalisieren können. 

Im Menü **Nachrichtenvorlagen** können Sie Folgendes anpassen:
+ Ihre E-Mail- und SMS-Nachrichtenvorlagen für Einmalpasswort (OTP) und Multi-Faktor-Authentifizierung (MFA)
+ Ihrer Nachrichten zur SMS- und E-Mail-Verifizierung
+ Der Verifizierungstyp für den E-Mail-Code oder -Link
**Anmerkung**  
Amazon Cognito sendet Links mit Ihrer linkbasierten Vorlage in den Bestätigungsnachrichten, wenn sich Benutzer registrieren oder einen Bestätigungscode erneut senden. E-Mails aus Vorgängen zur Aktualisierung von Attributen und zum Zurücksetzen von Kennwörtern verwenden die Codevorlage.
+ Ihre Nachrichten zur Einladung von Benutzern
+ Absender- und Empfänger-E-Mail-Adressen für E-Mails des Benutzerpools

**Anmerkung**  
Die Vorlagen für SMS- und E-Mail-Bestätigungsnachrichten werden nur angezeigt, wenn Sie ausgewählt haben, dass die Bestätigung von Telefonnummer und E-Mail erforderlich ist. Auch die Vorlage der SMS-MFA-Nachricht wird nur angezeigt, wenn die MFA-Einstellung als **erforderlich** oder **optional** festgelegt ist.

**Topics**
+ [Nachrichtenvorlagen](#cognito-user-pool-settings-message-templates)
+ [E-Mail- und SMS-MFA-Nachrichten anpassen](#cognito-user-pool-settings-SMS-message-customization)
+ [Anpassen von Nachrichten zur E-Mail-Verifizierung](#cognito-user-pool-settings-email-verification-message-customization)
+ [Anpassen von Nachrichten zur Einladung von Benutzern](#cognito-user-pool-settings-user-invitation-message-customization)
+ [Anpassen Ihrer E-Mail-Adresse](#cognito-user-pool-settings-email-address-customization)
+ [Autorisieren von Amazon Cognito zum Senden von Amazon-SES-E-Mails in Ihrem Auftrag (über eine benutzerdefinierte Absender-E-Mail-Adresse)](#cognito-user-pool-settings-ses-authorization-to-send-email)

## Nachrichtenvorlagen
<a name="cognito-user-pool-settings-message-templates"></a>

Sie können Nachrichtenvorlagen verwenden, um Platzhalter in Ihre Nachrichten einzufügen. Amazon Cognito ersetzt die Platzhalter durch die entsprechenden Werte. Sie können in Nachrichtenvorlagen beliebigen Typs auf *Platzhalter für universelle* Vorlagen verweisen, obwohl diese Werte nicht in allen Nachrichtentypen vorhanden sein werden.


**Universelle Platzhalter für Vorlagen**  

|  Description  |  Token  | Nachrichtentyp | 
| --- | --- | --- | 
| Verifizierungscode | \$1\$1\$1\$1\$1\$1 | Überprüfungs-, Bestätigungs- und MFA-Nachrichten | 
| Temporäres Passwort | \$1\$1\$1\$1\$1\$1 | Passwort und Einladungsnachrichten vergessen | 
| Benutzername | \$1username\$1 | Einladung und erweiterte Sicherheitsnachrichten | 

Eine der verfügbaren automatisierten Antworten mit [Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md) besteht darin, den Benutzer darüber zu informieren, dass Amazon Cognito potenziell bösartige Aktivitäten entdeckt hat. Sie können die Platzhalter in der Vorlage für die erweiterte Sicherheit für folgende Zwecke verwenden:
+ Einfügen von Details zu einem Ereignis, wie IP-Adresse, Stadt, Land, Anmeldezeitpunkt und Gerätename. Amazon Cognito Threat Protection kann diese Details analysieren.
+ Bestätigen, ob ein Klicklink gültig ist
+ Verwenden Sie die Ereignis-ID, das Feedback-Token und den Benutzernamen zum Erstellen eigener Klicklinks.

**Anmerkung**  
Sie müssen bereits über eine konfigurierte Domain für Ihren Benutzerpool verfügen, um Klicklinks zu generieren und die Platzhalter `{one-click-link-valid}` und `{one-click-link-invalid}` in erweiterten Sicherheits-E-Mail-Vorlagen verwenden zu können.

Threat Protection fügt die folgenden Platzhalter hinzu, die Sie in die Nachrichtenvorlagen einfügen können. Diese Platzhalter gelten für **Nachrichten zur adaptiven Authentifizierung**, d. h. Benachrichtigungen, die Amazon Cognito an Benutzer sendet, deren Sitzungen auf ein gewisses Risiko hin bewertet wurden. Um Nachrichtenvorlagen mit diesen Variablen zu konfigurieren, aktualisieren Sie die **Vollfunktionskonfiguration** Ihres Bedrohungsschutzes in der Amazon Cognito Cognito-Konsole oder reichen Sie Vorlagen in einer Anfrage ein [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html).


**Platzhalter in der Vorlage für die erweiterte Sicherheit**  

|  Beschreibung  |  Token  | 
| --- | --- | 
| IP-Adresse | \$1ip-address\$1 | 
| Ort | \$1city\$1 | 
| Country (Land) | \$1country\$1 | 
| Anmeldezeit | \$1login-time\$1 | 
| Gerätename | \$1device-name\$1 | 
| Klicklink ist gültig | \$1one-click-link-valid\$1 | 
| Klicklink ist ungültig | \$1one-click-link-invalid\$1 | 
| Ereignis-ID | \$1event-id\$1 | 
| Feedback-Token | \$1feedback-token\$1 | 

## E-Mail- und SMS-MFA-Nachrichten anpassen
<a name="cognito-user-pool-settings-SMS-message-customization"></a>

Um die SMS- und E-Mail-Nachrichten für die [Multi-Faktor-Authentifizierung (MFA)](user-pool-settings-mfa.md) anzupassen, bearbeiten Sie die **MFA-Nachricht** im Menü **Nachrichtenvorlagen** in der Amazon Cognito Cognito-Benutzerpools-Konsole.

**Wichtig**  
Die benutzerdefinierte Nachricht muss den `{####}`-Platzhalter enthalten. Dieser Platzhalter wird mit dem Authentifizierungscode ersetzt, bevor die Nachricht gesendet wird.

Amazon Cognito legt eine maximale Länge für SMS-Nachrichten, einschließlich des Authentifizierungscodes, von 140 UTF-8-Zeichen fest.

### Anpassen von Nachrichten zur SMS-Verifizierung
<a name="cognito-user-pool-settings-SMS-verification-message-customization"></a>

Um die SMS-Nachricht für die Überprüfung der Telefonnummer anzupassen, bearbeiten Sie die Vorlage für die **Bestätigungsnachricht** **im Menü Nachrichtenvorlagen** Ihres Benutzerpools.

**Wichtig**  
Die benutzerdefinierte Nachricht muss den `{####}`-Platzhalter enthalten. Der Platzhalter wird mit dem Verifizierungscode ersetzt, bevor die Nachricht gesendet wird.

Die maximale Nachrichtenlänge beträgt 140 UTF-8-Zeichen, einschließlich des Verifizierungscodes.

## Anpassen von Nachrichten zur E-Mail-Verifizierung
<a name="cognito-user-pool-settings-email-verification-message-customization"></a>

Um die E-Mail-Adresse eines Benutzers in Ihrem Benutzerpool mit Amazon Cognito zu überprüfen, können Sie dem Benutzer eine E-Mail-Nachricht mit einem Link senden, den er auswählen kann, oder Sie können ihm einen Code senden, den er eingeben kann.

Um den E-Mail-Betreff und den Nachrichteninhalt für Bestätigungsnachrichten der E-Mail-Adresse anzupassen, bearbeiten Sie die Vorlage für **Bestätigungsnachrichten** im Menü **Nachrichtenvorlagen** Ihres Benutzerpools. Sie können einen **Verifizierungstyp** bzw. **Code** oder **Link** auswählen, wenn Sie Ihre Vorlage **Verifizierungsnachrichten** bearbeiten.

Wenn Sie **Code** als Verifizierungstyp ausgewählt haben, muss Ihre benutzerdefinierte Nachricht den Platzhalter `{####}` enthalten. Dieser Platzhalter wird mit dem Verifizierungscode ersetzt, wenn Sie die Nachricht senden.

Wenn Sie **Link** als Verifizierungstyp ausgewählt haben, muss Ihre benutzerdefinierte Nachricht den Platzhalter im Format `{##Verify Your Email##}` enthalten. Sie können die Textzeichenfolge zwischen den Platzhalterzeichen ändern, z. B.: `{##Click here##}`. Dieser Platzhalter wird durch einen Verifizierungslink mit dem Titel *Verifizieren Ihrer E-Mail-Adresse* ersetzt.

Der Link für eine E-Mail-Bestätigungsnachricht leitet Ihren Benutzer zu einer URL weiter, wie im folgenden Beispiel gezeigt.

```
https://<your user pool domain>/confirmUser/?client_id=abcdefg12345678&user_name=emailtest&confirmation_code=123456
```

Die maximale Nachrichtenlänge liegt bei 20 000 UTF-8-Zeichen, einschließlich des Verifizierungscodes (falls vorhanden). Sie können in dieser Nachricht HTML-Tags verwenden, um den Inhalt zu formatieren.

## Anpassen von Nachrichten zur Einladung von Benutzern
<a name="cognito-user-pool-settings-user-invitation-message-customization"></a>

Sie können die Benutzereinladungsnachricht, die Amazon Cognito an neue Benutzer per SMS oder E-Mail sendet, anpassen, indem Sie die Vorlage für **Einladungsnachrichten** im Menü **Nachrichtenvorlagen** bearbeiten.

**Wichtig**  
Die benutzerdefinierte Nachricht muss die Platzhalter `{username}` und `{####}` enthalten. Beim Versenden der Einladungsnachricht ersetzt Amazon Cognito diese Platzhalter durch den Benutzernamen und das Passwort Ihres Benutzers.

Die maximale Länge einer SMS-Nachricht, einschließlich des Verifizierungscodes, beträgt 140 UTF-8-Zeichen. Die maximale Länge einer E-Mail-Nachricht, einschließlich des Verifizierungscodes, beträgt 20 000 UTF-8-Zeichen. Sie können in den E-Mail-Nachrichten HTML-Tags verwenden, um den Inhalt zu formatieren.

## Anpassen Ihrer E-Mail-Adresse
<a name="cognito-user-pool-settings-email-address-customization"></a>

Standardmäßig stammen die E-Mail-Nachrichten, die Amazon Cognito an Benutzer in Ihren Benutzerpools sendet, von der Adresse **no-reply@verificationemail.com**. Sie können personalisierte Absender-E-Mail-Adressen und Empfänger-E-Mail-Adressen angeben, die anstelle von **no-reply@verificationemail.com** verwendet werden sollen.

**So passen Sie die E-Mail-Adressen für FROM und REPLY-TO an**

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 Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das Menü **Authentifizierungsmethoden**. Wählen Sie unter **Email** (E-Mail) die Option **Edit** (Bearbeiten) aus.

1. Wählen Sie eine **SES-Region** aus.

1. Wählen Sie eine **FROM email address** (Absender-E-Mail-Adresse) aus der Liste der E-Mail-Adressen aus, die Sie bei Amazon SES in der ausgewählten **SES Region** (SES-Region) verifiziert haben. Um eine E-Mail-Adresse von einer verifizierten Domain zu verwenden, konfigurieren Sie die E-Mail-Einstellungen in der AWS Command Line Interface oder der AWS API. Weitere Informationen finden Sie unter [Verifizieren von E-Mail-Adressen und Domänen in Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) im *Entwicklerhandbuch für Amazon Simple Email Service*.

1. Wählen Sie einen **Konfigurationssatz** aus der Liste von Konfigurationssätzen in Ihrer ausgewählten **SES-Region** aus.

1. Geben Sie einen **Absendernamen** für Ihre E-Mail-Nachrichten im Format `John Stiles <johnstiles@example.com>` ein.

1. Um die Antwort-E-Mail-Adresse anzupassen, geben Sie eine gültige E-Mail-Adresse in das Feld **Antwort-E-Mail-Adresse** ein.

## Autorisieren von Amazon Cognito zum Senden von Amazon-SES-E-Mails in Ihrem Auftrag (über eine benutzerdefinierte Absender-E-Mail-Adresse)
<a name="cognito-user-pool-settings-ses-authorization-to-send-email"></a>

Sie können Amazon Cognito so konfigurieren, dass es E-Mails von einer benutzerdefinierten Absender-E-Mail-Adresse anstelle von seiner Standardadresse sendet. Um eine benutzerdefinierte Adresse zu verwenden, müssen Sie Amazon Cognito die Berechtigung erteilen, E-Mail-Nachrichten von einer von Amazon SES verifizierten Identität zu senden. In den meisten Fällen können Sie die Berechtigung erteilen, indem Sie eine Sendeautorisierungsrichtlinie erstellen. Weitere Informationen finden Sie unter [Using sending authorization with Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html) (Verwenden der Sendeautorisierung mit Amazon SES) im *Entwicklerhandbuch für Amazon Simple Email Service*. 

Wenn Sie einen Benutzerpool für die Verwendung von Amazon SES für E-Mail-Nachrichten konfigurieren, erstellt Amazon Cognito die `AWSServiceRoleForAmazonCognitoIdpEmailService`-Rolle in Ihrem Konto, um Zugriff auf Amazon SES zu gewähren. Es ist keine Berechtigungsrichtlinie für das Senden von Berechtigungen erforderlich, wenn die servicegebundene `AWSServiceRoleForAmazonCognitoIdpEmailService`-Rolle verwendet wird. Sie müssen nur eine Versandautorisierungsrichtlinie hinzufügen, wenn Sie sowohl die Standard-E-Mail-Funktionalität in Ihrem Benutzerpool verwenden *als auch* eine verifizierte Amazon-SES-Identität als Absenderadresse.

Weitere Informationen zur serviceverknüpften Rolle, die Amazon Cognito erstellt, finden Sie unter [Verwendung von serviceverknüpften Rollen für Amazon Cognito](using-service-linked-roles.md).

Das folgende Beispiel für eine Sendeautorisierungsrichtlinie gewährt Amazon Cognito die eingeschränkte Möglichkeit, eine von Amazon SES verifizierte Identität zu verwenden. Amazon Cognito kann nur dann E-Mail-Nachrichten senden, wenn es diese Funktion für den Benutzerpool in der `aws:SourceArn`-Bedingung als auch für das Konto in der `aws:SourceAccount`-Bedingung übernimmt. Weitere Beispiele finden Sie unter [Beispiele von Amazon-SES-Sendeautorisierungsrichtlinien](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html) im *Entwicklerhandbuch für Amazon Simple Email Service*.

**Anmerkung**  
In diesem Beispiel ist der Wert "Sid" eine beliebige Zeichenfolge, die die Anweisung eindeutig identifiziert. Weitere Informationen zur Richtliniensyntax finden Sie unter [Amazon-SES-Sendeautorisierungsrichtlinien](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html) im *Entwicklerhandbuch für Amazon Simple Email Service*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "stmnt1234567891234",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "email.cognito-idp.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```

------

Die Amazon-Cognito-Konsole fügt eine ähnliche Richtlinie für Sie hinzu, wenn Sie im Dropdown-Menü eine Amazon-SES-Identität auswählen. Wenn Sie den Benutzerpool mit der CLI oder der API konfigurieren, müssen Sie eine Richtlinie an Ihre Amazon-SES-Identität anfügen, die wie das vorherige Beispiel strukturiert ist.

# Erstellen von Benutzerkonten als Administrator
<a name="how-to-create-user-accounts"></a>

Benutzerpools sind nicht nur ein CIAM-Benutzerverzeichnis (Customer Identity and Access Management), in dem sich jeder im Internet für ein Benutzerprofil in Ihrer Anwendung registrieren kann. Sie können die Self-Service-Registrierung deaktivieren. Möglicherweise kennen Sie Ihre Kunden bereits und möchten nur Kunden zulassen, die im Voraus autorisiert wurden. Sie können Ihre Anwendung mit einem [privaten SAML 2.0- oder OIDC-Identitätsanbieter](cognito-user-pools-identity-federation.md) manuell authentifizieren, indem Sie [Benutzer importieren, Benutzer](cognito-user-pools-import-users.md) [bei der Registrierung überprüfen oder Benutzer mit administrativen API-Vorgängen](user-pool-lambda-pre-sign-up.md) erstellen. Ihr Workflow für die administrative Erstellung von Benutzern kann programmatisch sein und Benutzer nach der Registrierung in einem anderen System bereitstellen, oder er kann auf case-by-case oder Testbasis in der Amazon Cognito Cognito-Konsole erfolgen.

Wenn Sie Benutzer als Administrator erstellen, legt Amazon Cognito ein temporäres Passwort für sie fest und sendet eine Willkommens- oder Einladungsnachricht. Sie können dem Link in ihrer Einladungsnachricht folgen und sich zum ersten Mal anmelden, ein Passwort festlegen und ihr Konto bestätigen. Auf der folgenden Seite wird beschrieben, wie Sie neue Benutzer erstellen und die Willkommensnachricht konfigurieren. Weitere Informationen zur Benutzererstellung mit der Benutzerpools-API und einem AWS SDK oder CDK finden Sie unter [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html).

Nachdem Sie Ihren Benutzerpool erstellt haben, können Sie Benutzer sowohl mit der AWS-Managementkonsole Amazon Cognito API als auch mit der AWS Command Line Interface oder der Amazon Cognito API erstellen. Sie können ein Profil für einen neuen Benutzer in einem Create a User Pool und eine Willkommensnachricht mit Anmeldeinformationen an den Benutzer per SMS oder E-Mail senden.

Im Folgenden finden Sie einige Beispiele dafür, wie Administratoren Benutzer in Benutzerpools verwalten können.
+ Erstellen Sie ein neues Benutzerprofil in der Amazon Cognito Cognito-Konsole oder mit der `AdminCreateUser` API-Operation.
+ Stellen Sie username-and-password Ihrem Benutzerpool und App-Client Authentifizierungsabläufe ohne Passwort, Hauptschlüssel und benutzerdefinierte [Authentifizierungsabläufe](amazon-cognito-user-pools-authentication-flow-methods.md) zur Verfügung.
+ Legen Sie Benutzerattributwerte fest.
+ Erstellen Sie benutzerdefinierte Attribute.
+ Legen Sie den Wert unveränderlicher [benutzerdefinierter Attribute](user-pool-settings-attributes.md#user-pool-settings-custom-attributes) in API-Anfragen fest. `AdminCreateUser` Dieses Feature ist in der Amazon-Cognito-Konsole nicht verfügbar.
+ Geben Sie ein temporäres Passwort an, erstellen Sie einen Benutzer ohne Passwort oder erlauben Sie Amazon Cognito, automatisch ein Passwort zu generieren.
+ Erstellen Sie neue Benutzer und bestätigen Sie automatisch ihre Konten, verifizieren Sie ihre E-Mail-Adressen oder ihre Telefonnummern.
+ Geben Sie benutzerdefinierte SMS- und E-Mail-Einladungsnachrichten für neue Benutzer über die AWS-Managementkonsole oder Lambda-Trigger wie [benutzerdefinierte Nachricht](user-pool-lambda-custom-message.md), [benutzerdefinierter SMS-Absender](user-pool-lambda-custom-sms-sender.md) und [benutzerdefinierter E-Mail-Absender an](user-pool-lambda-custom-email-sender.md).
+ Angeben, ob Einladungs-Nachrichten per SMS, E-Mail oder beides gesendet werden.
+ Begrüßungsnachricht an einen vorhandenen Benutzer erneut senden, indem die `AdminCreateUser`-API aufgerufen und `RESEND` für den `MessageAction`-Parameter festgelegt wird.
+ [Unterdrücken](#admincreateuserwalkthrough-step-invitationmessage) Sie das Senden der Einladungsnachricht, wenn der Benutzer erstellt wird.
+ Geben Sie eine Ablaufzeit von bis zu 90 Tagen für neue Benutzerkonten an.
+ Benutzer gestatten, sich anzumelden, oder verlangen, dass neue Benutzer nur durch den Administrator hinzugefügt werden.

Administratoren können Benutzer auch mit AWS Anmeldeinformationen in einer serverseitigen Anwendung anmelden. Weitere Informationen finden Sie unter [Autorisierungsmodelle für die API- und SDK-Authentifizierung](authentication-flows-public-server-side.md).

## Abläufe bei der Benutzerauthentifizierung und Erstellung von Benutzern
<a name="how-to-create-user-accounts-flows"></a>

Für die administrative Erstellung von Benutzern gibt es Optionen, die sich je nach Konfiguration Ihres Benutzerpools unterscheiden. Die *Authentifizierungsabläufe* oder Methoden, die Benutzern für die Anmeldung und MFA zur Verfügung stehen, können die Art und Weise, wie Sie Benutzer erstellen und welche Nachrichten Sie an sie senden, ändern. Im Folgenden sind einige Authentifizierungsabläufe aufgeführt, die in Benutzerpools verfügbar sind.
+ Benutzername und Passwort
+ Hauptschlüssel
+ Melden Sie sich bei einem Drittanbieter an IdPs
+ Passwortlos mit E-Mail- und SMS-Einmalpasswörtern () OTPs
+ Multi-Faktor-Authentifizierung mit E-Mail, SMS und Authenticator-App OTPs
+ Benutzerdefinierte Authentifizierung mit Lambda-Triggern

Weitere Informationen zur Konfiguration dieser Anmeldefaktoren finden Sie unter. [Authentifizierung mit Amazon Cognito Cognito-Benutzerpools](authentication.md)

## Benutzer ohne Passwörter erstellen
<a name="how-to-create-user-accounts-thingstoknow-passwordless"></a>

Wenn Sie die kennwortlose Anmeldung für Ihren Benutzerpool aktiviert haben, können Sie Benutzer ohne Passwörter erstellen. Um einen Benutzer ohne Passwort zu erstellen, müssen Sie Attributwerte für einen verfügbaren kennwortlosen Anmeldefaktor angeben. Wenn in Ihrem Benutzerpool beispielsweise eine passwortlose E-Mail-OTP-Anmeldung verfügbar ist, können Sie einen Benutzer ohne Passwort und mit einem E-Mail-Adressattribut erstellen. Wenn die einzigen Authentifizierungsabläufe, die neuen Benutzern zur Verfügung stehen, ein Passwort erfordern, z. B. einen Hauptschlüssel oder ein Benutzername-Passwort, müssen Sie für jeden neuen Benutzer ein temporäres Passwort erstellen oder generieren.

**Um einen neuen Benutzer ohne Passwort zu erstellen**
+ Wählen Sie in der Amazon Cognito Cognito-Konsole **kein Passwort festlegen**
+ Lassen Sie den `TemporaryPassword` Parameter Ihrer API-Anfrage weg oder lassen Sie `AdminCreateUser` ihn leer

**Benutzer ohne Passwörter werden automatisch bestätigt**  
Normalerweise erhalten neue Benutzer ein temporäres Passwort und gehen in einen `FORCE_CHANGE_PASSWORD` Status über, wenn Sie sie erstellen. Wenn Sie Benutzer ohne Passwörter erstellen, gehen sie sofort in einen `CONFIRMED` Status über. Sie können Bestätigungscodes nicht erneut an diese Benutzer in dem `CONFIRMED` Bundesstaat senden.

**Einladungsnachrichten ändern sich für Benutzer ohne Passwort.**  
Standardmäßig sendet Amazon Cognito eine [Einladungsnachricht an](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-user-invitation-message-customization) neue Benutzer mit dem Hinweis `Your username is {userName} and your password is {####}.` Wenn Sie Benutzer ohne Passwort erstellen, lautet die Meldung `Your username is {userName}.` Passen Sie Ihre Einladungsnachricht an, um zu verdeutlichen, ob Sie Passwörter für Benutzer festlegen. Lassen Sie die `{####}` Kennwortvariable in kennwortlosen Authentifizierungsmodellen weg.

**Sie können Passwörter nicht automatisch generieren, wenn kennwortlose Faktoren verfügbar sind**  
Wenn Sie Ihren Benutzerpool so konfiguriert haben, dass er die kennwortlose Anmeldung per E-Mail oder Telefon per OTP unterstützt, können Sie nicht automatisch ein Passwort generieren. Für jeden Benutzer, der über ein Passwort verfügen wird, müssen Sie bei der Erstellung seines Profils ein temporäres Passwort festlegen.

**Kennwortlose Benutzer müssen Werte für alle erforderlichen Attribute haben**  
Wenn Sie einen Benutzer *ohne* Passwort erstellen, ist Ihre Anfrage nur erfolgreich, wenn der Benutzer Werte für alle Attribute bereitstellt, die Sie in Ihrem Benutzerpool als erforderlich markiert haben. Dies gilt für alle erforderlichen Attribute, nicht nur für die Telefonnummer und die E-Mail-Attribute, die für die OTP-Zustellung erforderlich sind.

## Benutzer erstellen, die später die erforderlichen Attributwerte angeben
<a name="how-to-create-user-accounts-thingstoknow-password-restrictions"></a>

Möglicherweise möchten Sie Attribute in Ihrem Benutzerpool vorschreiben, aber diese Attribute sammeln, nachdem Sie Benutzer administrativ erstellt haben, während der Benutzerinteraktion in Ihrer Anwendung. Administratoren können Werte für erforderliche Attribute weglassen, wenn sie Benutzer *mit temporären* Kennwörtern erstellen. Sie können erforderliche Attributwerte für kennwortlose Benutzer nicht weglassen.

Benutzer mit fehlenden Werten für erforderliche Attribute und einem temporären Passwort erhalten bei der ersten Anmeldung die Aufforderung [NEW\$1PASSWORD\$1REQUIRED](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeResponses). Sie können dann einen Wert für die fehlenden erforderlichen Attribute im Parameter angeben. `requiredAttributes` Sie können Benutzer nur dann mit Passwörtern und ohne erforderliche Attribute erstellen, wenn alle erforderlichen Attribute [veränderbar](user-pool-settings-attributes.md#user-pool-settings-custom-attributes) sind. Benutzer können die Anmeldung mit `NEW_PASSWORD_REQUIRED` Herausforderungen und Werten für erforderliche Attribute nur abschließen, wenn die erforderlichen Attribute vom App-Client aus [beschreibbar](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-about) sind, mit dem sie sich anmelden.

Wenn Sie ein permanentes Passwort für einen vom Administrator erstellten Benutzer einrichten, ändert sich sein Status `CONFIRMED` und Ihr Benutzerpool fordert die Benutzer bei der ersten Anmeldung nicht zur Eingabe eines neuen Kennworts *oder* der erforderlichen Attribute auf.

## Einen neuen Benutzer erstellen in AWS-Managementkonsole
<a name="creating-a-new-user-using-the-console"></a>

Sie können die Anforderungen an das Benutzerpasswort festlegen, die an Benutzer gesendeten Einladungs- und Verifizierungsnachrichten konfigurieren und neue Benutzer mit der Amazon-Cognito-Konsole hinzufügen.

### Festlegen einer Passwortrichtlinie und Aktivieren der Selbstregistrierung
<a name="set-user-password-policy"></a>

Sie können Einstellungen für die minimale Passwortkomplexität konfigurieren und festlegen, ob sich Benutzer APIs in Ihrem Benutzerpool über public registrieren können.

**Konfigurieren einer Passwortrichtlinie**

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 Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das Menü **Authentifizierungsmethoden** und suchen Sie nach **Passwortrichtlinie**. Wählen Sie **Edit**.

1. Wählen Sie für den **Passwortrichtlinienmodus** **Custom** (Benutzerdefiniert) aus.

1. Wählen Sie eine **Mindestpasswortlänge** aus. Beschränkungen für die Passwortlänge finden Sie unter [User pools resource quotas](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#limits-hard) (Benutzerpool-Ressourcenkontingente).

1. Wählen Sie eine **Passwortkomplexität** aus.

1. Wählen Sie aus, wie lange das von Administratoren festgelegte Passwort gültig sein soll.

1. Wählen Sie **Save Changes**.

**Zulassen der Self-Service-Anmeldung**

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 Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das **Anmeldemenü** und suchen Sie nach **Self-Service-Anmeldung**. Wählen Sie **Edit** (Bearbeiten) aus.

1. Wählen Sie aus, ob Sie die **Selbstregistrierung aktivieren** möchten. Die Selbstregistrierung wird in der Regel bei öffentlichen App-Clients verwendet, die neue Benutzer in Ihrem Benutzerpool registrieren müssen, ohne ein geheimes Client-Geheimnis oder AWS Identity and Access Management (IAM-) API-Anmeldeinformationen zu verteilen.
**Deaktivieren der Selbstregistrierung**  
Wenn Sie die Selbstregistrierung nicht aktivieren, müssen neue Benutzer durch administrative API-Aktionen mithilfe von IAM-API-Anmeldeinformationen oder durch Anmeldung bei Verbundanbietern erstellt werden.

1. Wählen Sie **Änderungen speichern ** aus.

### Anpassen von E-Mail- und SMS-Nachrichten
<a name="creating-a-new-user-customize-messages"></a>

**Anpassen von Benutzernachrichten**

Sie können die Nachrichten anpassen, die Amazon Cognito an Ihre Benutzer sendet, wenn Sie sie zur Anmeldung einladen, sie sich für ein Benutzerkonto anmelden oder sich anmelden und zur Multi-Faktor-Authentifizierung (MFA) weitergeleitet werden.
**Anmerkung**  
Es wird eine **Einladungsnachricht** gesendet, wenn Sie einen Benutzer in Ihrem Benutzerpool erstellen und ihn einladen, sich anzumelden. Amazon Cognito sendet erste Anmeldeinformationen an die E-Mail-Adresse oder die Telefonnummer des Benutzers.  
Eine **Verifizierungsnachricht** wird gesendet, wenn sich ein Benutzer für ein Benutzerkonto in Ihrem Benutzerpool anmeldet. Amazon Cognito sendet einen Code an den Benutzer. Wenn der Benutzer Amazon Cognito den Code zur Verfügung stellt, überprüft er seine Kontaktinformationen und bestätigt sein Konto für die Anmeldung. Verifizierungscodes sind 24 Stunden lang gültig.  
Eine **MFA-Nachricht** wird gesendet, wenn Sie SMS MFA in Ihrem Benutzerpool aktivieren, und ein Benutzer, der SMS MFA konfiguriert hat, sich anmeldet und zu MFA weitergeleitet wird.

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 Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das Menü **Nachrichtenvorlagen** und wählen Sie **Bestätigungsnachricht**, **Einladungsnachricht** oder **MFA-Nachricht** aus und wählen Sie **Bearbeiten** aus.

1. Passen Sie die Nachrichten für den ausgewählten Nachrichtentyp an.
**Anmerkung**  
Alle Variablen in Nachrichtenvorlagen müssen beim Anpassen der Nachricht enthalten sein. Wenn die Variable, zum Beispiel **\$1\$1\$1\$1\$1\$1**, nicht enthalten ist, wird Ihr Benutzer nicht über ausreichende Informationen verfügen, um die Nachrichtenaktion abzuschließen.  
Weitere Informationen finden Sie unter [Message templates](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-message-templates.html) (Nachrichtenvorlagen).

1. 

   1. **Verifizierungsnachrichten**

      1. Wählen Sie einen **Verifizierungs-Typ** für **E-Mail-Nachrichten**. Eine **Codeverifizierung** sendet einen numerischen Code, den der Benutzer eingeben muss. Eine **Linkverifizierung** sendet einen Link, den der Benutzer für die Verifizierung der Kontaktinformationen anklicken kann. Der Text in der Variable für eine **Linknachricht** wird als Hyperlinktext angezeigt. Beispielsweise wird eine Nachrichtenvorlage mit der Variable \$1\$1\$1Click here\$1\$1\$1 als [Click here]() (Hier klicken) in der E-Mail-Nachricht angezeigt.

      1. Geben Sie einen **E-Mail-Betreff** für **E-Mail-Nachrichten** ein.

      1. Geben Sie eine benutzerdefinierte **E-Mail-Vorlage** für **E-Mail-Nachrichten** ein. Sie können diese Vorlage mit HTML anpassen.

      1. Geben Sie eine benutzerdefinierte **SMS-Vorlage** für **SMS-Nachrichten** ein.

      1. Wählen Sie **Save Changes**.

   1. **Einladungsnachrichten**

      1. Geben Sie einen **E-Mail-Betreff** für **E-Mail-Nachrichten** ein.

      1. Geben Sie eine benutzerdefinierte **E-Mail-Vorlage** für **E-Mail-Nachrichten** ein. Sie können diese Vorlage mit HTML anpassen.

      1. Geben Sie eine benutzerdefinierte **SMS-Vorlage** für **SMS-Nachrichten** ein.

      1. Wählen Sie **Save Changes**.

   1. **MFA-Nachrichten**

      1. Geben Sie eine benutzerdefinierte **SMS-Vorlage** für **SMS-Nachrichten** ein.

      1. Wählen Sie **Save Changes**.

### Erstellen eines Benutzers
<a name="creating-a-new-user-using-the-users-tab"></a>

**Erstellen eines Benutzers**

Sie können über die Amazon-Cognito-Konsole neue Benutzer für Ihren Benutzerpool erstellen. In der Regel können sich Benutzer anmelden, nachdem sie ein Passwort festgelegt haben. Zum Anmelden mit einer E-Mail-Adresse oder einer Telefonnummer muss ein Benutzer das `email`-Attribut verifizieren. Zum Anmelden mit einer Telefonnummer muss der Benutzer das `phone_number`-Attribut verifizieren. Um Konten als Administrator zu bestätigen, können Sie auch die API AWS CLI oder verwenden oder Benutzerprofile mit einem föderierten Identitätsanbieter erstellen. Weitere Informationen finden Sie in der [Amazon-Cognito-API-Referenz](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/).

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 Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Wählen Sie das Menü „**Benutzer**“ und wählen Sie „**Benutzer erstellen**“.

1. In den **Anforderungen für die Anmeldung im Benutzerpool und die Sicherheit** finden Sie Anleitungen zu Passwortanforderungen, verfügbare Methoden zur Kontowiederherstellung und Aliasattribute für Ihren Benutzerpool.

1. <a name="admincreateuserwalkthrough-step-invitationmessage"></a>Wählen Sie aus, wie Sie eine **Invitation message** (Einladungsnachricht) senden möchten. Wählen Sie SMS-Nachricht, E-Mail-Nachricht oder beides aus. Um die Einladungsnachricht zu unterdrücken, wählen **Sie Keine Einladung senden**.
**Anmerkung**  
Bevor Sie Einladungsnachrichten versenden können, müssen Sie im Menü **Authentifizierungsmethoden** Ihres Benutzerpools einen Absender und einen AWS-Region mit Amazon Simple Notification Service und Amazon Simple Email Service konfigurieren. Es gelten Empfängernachrichten und Datengebühren. Amazon SES berechnet Ihnen E-Mail-Nachrichten separat und Amazon SNS berechnet Ihnen SMS-Nachrichten separat.

1. Wählen Sie einen **Username** (Benutzername) für den neuen Benutzer aus.

1. Wählen Sie aus, ob Sie mit **Create a password** (Passwort erstellen) ein Passwort erstellen oder Amazon Cognito mit **Generate a password** (Passwort generieren) ein Passwort für den Benutzer generieren lassen möchten. Die Option zum Generieren eines Passworts ist nicht verfügbar, wenn die [passwortlose Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) im Benutzerpool verfügbar ist. Jedes temporäre Passwort muss der Passwortrichtlinie des Benutzerpools entsprechen.

1. Wählen Sie **Erstellen** aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie den Eintrag **Benutzername** für den Benutzer. Fügen Sie **User attributes** (Benutzerattribute) und **Group memberships** (Gruppenmitgliedschaften) hinzu und bearbeiten Sie diese. Sehen Sie sich **User event history** (Ereignisverlauf des Benutzers) an.

# Hinzufügen von Gruppen zu einem Benutzerpool
<a name="cognito-user-pools-user-groups"></a>

Durch Unterstützung für Gruppen in Amazon-Cognito-Benutzerpools können Sie Gruppen erstellen und verwalten, Benutzer zu Gruppen hinzufügen und aus ihnen entfernen. Verwenden Sie Gruppen, um Sammlungen von Benutzern zu erstellen und deren Berechtigungen zu verwalten oder verschiedene Arten von Benutzern darzustellen. Sie können einer Gruppe eine AWS Identity and Access Management (IAM-) Rolle zuweisen, um die Berechtigungen für Mitglieder einer Gruppe zu definieren.

Sie können Gruppen verwenden, um eine Auswahl von Benutzern in einem Benutzerpool zu erstellen, womit oft die Berechtigungen für diese Benutzer festgelegt werden. Beispielsweise können Sie separate Gruppen für Benutzer, die Leser, Mitwirkende und Redakteure Ihrer Website und Anwendung sind, erstellen. Über die IAM-Rolle, die einer Gruppe zugeordnet ist, können Sie auch verschiedene Berechtigungen für diese verschiedenen Gruppen festlegen, sodass nur Mitwirkende Inhalte in Amazon S3 stellen und nur Herausgeber Inhalte über eine API in Amazon API Gateway veröffentlichen können.

Amazon Cognito erstellt eine Benutzergruppe für jeden OIDC und jeden Social [Identity Provider](cognito-user-pools-identity-federation.md#cognito-user-pools-identity-federation-how-it-works) (IdP), den Sie Ihrem Benutzerpool hinzufügen. SAMl Der Name der Gruppe hat das Format`[user pool ID]_[IdP name]`, zum Beispiel oder. `us-east-1_EXAMPLE_MYSSO` `us-east-1_EXAMPLE_Google` Jedes eindeutige, automatisch generierte IdP-Benutzerprofil wird automatisch zu dieser Gruppe hinzugefügt. [Verknüpfte Benutzer](cognito-user-pools-identity-federation-consolidate-users.md) werden dieser Gruppe nicht automatisch hinzugefügt, aber Sie können ihre Profile der Gruppe in einem separaten Prozess hinzufügen.

Sie können Gruppen in einem Benutzerpool über die AWS-Managementkonsole, die und die APIs CLI erstellen und verwalten. Als Entwickler (mit AWS Anmeldeinformationen) können Sie die Gruppen für einen Benutzerpool erstellen, lesen, aktualisieren, löschen und auflisten. Sie können auch Benutzer zu Gruppen hinzufügen und aus ihnen entfernen.

Es fallen keine zusätzlichen Kosten für die Nutzung von Gruppen in einem Benutzerpool an. Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing/).

## Zuweisen von IAM-Rollen zu Gruppen
<a name="assigning-iam-roles-to-groups"></a>

Sie können Gruppen verwenden, um Berechtigungen für Ihre Ressourcen mithilfe einer IAM-Rolle zu steuern. IAM-Rollen umfassen Vertrauensrichtlinien und Berechtigungsrichtlinien. Die [Rollenvertrauensrichtlinie](https://docs.aws.amazon.com/cognito/latest/developerguide/role-trust-and-permissions.html) gibt an, wer die Rolle verwenden kann. Die [Berechtigungsrichtlinien](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies) geben die Aktionen und Ressourcen an, auf die Ihre Gruppenmitglieder zugreifen können. Wenn Sie eine IAM-Rolle erstellen, richten Sie die Rollenvertrauensrichtlinie ein, damit die Gruppenbenutzer die Rolle übernehmen können. In Rollenberechtigungsrichtlinien geben Sie die Berechtigungen an, die Ihre Gruppe besitzen soll.

Wenn Sie eine Gruppe in Amazon Cognito erstellen, geben Sie eine IAM-Rolle an, indem Sie den [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) der Rolle angeben. Wenn sich Gruppenmitglieder mit Amazon Cognito anmelden, können sie temporäre Anmeldeinformationen aus den Identitätspools erhalten. Ihre Berechtigungen werden anhand der zugeordneten IAM-Rolle bestimmt.

Einzelne Benutzer können sich in mehreren Gruppen befinden. Als Entwickler haben Sie die folgenden Optionen zur automatischen Auswahl der IAM-Rolle, wenn sich ein Benutzer in mehreren Gruppen befindet:
+ Sie können für jede Gruppe Rangfolgenwerte zuweisen. Die Gruppe mit der besseren (niedrigeren) Priorität wird ausgewählt und ihre zugehörige IAM-Rolle wird angewendet. 
+ Ihre App kann auch aus den verfügbaren Rollen wählen, wenn sie AWS Anmeldeinformationen für einen Benutzer über einen Identitätspool anfordert, indem Sie im [GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)`CustomRoleARN`Parameter einen Rollen-ARN angeben. Die angegebene IAM-Rolle muss einer Rolle entsprechen, die für den Benutzer verfügbar ist.

## Zuweisen von Prioritätswerten zu Gruppen
<a name="assigning-precedence-values-to-groups"></a>

Ein Benutzer kann mehreren Gruppen angehören. In den Zugriffs- und ID-Tokens eines Benutzers enthält der `cognito:groups`-Anspruch die Liste aller Gruppen, denen ein Benutzer angehört. Der `cognito:roles`-Anspruch enthält die Liste der Rollen entsprechend den Gruppen.

Da ein Benutzer mehreren Gruppen angehören kann, kann jeder Gruppe eine Priorität zugewiesen werden. Hierbei handelt es sich um eine nicht-negative Zahl, die die Priorität dieser Gruppe im Vergleich zu anderen Gruppen angibt, denen ein Benutzer im Benutzerpool angehört. Null ist die höchste Priorität. Gruppen mit niedrigen Prioritätswerten haben Vorrang vor Gruppen mit höheren Prioritäts- oder NULL-Werten. Wenn ein Benutzer zwei oder mehr Gruppen angehört, ist es die Gruppe mit dem niedrigsten Prioritätswert, deren IAM-Rolle dem `cognito:preferred_role`-Anspruch im Benutzer-ID-Token zugewiesen wird.

Zwei Gruppen können dieselbe Priorität aufweisen. Wenn dies geschieht, hat keine Gruppe Vorrang vor der anderen. Wenn zwei Gruppen mit demselben Prioritätswert den gleichen Rollen-ARN haben, wird diese Rolle im `cognito:preferred_role`-Anspruch in ID-Token für Benutzer in jeder Gruppe verwendet. Wenn die beiden Gruppen unterschiedliche Rollen haben ARNs, wird der `cognito:preferred_role` Anspruch nicht in den ID-Token der Benutzer festgelegt.

## Verwenden von Gruppen zur Steuerung von Berechtigungen mit Amazon API Gateway
<a name="using-groups-to-control-permission-with-amazon-api-gateway"></a>

Sie können Gruppen in einem Benutzerpool verwenden, um die Berechtigung mit Amazon API Gateway zu steuern. Die Gruppen, bei denen ein Benutzer Mitglied ist, sind sowohl im ID-Token als auch im Zugriffstoken von einem Benutzerpool im `cognito:groups`-Anspruch enthalten. Sie können ID- oder Zugriffstoken mit Anfragen an Amazon API Gateway senden und einen Amazon-Cognito-Benutzerpool-Autorisierer für eine REST-API verwenden. Weitere Informationen finden Sie unter [Control access to a REST API using Amazon cognito user pools as authorizer](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) (Zugriff auf eine REST-API mit Amazon-Cognito-Benutzerpools als Autorisierer) im [Entwicklerhandbuch von API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/).

Sie können den Zugriff auf eine Amazon-API-Gateway-HTTP-API auch mit einem benutzerdefinierten JWT-Autorisierer autorisieren. Weitere Informationen finden Sie unter [Steuern des Zugriffs auf HTTP APIs mit JWT-Autorisierern](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html) im [API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/) Developer Guide.

## Einschränkungen für Gruppen
<a name="user-pool-user-groups-limitations"></a>

Benutzergruppen unterliegen den folgenden Einschränkungen:
+ Die Anzahl der Gruppen, die Sie erstellen können, ist durch die [Amazon Cognito-Servicekontingente](quotas.md) begrenzt.
+ Gruppen können nicht verschachtelt werden.
+ Sie können nicht nach Benutzern in einer Gruppe suchen.
+ Sie können nicht nach Namen nach Gruppen suchen, aber Sie können Gruppen auflisten.

## Erstellen einer neuen Gruppe in AWS-Managementkonsole
<a name="creating-a-new-group-using-the-console"></a>

Gehen Sie wie folgt vor, um eine neue Gruppe zu erstellen.

**Neue Gruppe erstellen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Gruppen** und dann **Gruppe erstellen** aus.

1. Geben Sie auf der Seite **Create a group** (Ressourcengruppe erstellen) für **Group name** (Gruppenname) einen Namen für Ihre Gruppe ein.

1. Sie können optional zusätzliche Informationen zu dieser Gruppe mithilfe eines der folgenden Felder angeben:
   + **Description** (Beschreibung) – Geben Sie Details darüber ein, wofür diese neue Gruppe verwendet wird.
   + **Precedence** (Priorität) – Amazon Cognito wertet alle Gruppenberechtigungen für einen bestimmten Benutzer aus und wendet sie an, basierend darauf, zu welchen Gruppen der Benutzer gehört und welche Gruppen den niedrigeren Prioritätswert haben. Die Gruppe mit der niedrigeren Priorität wird ausgewählt und ihre zugehörige IAM-Rolle wird angewendet. Weitere Informationen finden Sie unter [Zuweisen von Prioritätswerten zu Gruppen](#assigning-precedence-values-to-groups).
   + **IAM-Rolle** – Sie können Ihrer Gruppe eine IAM-Rolle zuweisen, wenn Sie Berechtigungen für Ihre Ressourcen steuern müssen. Wenn Sie einen Benutzerpool in einen Identitäten-Pool integrieren, bestimmt die Einstellung **IAM role (IAM-Rolle)**, welche Rolle im Benutzer-ID-Token zugewiesen wird, wenn der Identitäten-Pool zur Auswahl der Rolle über das Token konfiguriert ist. Weitere Informationen finden Sie unter [Zuweisen von IAM-Rollen zu Gruppen](#assigning-iam-roles-to-groups).
   + **Add users to this group** (Dieser Gruppe Benutzer hinzufügen) – Fügen Sie vorhandene Benutzer als Mitglieder dieser Gruppe hinzu, nachdem sie erstellt wurde.

1. Wählen Sie **Create** (Erstellen) aus, um dies zu bestätigen.

# Verwalten von und Suchen nach Benutzerkonten
<a name="how-to-manage-user-accounts"></a>

Benutzerpools können Millionen von Benutzern enthalten. Die Arbeit mit einem Datensatz dieser Größe ist eine Herausforderung für Administratoren. Amazon Cognito verfügt über Tools zum Suchen und Ändern von Benutzerprofilen. Die wichtigsten Methoden zum Auffinden von Benutzern sind das **Benutzermenü** der Amazon Cognito Cognito-Konsole und mit [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html). Von den Methoden, mit denen Informationen über Benutzer abgerufen werden, sind dies die Optionen, die sich nicht auf die Kosten auswirken, im Gegensatz zu beispielsweise. [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html)

Dieser Abschnitt des Handbuchs enthält Informationen zum Suchen und Aktualisieren von Benutzerprofilen in einem Benutzerpool.

## Anzeigen von Benutzerattributen
<a name="manage-user-accounts-viewing-user-attributes"></a>

Gehen Sie wie folgt vor, um Benutzerattribute in der Amazon-Cognito-Konsole anzuzeigen.

**Benutzerattribute aufrufen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie einen Benutzer in der Liste aus.

1. Auf der Detailseite des Benutzers unter **User attributes** (Benutzerattribute) können Sie anzeigen, welche Attribute mit dem Benutzer verknüpft sind.

## Zurücksetzen des Passworts eines Benutzers.
<a name="manage-user-accounts-reset-user-password"></a>

Gehen Sie wie folgt vor, um ein Benutzerpasswort in der Amazon-Cognito-Konsole zurückzusetzen.

**Benutzerpasswort zurücksetzen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie einen Benutzer in der Liste aus.

1. Wählen Sie auf der Detailseite des Benutzers die Option **Actions** (Aktionen), **Reset password** (Passwort zurücksetzen) aus.

1. Überprüfen Sie im Dialog **Reset password** (Passwort zurücksetzen) die Daten und wählen Sie anschließend **Reset** (Zurücksetzen) aus.

   Die Aktion bewirkt, dass ein Bestätigungscode sofort an den Benutzer gesendet und das aktuelle Passwort des Benutzers deaktiviert wird, indem der Benutzerstatus auf `RESET_REQUIRED` gesetzt wird. Der Code **Reset password** (Passwort zurücksetzen) ist für eine Stunde gültig.

## Benutzerkonten aktivieren, deaktivieren und löschen
<a name="manage-user-accounts-enable-disable"></a>

Sie können unbenutzte Benutzerprofile löschen oder, wenn Sie den Zugriff vorübergehend verhindern möchten, sie deaktivieren. Benutzer können ihre eigenen Konten löschen, aber nur Benutzerpooladministratoren können Benutzerkonten aktivieren und deaktivieren.

**Auswirkung des Löschens**  
Benutzer können sich nicht mit gelöschten Benutzerkonten anmelden. Um wieder Zugriff darauf zu erhalten, müssen sie sich registrieren oder erneut erstellt werden.

**Auswirkung der Deaktivierung von Konten**  
Wenn Sie ein Benutzerkonto deaktivieren, macht Amazon Cognito automatisch alle authentifizierten Sitzungen ungültig, deaktiviert das Benutzerkonto für die Anmeldung und [widerruft](token-revocation.md) deren Zugriffs- und Aktualisierungstoken. Amazon Cognito gibt einen `invalid_request` Fehler mit der Meldung zurück`User is not enabled`, wenn ein Benutzer versucht, sich bei einem Konto anzumelden, das Sie deaktiviert haben. Dieses Verhalten ändert sich nicht mit Ihren [Einstellungen zur Offenlegung der Benutzerexistenz](cognito-user-pool-managing-errors.md) für den App-Client. Sie können lokale Benutzerkonten und die lokalen Profile von Verbundbenutzerkonten deaktivieren. Wenn sich Benutzer mit der verwalteten Anmeldung oder der klassischen gehosteten Benutzeroberfläche anmelden, deaktivieren Sie ihr Konto und sie versuchen dann erneut, sich mit dem Browser-Cookie anzumelden, das ihre authentifizierte Sitzung beibehält, Amazon Cognito leitet sie auf die Anmeldeseite weiter.

**Auswirkung der Aktivierung von Konten**  
Benutzer können sich sofort bei Konten anmelden, nachdem Sie sie aktiviert haben. Benutzerkonten sind standardmäßig aktiviert. Die Attribute und Passwörter der Benutzer bleiben dieselben wie vor der Deaktivierung ihres Kontos. Token, die Ihre Anwendung gesperrt hat, unabhängig davon, ob Sie das Benutzerkonto deaktiviert oder das Aktualisierungstoken separat gesperrt haben, bleiben ungültig, nachdem Sie das Benutzerkonto aktiviert haben, dem das Token gehörte.

------
#### [ Delete a user account (console) ]

**Um ein Benutzerkonto zu löschen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie das Optionsfeld neben dem Benutzernamen eines Benutzers in der Liste aus.

1. Wählen Sie **Löschen** aus.

1. Wählen **Sie Benutzerzugriff deaktivieren**.

1. Wählen Sie **Löschen** aus.

------
#### [ Delete a user account (API) ]

Benutzer können ihre Konten mit dem access-token-authorized [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html)Self-Service-API-Vorgang löschen. Im Folgenden finden Sie ein Beispiel für einen `DeleteUser` Anfragetext.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

Administratoren können Benutzerkonten mit dem von IAM autorisierten [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html)API-Vorgang löschen. Im Folgenden finden Sie ein Beispiel für einen `AdminDeleteUser` Anfragetext.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ Disable a user account (console) ]

**Um ein Benutzerkonto zu deaktivieren**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie den Benutzernamen eines Benutzers in der Liste aus.

1. Wählen Sie auf der Seite mit den Benutzerdetails die Optionen **Aktionen**, **Benutzerzugriff deaktivieren** aus.

1. Wählen Sie in dem daraufhin erstellten Dialogfeld die Option **Deaktivieren** aus.

------
#### [ Disable a user account (API) ]

Administratoren können Benutzerkonten mit dem von IAM autorisierten [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html)API-Vorgang deaktivieren. Im Folgenden finden Sie ein Beispiel für einen `AdminDisableUser` Anfragetext.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ Enable a user account (console) ]

**Um ein Benutzerkonto zu aktivieren**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und wählen Sie den Benutzernamen eines Benutzers in der Liste aus.

1. Wählen Sie auf der Seite mit den Benutzerdetails die Optionen **Aktionen**, **Benutzerzugriff aktivieren** aus.

1. Wählen Sie in dem daraufhin erstellten Dialogfeld die Option **Aktivieren** aus.

------
#### [ Enable a user account (API) ]

Administratoren können Benutzerkonten mit dem von IAM autorisierten [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html)API-Vorgang aktivieren. Im Folgenden finden Sie ein Beispiel für einen `AdminEnableUser` Anfragetext.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Suchen nach Benutzerattributen
<a name="manage-user-accounts-searching-user-attributes"></a>

Wenn Sie bereits einen Benutzerpool erstellt haben, können Sie im Bereich **Users (Benutzer)** in der AWS-Managementkonsole danach suchen. Sie können auch die Amazon Cognito [ListUsers Cognito-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) verwenden, die einen **Filter-Parameter** akzeptiert.

Sie können nach jedem der folgenden Standardattribute suchen. Benutzerdefinierte Attribute können nicht gesucht werden.
+ username (ohne Beachtung der Groß- und Kleinschreibung)
+ email
+ phone\$1number
+ Name
+ given\$1name
+ family\$1name
+ preferred\$1username
+ cognito:user\$1status (als **Status** in der Konsole bezeichnet) (ohne Beachtung der Groß- und Kleinschreibung)
+ Status (als **Enabled** in der Konsole bezeichnet) (Groß-/Kleinschreibung beachten)
+ sub

**Anmerkung**  
Sie können Benutzer auch mit einem clientseitigen Filter auflisten. Der serverseitige Filter entspricht nicht mehr als einem Attribut. Verwenden Sie für die erweiterte Suche einen clientseitigen Filter mit dem `--query`-Parameter der `list-users`-Aktion in der AWS Command Line Interface. Wenn Sie einen clientseitigen Filter verwenden, wird eine paginierte Liste mit null oder mehr Benutzern ListUsers zurückgegeben. Sie können mehrere Seiten in einer Zeile ohne Ergebnisse erhalten. Wiederholen Sie die Abfrage mit jedem Paginierungstoken, das zurückgegeben wird, bis Sie einen Null-Paginierungstoken erhalten, und überprüfen Sie dann das kombinierte Ergebnis.  
Weitere Informationen zur serverseitigen und clientseitigen Filterung finden Sie im Benutzerhandbuch unter [Filtern AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html) der Ausgabe. AWS Command Line Interface 

## Auf der Suche nach Benutzern mit dem AWS-Managementkonsole
<a name="cognito-user-pools-manage-user-accounts-searching-for-users-using-console"></a>

Wenn Sie bereits einen Benutzerpool erstellt haben, können Sie im Bereich **Users (Benutzer)** in der AWS-Managementkonsole danach suchen.

AWS-Managementkonsole Suchanfragen sind immer Präfix-Suchen („beginnt mit“).

**In der Amazon-Cognito-Konsole nach einem Benutzer suchen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Möglicherweise werden Sie zur Eingabe Ihrer AWS Anmeldeinformationen aufgefordert.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer** und geben Sie den Benutzernamen in das Suchfeld ein. Beachten Sie, dass bei einigen Attributwerten zwischen Groß- und Kleinschreibung unterschieden wird. (Beispielsweise bei **Username** (Benutzername).

   Sie können Benutzer auch finden, indem Sie den Suchfilter anpassen, um den Umfang auf andere Benutzereigenschaften zu beschränken, z. B. **Email** (E-Mail), **Phone number** (Telefonnummer) oder **Last name** (Nachname).

## Suchen nach Benutzern mit der `ListUsers`-API
<a name="cognito-user-pools-searching-for-users-using-listusers-api"></a>

 Verwenden Sie die Amazon Cognito [ListUsers Cognito-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html), um in Ihrer App nach Benutzern zu suchen. Diese API verwendet die folgenden Parameter: 
+  `AttributesToGet`Ein Array von Zeichenfolgen, in dem jede Zeichenfolge der Name eines Benutzerattributs ist, der für jeden Benutzer in den Suchergebnissen zurückgegeben wird. Wenn Sie alle Attribute abrufen möchten, geben Sie keinen `AttributesToGet`-Parameter an oder fordern `AttributesToGet` mit einem Wert der Literalzeichenfolge `null` an.
+  `Filter`: Eine Filter-Zeichenfolge in der Form "`AttributeName` `Filter-Type` "`AttributeValue`"". Anführungszeichen in der Filterzeichenfolge müssen mit dem umgekehrten Schrägstrich (`\`) durch Escape-Zeichen geschützt sein. Beispiel, `"family_name = \"Reddy\""`. Wenn die Filterzeichenfolge leer ist, gibt `ListUsers` alle Benutzer im Benutzerpool zurück. 
  +  `AttributeName`: Die Namen des Attributs, nach dem gesucht werden soll. Sie können nur jeweils nach einem Attribut suchen. 
**Anmerkung**  
Sie können nur nach Standard-Attributen suchen. Benutzerdefinierte Attribute können nicht gesucht werden. Der Grund hierfür ist, dass nur die indizierten Attribute gesucht werden können, und benutzerdefinierte Attribute können nicht indexiert werden.
  +  `Filter-Type`: Für eine exakte Übereinstimmung verwenden Sie `=`, z. B. `given_name = "Jon"`. Für ein Präfix ("beginnt mit"), verwenden Sie `^=`, z. B. `given_name ^= "Jon"`. 
  +  `AttributeValue`: Die Attributwert, der für jeden Benutzer übereinstimmen muss.
+  `Limit`: Maximale Anzahl der zurückgegebenen Benutzer.
+  `PaginationToken`: Ein Token, um weitere Ergebnisse aus einer vorherigen Suche zu erhalten. Amazon Cognito lässt das Paginierungstoken nach einer Stunde ablaufen.
+  `UserPoolId`: Die Benutzerpool-ID für den Benutzerpool, in dem die Suche durchgeführt werden soll.

Alle Suche sind ohne Berücksichtigung von Groß-/Kleinschreibung. Die Suchergebnisse werden nach dem durch die `AttributeName`-Zeichenfolge benannten Attribut in aufsteigender Reihenfolge sortiert.

## Beispiele zu Verwendung der `ListUsers`-API
<a name="cognito-user-pools-searching-for-users-listusers-api-examples"></a>

Das folgende Beispiel gibt alle Benutzer zurück und enthält alle Attribute.

```
{
    "AttributesToGet": null,
    "Filter": "",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

Das folgende Beispiel gibt alle Benutzer zurück, deren Telefonnummer mit"\$11312" beginnt, und enthält alle Attribute.

```
{
    "AttributesToGet": null,
    "Filter": "phone_number ^= \"+1312\"",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

Das folgende Beispiel gibt die ersten 10 Benutzer zurück, deren Familienname "Reddy" ist. Für jeden Benutzer umfassen die Suchergebnisse den Rufnamen, die Telefonnummer und die E-Mail-Adresse. Wenn es mehr als 10 passender Benutzer im Benutzerpool gibt, enthält die Antwort ein Paginierungs-Token.

```
{
    "AttributesToGet": [
        "given_name", 
        "phone_number", 
        "email"
    ],
    "Filter": "family_name = \"Reddy\"",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

Wenn das vorherige Beispiel ein Paginierung-Token zurückgibt, gibt das folgende Beispiel die nächsten 10 Benutzer zurück, die der gleichen Filterzeichenfolge entsprechen.

```
{
    "AttributesToGet": [
        "given_name", 
        "phone_number", 
        "email"
    ],
    "Filter": "family_name = \"Reddy\"",
    "Limit": 10,
    "PaginationToken": "pagination_token_from_previous_search",
    "UserPoolId": "us-east-1_samplepool"
}
```

# Passwörter, Kontowiederherstellung und Passwortrichtlinien
<a name="managing-users-passwords"></a>

Allen Benutzern, die sich bei einem Benutzerpool anmelden, auch [Verbundbenutzern](cognito-terms.md#terms-federateduser), sind ihren Benutzerprofilen Kennwörter zugewiesen. [Lokale Benutzer](cognito-terms.md#terms-localuser) und [verknüpfte Benutzer](cognito-terms.md#terms-linkeduser) müssen bei der Anmeldung ein Passwort angeben. Verbundbenutzer verwenden keine Benutzerpool-Passwörter, sondern melden sich mit ihrem Identity Provider (IdP) an. Sie können Benutzern gestatten, ihre eigenen Passwörter zurückzusetzen, Passwörter als Administrator zurückzusetzen oder zu ändern, und [Richtlinien für die Komplexität und den Verlauf von Kennwörtern festlegen](#user-pool-settings-policies).

Amazon Cognito speichert Benutzerkennwörter nicht im Klartext. Stattdessen speichert es einen Hash der Passwörter jedes Benutzers mit einem benutzerspezifischen Salt. Aus diesem Grund können Sie keine vorhandenen Passwörter aus den Benutzerprofilen in Ihren Benutzerpools abrufen. Es hat sich bewährt, Benutzerkennwörter im Klartext-Format nirgends zu speichern. Führen Sie Kennwortzurücksetzungen durch, wenn Benutzer ihre Passwörter vergessen haben.

## Zurücksetzen und Wiederherstellen von Passwörtern
<a name="user-pool-password-reset-and-recovery"></a>

Benutzer vergessen ihre Passwörter. Möglicherweise möchten Sie, dass sie ihr Passwort selbst zurücksetzen können, oder Sie möchten verlangen, dass ein Administrator ihr Passwort für sie zurücksetzt. Amazon Cognito Cognito-Benutzerpools bieten Optionen für beide Modelle. Dieser Teil des Handbuchs behandelt die Benutzerpool-Einstellungen und die API-Operationen für das Zurücksetzen von Passwörtern.

Der [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API-Vorgang und die verwaltete Anmeldeoption **Haben Sie Ihr Passwort vergessen?** Senden Sie Benutzern einen Code, mit dem sie, wenn sie bestätigen, dass sie den richtigen Code haben, die Möglichkeit haben, ein neues Passwort festzulegen [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html). Dies ist das Self-Service-Modell zur Kennwortwiederherstellung.

**Wiederherstellung nicht verifizierter Benutzer**  
Sie können Wiederherstellungsnachrichten an Benutzer senden, die ihre E-Mail-Adresse oder Telefonnummer bestätigt haben. Wenn sie keine bestätigte Wiederherstellungs-E-Mail oder Telefonnummer haben, kann ein Benutzerpooladministrator ihre E-Mail-Adresse oder Telefonnummer als verifiziert markieren. Bearbeiten Sie die **Benutzerattribute des Benutzers** in der Amazon Cognito Cognito-Konsole und aktivieren Sie das Kontrollkästchen neben **Telefonnummer als verifiziert** **markieren oder E-Mail-Adresse als verifiziert** markieren. Sie können `email_verified` oder in einer [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)Anfrage auch `phone_number_verified` auf true setzen. Neuen Benutzern sendet der [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API-Vorgang einen neuen Code an ihre E-Mail-Adresse oder Telefonnummer und sie können die Bestätigung und Verifizierung per Self-Service durchführen.

**Setzen Sie Passwörter als Administrator zurück**  
Bei den [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)und [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)API-Vorgängen handelt es sich um vom Administrator initiierte Methoden zum Zurücksetzen von Kennwörtern. `AdminSetUserPassword`legt ein temporäres oder permanentes Passwort fest und `AdminResetUserPassword` sendet Benutzern auf dieselbe Weise einen Code zum Zurücksetzen des Passworts wie. `ForgotPassword`

### Konfigurieren Sie das Zurücksetzen und Wiederherstellen von Kennwörtern
<a name="user-pool-password-reset-and-recovery-configure"></a>

Amazon Cognito wählt Ihre Kontowiederherstellungsoptionen automatisch aus den erforderlichen Attributen und Anmeldeoptionen aus, die Sie beim Erstellen eines Benutzerpools in der Konsole auswählen. Sie können diese Standardeinstellungen ändern.

Die bevorzugte MFA-Methode eines Benutzers beeinflusst die Methoden, mit denen er sein Passwort wiederherstellen kann. Benutzer, deren bevorzugte MFA per E-Mail-Nachricht erfolgt, können keinen Code zum Zurücksetzen des Passworts per E-Mail erhalten. Benutzer, deren bevorzugte MFA per SMS-Nachricht erfolgt, können keinen Code zum Zurücksetzen des Passworts per SMS erhalten.

Ihre Einstellungen für die [Kennwortwiederherstellung](#user-pool-password-reset-and-recovery) müssen eine alternative Option bieten, wenn Benutzer nicht für Ihre bevorzugte Methode zum Zurücksetzen des Passworts in Frage kommen. Beispielsweise könnten Ihre Wiederherstellungsmechanismen E-Mail als erste Priorität haben und E-Mail-MFA könnte eine Option in Ihrem Benutzerpool sein. Fügen Sie in diesem Fall die Kontowiederherstellung per SMS-Nachricht als zweite Option hinzu oder verwenden Sie administrative API-Operationen, um die Passwörter für diese Benutzer zurückzusetzen.

Amazon Cognito beantwortet Anfragen zum Zurücksetzen von Passwörtern von Benutzern, die keine gültige Wiederherstellungsmethode haben, mit einer Fehlerantwort. `InvalidParameterException`

**Anmerkung**  
Benutzer können MFA- und Passwort-Reset-Codes nicht an dieselbe E-Mail-Adresse oder Telefonnummer erhalten. Wenn sie Einmalpasswörter (OTPs) aus E-Mail-Nachrichten für MFA verwenden, müssen sie SMS-Nachrichten für die Kontowiederherstellung verwenden. Wenn sie OTPs SMS-Nachrichten für MFA verwenden, müssen sie E-Mail-Nachrichten für die Kontowiederherstellung verwenden. In Benutzerpools mit MFA können Benutzer die Self-Service-Kennwortwiederherstellung möglicherweise nicht abschließen, wenn sie Attribute für ihre E-Mail-Adresse, aber keine Telefonnummer haben, oder ihre Telefonnummer, aber keine E-Mail-Adresse.  
Um zu verhindern, dass Benutzer ihre Passwörter in Benutzerpools mit dieser Konfiguration nicht zurücksetzen können, legen Sie die `phone_number` [Attribute `email` und nach Bedarf](user-pool-settings-attributes.md) fest. Als Alternative können Sie Prozesse einrichten, bei denen diese Attribute immer erfasst und festgelegt werden, wenn sich Benutzer registrieren oder wenn Ihre Administratoren Benutzerprofile erstellen. Wenn Benutzer über beide Attribute verfügen, sendet Amazon Cognito automatisch Codes zum Zurücksetzen des Passworts an das Ziel, das *nicht* dem MFA-Faktor des Benutzers entspricht.

Das folgende Verfahren konfiguriert die Self-Service-Kontowiederherstellung in einem Benutzerpool.

------
#### [ Configure self-service password reset (API/SDK) ]

Der `AccountRecoverySetting` Parameter ist der Benutzerpoolparameter, der die Methoden festlegt, mit denen Benutzer ihr Passwort in [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API-Anfragen wiederherstellen können oder wenn sie Passwort **vergessen?** auswählen bei der verwalteten Anmeldung. `ForgotPassword`sendet einen Wiederherstellungscode an eine verifizierte E-Mail-Adresse oder eine verifizierte Telefonnummer. Der Wiederherstellungscode ist eine Stunde lang gültig. Wenn Sie eine [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AccountRecoverySettingType.html) für Ihren Benutzerpool angeben, wählt Amazon Cognito das Code-Bereitstellungsziel basierend auf der von Ihnen festgelegten Priorität aus.

Wenn Sie `AccountRecoverySetting` definieren und ein Benutzer SMS MFA konfiguriert hat, kann SMS nicht als Mechanismus für die Kontowiederherstellung verwendet werden. Die Priorität für diese Einstellung wird so festgelegt`1`, dass sie die höchste Priorität hat. Amazon Cognito sendet eine Bestätigung nur an eine der angegebenen Methoden. Im folgenden Beispiel werden E-Mail-Adressen als primäres Ziel für Kontowiederherstellungscodes `AccountRecoverySetting` festgelegt, wobei auf SMS-Nachrichten zurückgegriffen wird, wenn der Benutzer kein E-Mail-Adressattribut hat.

```
"AccountRecoverySetting": { 
   "RecoveryMechanisms": [ 
      { 
         "Name": "verified_email",
         "Priority": 1
      },
      { 
         "Name": "verified_phone_number",
         "Priority": 2
      }
   ]
}
```

Mit diesem Wert `admin_only` wird die Self-Service-Kontowiederherstellung deaktiviert, sodass Benutzer sich für das Zurücksetzen des Kennworts an ihren Administrator wenden müssen. Sie können `admin_only` nicht mit einem anderen Mechanismus für die Kontowiederherstellung verwenden. Das folgende e

```
"AccountRecoverySetting": { 
   "RecoveryMechanisms": [ 
      { 
         "Name": "admin_only",
         "Priority": 1
      }
   ]
}
```

Wenn Sie nichts angeben`AccountRecoverySetting`, sendet Amazon Cognito den Wiederherstellungscode zuerst an eine verifizierte Telefonnummer und an eine verifizierte E-Mail-Adresse, wenn Benutzer kein Telefonnummernattribut haben.

Weitere Informationen zu `AccountRecoverySetting` finden Sie unter [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) und [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html).

------
#### [ Configure self-service password reset (console) ]

Konfigurieren Sie die Optionen für die Kontowiederherstellung und das Zurücksetzen des Passworts im **Anmeldemenü** Ihres Benutzerpools.

**So richten Sie die Wiederherstellung von Benutzerkonten ein**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. 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 **Anmeldemenü**. **Suchen Sie nach **Wiederherstellung des Benutzerkontos** und wählen Sie Bearbeiten**

1. Um Benutzern das Zurücksetzen ihrer eigenen Passwörter zu ermöglichen, wählen Sie **Self-Service-Kontowiederherstellung aktivieren**.

1. Konfigurieren Sie die Übermittlungsmethode für die Codes zur Kennwortwiederherstellung, die Ihr Benutzerpool an Benutzer sendet. Wählen Sie unter **Zustellungsmethode für Nachrichten zur Wiederherstellung von Benutzerkonten** eine verfügbare Option aus. Es hat sich bewährt, eine Option auszuwählen, die über eine sekundäre Methode zum Senden von Nachrichten verfügt, z. B. **E-Mail, falls verfügbar, andernfalls SMS**. Mit einer sekundären Versandmethode kann Amazon Cognito Codes an Benutzer senden, sodass sie für das Zurücksetzen des Passworts ein anderes Medium als für MFA verwenden müssen.

1. Wählen Sie **Änderungen speichern** aus.

------

### Verhalten bei „Passwort vergessen“
<a name="forgot-password"></a>

In einer bestimmten Stunde erlauben wir einem Benutzer zwischen 5 und 20 Versuche, im Rahmen von „Passwort vergessen“ und Aktionen einen Code zum Zurücksetzen des Passworts anzufordern oder einzugeben. confirm-forgot-password Der genaue Wert hängt von den Risikoparametern ab, die den Anforderungen zugeordnet sind. Bitte beachten Sie, dass sich dieses Verhalten ändert. 

## Hinzufügen von Benutzerpool-Passwortanforderungen
<a name="user-pool-settings-policies"></a>

Starke, komplexe Passwörter sind eine bewährte Sicherheitsmethode für Ihren Benutzerpool. Insbesondere in Anwendungen, die offen für das Internet sind, können schwache Passwörter dazu führen, dass die Anmeldeinformationen Ihrer Benutzer an Systeme weitergegeben werden, die Passwörter erraten und versuchen, auf Ihre Daten zuzugreifen. Je komplexer ein Passwort ist, desto schwieriger ist es, es zu erraten. Amazon Cognito bietet zusätzliche Tools für sicherheitsbewusste Administratoren, wie [Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-threat-protection.title) und [AWS WAF Web ACLs](user-pool-waf.md#user-pool-waf.title), aber Ihre Passwortrichtlinie ist ein zentrales Element der Sicherheit Ihres Benutzerverzeichnisses.

Passwörter für lokale Benutzer in Amazon-Cognito-Benutzerpools laufen nicht automatisch ab. Es hat sich bewährt, Uhrzeit, Datum und Metadaten für das Zurücksetzen von Benutzerkennwörtern in einem externen System zu protokollieren. Mit einem externen Protokoll zum Passwortalter kann Ihre Anwendung oder ein Lambda-Trigger das Passwortalter eines Benutzers nachschlagen und nach einem bestimmten Zeitraum einen Reset erfordern.

Sie können Ihren Benutzerpool so konfigurieren, dass eine Mindestkomplexität des Kennworts erforderlich ist, die Ihren Sicherheitsstandards entspricht. Komplexe Passwörter haben eine Mindestlänge von mindestens acht Zeichen. Sie enthalten auch eine Mischung aus Großbuchstaben, Zahlen und Sonderzeichen.

Bei den Funktionsstufen Essentials oder Plus können Sie auch eine Richtlinie für die Wiederverwendung von Passwörtern festlegen. Sie können verhindern, dass ein Benutzer sein Passwort auf ein neues Passwort zurücksetzt, das seinem aktuellen Passwort oder einem von bis zu 23 zusätzlichen vorherigen Passwörtern entspricht, also insgesamt maximal 24.

**So richten Sie eine Benutzerpool-Passwortrichtlinie ein**

1. Erstellen Sie einen Benutzerpool und navigieren Sie zum Schritt **Sicherheitsanforderungen konfigurieren**, oder greifen Sie auf einen vorhandenen Benutzerpool zu und navigieren Sie zum Menü **Authentifizierungsmethoden**.

1. Navigieren Sie zu **Passwortrichtlinie**.

1. Wählen Sie einen **Passwortrichtlinienmodus** aus. **Cognito-Standardwerte** konfiguriert Ihren Benutzerpool mit den empfohlenen Mindesteinstellungen. Sie können auch eine **benutzerdefinierte** Passwortrichtlinie wählen.

1. Stellen Sie eine **Mindestpasswortlänge** ein. Alle Benutzer müssen sich mit einem Passwort registrieren oder erstellt werden, dessen Länge größer oder gleich diesem Wert ist. Sie können diesen Mindestwert bis 99 festlegen, aber Ihre Benutzer können Passwörter mit bis zu 256 Zeichen einrichten.

1. Konfigurieren Sie die Regeln zur Passwortkomplexität unter **Passwortanforderungen**. Wählen Sie die Zeichentypen – Zahlen, Sonderzeichen, Groß- und Kleinbuchstaben – aus, von denen mindestens einer in jedem Benutzerpasswort verwendet werden muss.

   Kennwörter können mindestens eines der folgenden Zeichen enthalten. Nachdem Amazon Cognito überprüft hat, dass Passwörter die mindestens erforderlichen Zeichen enthalten, können die Passwörter Ihrer Benutzer zusätzliche Zeichen beliebigen Typs bis zur maximalen Passwortlänge enthalten.
   + [Lateinische](https://en.wikipedia.org/wiki/ISO_basic_Latin_alphabet) Groß- und Kleinbuchstaben
   + Zahlen
   + Die folgenden Sonderzeichen.

     ```
     ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` = + - 
     ```
   + Nicht am Anfang oder Ende stehende Leerzeichen.

1. Legen Sie einen Wert für **Von Administratoren festgelegte temporäre Passwörter laufen ab in** fest. Nach Ablauf dieses Zeitraums kann sich ein neuer Benutzer, den Sie in der Amazon-Cognito-Konsole oder mit `AdminCreateUser` erstellt haben, nicht anmelden und kein neues Passwort festlegen. Nachdem er sich mit seinem temporären Passwort angemeldet hat, laufen seine Benutzerkonten nie ab. Um die Passwortdauer in der Amazon Cognito-Benutzerpools-API zu aktualisieren, legen Sie [TemporaryPasswordValidityDays ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_PasswordPolicyType.html#CognitoUserPools-Type-PasswordPolicyType-TemporaryPasswordValidityDays)in Ihrer [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 einen Wert für fest.

1. Legen Sie einen Wert für **Verwendung früherer Passwörter verhindern** fest, falls verfügbar. Um diese Funktion zu verwenden, wählen Sie in Ihrem Benutzerpool die [Featurestufe](cognito-sign-in-feature-plans.md) Essentials oder Plus aus. Der Wert dieses Parameters gibt die Anzahl der vorherigen Passwörter an, mit denen ein neues Passwort nicht übereinstimmt, wenn ein Benutzer sein Passwort zurücksetzt.

Gehen Sie wie folgt vor, um den Zugriff für ein abgelaufenes Benutzerkonto zurückzusetzen:
+ Senden Sie ein neues temporäres Passwort und setzen Sie den Ablaufzeitraum mit einer [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API-Anfrage zurück, die auf `MessageAction` eingestellt ist`RESEND`.
+ Löschen Sie das Benutzerprofil und erstellen Sie es neu.
+ Generieren Sie einen neuen Bestätigungscode in einer [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)API-Anfrage.

# Importieren von Benutzern in einen Benutzerpool
<a name="cognito-user-pools-import-users"></a>

Es gibt zwei Möglichkeiten, wie Sie Benutzer aus Ihrem vorhandenen Benutzerverzeichnis oder aus einer Benutzerdatenbank in Amazon-Cognito-Benutzerpools importieren oder migrieren können. Unter Verwendung eines Lambda-Auslösers für die Benutzermigration können Sie Benutzer migrieren, wenn sie sich zum ersten Mal mit Amazon Cognito anmelden. Mit diesem Ansatz können Benutzer ihre vorhandenen Passwörter weiterverwenden und müssen sie nach der Migration in Ihren Benutzerpool nicht zurücksetzen. Alternativ können Sie alle Benutzer auf einmal migrieren, indem Sie eine CSV-Datei mit den Benutzerprofilattributen für alle Benutzer hochladen. In den folgenden Abschnitten werden beide Ansätze beschrieben.

**Weitere -Quellen**
+ [Ansätze für die Migration von Benutzern zu Amazon Cognito Cognito-Benutzerpools](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)
+ [AWS re:InForce 2023 — Migration zu Amazon Cognito](https://www.youtube.com/watch?v=OkDj9uXWwCc)

**Topics**
+ [Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration](cognito-user-pools-import-using-lambda.md)
+ [Importieren von Benutzern aus einer CSV-Datei in Benutzerpools](cognito-user-pools-using-import-tool.md)

# Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration
<a name="cognito-user-pools-import-using-lambda"></a>

Mit diesem Ansatz können Sie Benutzer nahtlos aus Ihrem vorhandenen Benutzerverzeichnis zu Benutzerpools migrieren, wenn sich ein Benutzer zum ersten Mal bei Ihrer App anmeldet oder ein Zurücksetzen des Passworts anfordert. Fügen Sie Ihrem Benutzerpool eine [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md)-Funktion hinzu. Daraufhin erhält dieser Metadaten über Benutzer, die sich anzumelden versuchen, und gibt Benutzerprofilinformationen von einer externen Identitätsquelle zurück. Weitere Informationen und Beispiel-Code zu diesem Lambda-Auslöser, einschließlich der Anfrage- und Antwortparameter, finden Sie unter [Lambda-Auslöserparameter für die Benutzermigration](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration).

Bevor Sie mit der Migration von Benutzern beginnen, erstellen Sie eine Lambda-Funktion für die Benutzermigration in Ihrem AWS-Konto und legen Sie die Lambda-Funktion als Auslöser der Benutzermigration in Ihrem Benutzerpool fest. Fügen Sie Ihrer Lambda-Funktion eine Autorisierungsrichtlinie hinzu, die nur dem Prinzipal des Amazon-Cognito-Servicekontos `cognito-idp.amazonaws.com` erlaubt, die Lambda-Funktion aufzurufen, und zwar nur im Kontext Ihres eigenen Benutzerpools. Weitere Informationen finden Sie unter [Verwenden von ressourcenbasierten Richtlinien für AWS Lambda (Lambda-Funktionsrichtlinien)](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). 

**Anmeldeprozess**

1. Der Benutzer öffnet Ihre App und meldet sich mit der Amazon Cognito-Benutzerpools-API oder über eine verwaltete Anmeldung an. Weitere Informationen darüber, wie Sie die Anmeldung mit Amazon Cognito erleichtern können APIs, finden Sie unter. [Integration der Amazon-Cognito-Authentifizierung und -Autorisierung mit Web- und mobilen Apps](cognito-integrate-apps.md)

1. Ihre App sendet den Benutzernamen und das Passwort an Amazon Cognito. Wenn Ihre App über eine benutzerdefinierte Anmelde-Benutzeroberfläche verfügt, die Sie mit einem AWS SDK erstellt haben, muss Ihre App [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)oder [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)mit dem `USER_PASSWORD_AUTH` Oder-Flow verwenden. `ADMIN_USER_PASSWORD_AUTH` Wenn Ihre App einen dieser Abläufe verwendet, sendet das SDK das Passwort an den Server.
**Anmerkung**  
Bevor Sie einen Auslöser für die Benutzermigration hinzufügen, aktivieren Sie den `USER_PASSWORD_AUTH`- oder den `ADMIN_USER_PASSWORD_AUTH`-Ablauf in den Einstellungen Ihres App-Clients. Sie müssen diese Abläufe anstelle des `USER_SRP_AUTH`-Standardablaufs verwenden. Amazon Cognito muss ein Passwort an Ihre Lambda-Funktion senden, damit es die Authentifizierung Ihres Benutzers im anderen Verzeichnis überprüfen kann. Ein SRP verdeckt das Passwort Ihres Benutzers vor Ihrer Lambda-Funktion.

1. Amazon Cognito prüft, ob der übermittelte Benutzername mit einem Benutzernamen oder Alias im Benutzerpool übereinstimmt. Sie können die E-Mail-Adresse, Telefonnummer oder den bevorzugten Benutzernamen des Benutzers als Alias in Ihrem Benutzerpool festlegen. Wenn der Benutzer nicht existiert, sendet Amazon Cognito Parameter, einschließlich Benutzernamen und Passwort, an Ihre [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md)-Funktion.

1. Ihre [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md)-Funktion prüft oder authentifiziert den Benutzer bei Ihrem vorhandenen Benutzerverzeichnis oder Ihrer Benutzerdatenbank. Die Funktion gibt Benutzerattribute zurück, die Amazon Cognito im Benutzerprofil innerhalb des Benutzerpools speichert. Sie können einen `username`-Parameter nur zurückgeben, wenn der übermittelte Benutzername mit einem Aliasattribut übereinstimmt. Wenn Sie möchten, dass Benutzer ihre vorhandenen Passwörter weiterhin verwenden, legen Sie das Attribut `finalUserStatus` in der Lambda-Antwort auf `CONFIRMED` fest. Ihre App muss alle `"response"`-Parameter zurückgeben, die unter [Lambda-Auslöserparameter für die Benutzermigration](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration) angezeigt werden.
**Wichtig**  
Protokollieren Sie nicht das gesamte Anforderungsereignisobjekt in Ihrem Lambda-Code der Benutzermigration. Dieses Anforderungsereignisobjekt enthält das Passwort des Benutzers. Wenn Sie die Protokolle nicht bereinigen, werden Passwörter in den Protokollen angezeigt. CloudWatch 

1. Amazon Cognito erstellt das Benutzerprofil in Ihrem Benutzerpool und gibt Token an Ihren App-Client zurück.

1. Ihre App führt die Token-Aufnahme durch, akzeptiert die Benutzerauthentifizierung und fährt mit dem angeforderten Inhalt fort.

Nachdem Sie Ihre Benutzer migriert haben, verwenden Sie `USER_SRP_AUTH` für die Anmeldung. Das Secure Remote Password (SRP)-Protokoll sendet das Passwort nicht über das Netzwerk und bietet Sicherheitsvorteile gegenüber dem `USER_PASSWORD_AUTH`-Ablauf, den Sie bei der Migration verwendet haben.

Wenn während der Migration Fehler auftreten, wie beispielsweise Probleme mit dem Client-Gerät oder dem Netzwerk, erhält Ihre App Fehlermeldungen von der Benutzerpool-API von Amazon Cognito. In diesem Fall kann Amazon Cognito das Benutzerkonto in Ihrem Benutzerpool möglicherweise nicht erstellen. Der Benutzer sollte dann versuchen, sich erneut anzumelden. Wenn die Anmeldung wiederholt fehlschlägt, versuchen Sie, das Passwort des Benutzers mit dem Ablauf für ein vergessenes Passwort in Ihrer App zurückzusetzen. 

Der Ablauf für ein vergessenes Passwort ruft außerdem Ihre [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md)-Funktion mit einer `UserMigration_ForgotPassword`-Ereignisquelle auf. Da der Benutzer beim Anfordern der Passwortrücksetzung kein Passwort übermittelt, nimmt Amazon Cognito kein Passwort auf für den Fall, dass es an Ihre Lambda-Funktion gesendet wird. Ihre Funktion kann den Benutzer nur in Ihrem vorhandenen Benutzerverzeichnis nachschlagen und Attribute zurückgeben, die dem Benutzerprofil in Ihrem Benutzerpool hinzugefügt werden. Nachdem Ihre Funktion den Aufruf abgeschlossen und ihre Antwort an Amazon Cognito zurückgegeben hat, sendet der Benutzerpool einen Code für die Passwortrücksetzung per E-Mail oder SMS. Fordern Sie Ihren Benutzer in Ihrer App zur Eingabe seines Bestätigungscodes und eines neuen Passworts auf und senden Sie diese Informationen dann in einer [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)API-Anfrage an Amazon Cognito. Sie können auch die integrierten Seiten für den Ablauf „Passwort vergessen“ bei der verwalteten Anmeldung verwenden.

**Weitere Ressourcen**
+ [Ansätze für die Migration von Benutzern zu Amazon Cognito Cognito-Benutzerpools](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)

# Importieren von Benutzern aus einer CSV-Datei in Benutzerpools
<a name="cognito-user-pools-using-import-tool"></a>

Wenn Sie über einen externen Identitätsspeicher verfügen und Zeit haben, Ihren Benutzerpool für neue lokale Benutzer vorzubereiten, kann ein Massenimport von Benutzern aus einer CSV-Datei (Comma-Separated Values) eine einfache und kostengünstige Option für eine Migration zu einem Amazon Cognito Cognito-Benutzerpool sein. Ein CSV-Dateiimport ist ein Vorgang, bei dem eine Vorlagendatei heruntergeladen und gefüllt wird. Anschließend wird die Datei in einem Importjob an Ihren Benutzerpool übergeben. Sie können einen CSV-Import verwenden, um schnell Testbenutzer zu erstellen. Sie können die Datei auch programmgesteuert mit API-Leseanforderungen an Ihren externen Identitätsspeicher füllen und anschließend deren Details und Attribute analysieren, um Schreibvorgänge in die Datei durchzuführen.

Der Importprozess legt Werte für alle Benutzerattribute fest, mit Ausnahme von **password**. Der Import des Passworts wird nicht unterstützt, da bewährte Methoden für die Sicherheit verlangen, dass Kennwörter nicht als Klartext verfügbar sind, und wir den Import von Hash-Werten nicht unterstützen. Das bedeutet, dass Ihre Benutzer ihre Passwörter ändern müssen, wenn er sich das erste Mal anmelden. Ihre Benutzer befinden sich in einem `RESET_REQUIRED` Zustand, wenn sie mit dieser Methode importiert werden.

Der einfachste Weg, Benutzer aus einer CSV-Datei zu importieren, besteht darin, die [passwortlose Anmeldung](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) in Ihrem Benutzerpool zu aktivieren. Mit den Attributen E-Mail-Adresse und Telefonnummer und der richtigen Benutzerpool-Konfiguration können sich Benutzer sofort nach Abschluss Ihres Importvorgangs mit E-Mail- oder SMS-Einmalkennwörtern (OTPs) anmelden. Weitere Informationen finden Sie unter [Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen](#cognito-user-pools-using-import-tool-password-reset).

Sie können die Passwörter Ihrer Benutzer auch mit einer [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API-Anfrage festlegen, die den `Permanent` Parameter auf festlegt`true`. Der CSV-Import trägt nicht zur Abrechnung der monatlich aktiven Nutzer (MAUs) in Ihrem Benutzerpool bei. Bei Vorgängen zum Zurücksetzen von Passwörtern wird jedoch etwas generiert. MAUs Um die Kosten zu senken, wenn Sie eine große Anzahl von Benutzern mit einem Kennwort importieren, die möglicherweise nicht sofort aktiv sind, richten Sie Ihre Anwendung so ein, dass Benutzer bei der Anmeldung und der Aufforderung zur Eingabe eines neuen Kennworts aufgefordert werden. `RESET_REQUIRED`

**Anmerkung**  
Das Erstellungsdatum für jeden Benutzer ist eine Zeit, zu der der Benutzer in den Benutzerpool importiert wurde. Erstellungsdatum ist nicht eines der importierten Attribute.

**Schritte zum Erstellen eines Benutzerimportauftrags**

1. Erstellen Sie eine Amazon CloudWatch Logs-Rolle in der AWS Identity and Access Management (IAM-) Konsole.

1. Erstellen Sie die Benutzerimport-CSV-Datei.

1. Erstellen Sie den Benutzerimportauftrag und führen Sie ihn aus.

1. Laden Sie die Benutzerimport-CSV-Datei hoch.

1. Starten Sie den Benutzerimportauftrag und führen Sie ihn aus.

1. Wird verwendet CloudWatch , um das Ereignisprotokoll zu überprüfen.

1. Verlangen Sie von den importierten Benutzer, dass sie ihre Passwörter zurücksetzen.

**Weitere -Quellen**
+ [Referenzarchitektur für den Export von Cognito-Benutzerprofilen](https://aws.amazon.com/solutions/implementations/cognito-user-profiles-export-reference-architecture/) zum Exportieren von Benutzerkonten zwischen Benutzerpools

**Topics**
+ [Die IAM-Rolle „ CloudWatch Logs“ erstellen](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role)
+ [Erstellen der CSV-Datei für den Benutzerimport](#cognito-user-pools-using-import-tool-csv-header)
+ [Erstellen und Ausführen des Amazon-Cognito-Benutzerpool-Importauftrags](#cognito-user-pools-creating-import-job)
+ [Die Importergebnisse des Benutzerpools in der CloudWatch Konsole anzeigen](#cognito-user-pools-using-import-tool-cloudwatch)
+ [Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen](#cognito-user-pools-using-import-tool-password-reset)

## Die IAM-Rolle „ CloudWatch Logs“ erstellen
<a name="cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role"></a>

Wenn Sie die Amazon Cognito CLI oder API verwenden, müssen Sie eine CloudWatch IAM-Rolle erstellen. Das folgende Verfahren beschreibt, wie Sie eine IAM-Rolle erstellen, mit der Amazon Cognito die Ergebnisse Ihres Importauftrags in Logs schreiben kann. CloudWatch 

**Anmerkung**  
Wenn Sie einen Importauftrag in der Amazon-Cognito-Konsole erstellen, können Sie gleichzeitig die IAM-Rolle erstellen. Wenn Sie **Create a new IAM role** (Neue IAM-Rolle erstellen) auswählen, wendet Amazon Cognito automatisch die entsprechende Vertrauensrichtlinie und IAM-Richtlinie auf die Rolle an.

**So erstellen Sie die IAM-Rolle CloudWatch Logs für den Benutzerpool-Import (AWS CLI, API)**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die IAM-Konsole unter. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Erstellen Sie eine neue IAM-Rolle für eine. AWS-Service Detaillierte Anweisungen finden Sie unter [Erstellen einer Rolle für einen AWS-Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) im *Benutzerhandbuch zu AWS Identity and Access Management *.

   1. Bei der Auswahl von **Use case** (Anwendungsfall) für **Trusted entity type** (Typ der vertrauenswürdigen Entität) können Sie einen beliebigen Service wählen. Amazon Cognito ist derzeit nicht in der Liste der Anwendungsfälle für Services aufgeführt.

   1. Wählen Sie im Bildschirm **Add permissions** (Berechtigungen hinzufügen) die Option **Create policy** (Richtlinie erstellen) aus und fügen Sie die folgende Richtlinienanweisung ein. *REGION*Ersetzen Sie sie beispielsweise `us-east-1` durch die AWS-Region Ihres Benutzerpools. *ACCOUNT*Ersetzen Sie es zum Beispiel durch Ihre AWS-Konto ID`111122223333`.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "logs:CreateLogGroup",
                      "logs:CreateLogStream",
                      "logs:DescribeLogStreams",
                      "logs:PutLogEvents"
                  ],
                  "Resource": [
                      "arn:aws:logs:us-east-1:111122223333:log-group:/aws/cognito/*"
                  ]
              }
          ]
      }
      ```

------

1. Da Sie Amazon Cognito während der Erstellung der Rolle nicht als vertrauenswürdige Entität ausgewählt haben, müssen Sie die Vertrauensstellung der Rolle jetzt manuell bearbeiten. Klicken Sie im Navigationsbereich der IAM-Konsole auf **Roles** (Rollen) und wählen Sie dann die neu erstellte Rolle aus.

1. Wählen Sie die Registerkarte **Trust relationships (Vertrauensstellungen)**.

1. Wählen Sie **Vertrauensrichtlinie bearbeiten** aus.

1. Fügen Sie die folgende Richtlinienanweisung in das Feld **Edit trust policy** (Vertrauensrichtlinie bearbeiten) ein und ersetzen Sie dabei den vorhandenen Text: 

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

****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Effect": "Allow",
                   "Principal": {
                       "Service": "cognito-idp.amazonaws.com"
                   },
                   "Action": "sts:AssumeRole"
               }
           ]
       }
   ```

------

1. Wählen Sie **Richtlinie aktualisieren**. 

1. Beachten Sie die Rollen-ARN. Sie geben den ARN ein, wenn Sie den Importauftrag erstellen.

## Erstellen der CSV-Datei für den Benutzerimport
<a name="cognito-user-pools-using-import-tool-csv-header"></a>

Bevor Sie vorhandene Benutzer in Ihren Benutzerpool importieren können, müssen Sie eine Datei mit durch Kommas getrennten Werten (CSV-Datei) erstellen, die die zu importierenden Benutzer und ihre Attribute enthält. Aus Ihrem Benutzerpool können Sie eine Benutzerimportdatei mit Headern abrufen, die das Attributschema Ihres Benutzerpools widerspiegeln. Anschließend können Sie Benutzerinformationen einfügen, die den Formatierungsanforderungen im Abschnitt [Formatieren der CSV-Datei](#cognito-user-pools-using-import-tool-formatting-csv-file) entsprechen. 

### Herunterladen des CSV-Datei-Headers (Konsole)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-console"></a>

Gehen Sie wie folgt vor, um die CSV-Header-Datei herunterzuladen.

**So laden Sie den CSV-Datei-Header herunter**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Möglicherweise werden Sie zur Eingabe Ihrer AWS Anmeldeinformationen aufgefordert.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer**.

1. Wählen Sie im Abschnitt **Import users** (Benutzer importieren) die Option **Create an import job** (Importauftrag erstellen) aus.

1. Wählen Sie unter **Upload CSV** (CSV hochladen) den Link *template.csv* aus und laden Sie die CSV-Datei herunter.

### Herunterladen des CSV-Datei-Headers (AWS CLI)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-using-cli"></a>

Um eine Liste der richtigen Header zu erhalten, wählen Sie **im Menü Benutzer** unter **Benutzer importieren** die Option **Importjob erstellen** aus. Wählen Sie im folgenden Dialogfeld den `template.csv` Link zum Herunterladen einer Vorlagendatei mit Ihren Benutzerpool-Attributen aus.

Sie können auch den folgenden CLI-Befehl ausführen, der die Benutzerpool-ID für den Benutzerpool enthält, in *USER\$1POOL\$1ID* den Sie Benutzer importieren werden:

```
aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"
```

Beispielantwort:

```
{
    "CSVHeader": [
        "name",
        "given_name",
        "family_name",
        "middle_name",
        "nickname",
        "preferred_username",
        "profile",
        "picture",
        "website",
        "email",
        "email_verified",
        "gender",
        "birthdate",
        "zoneinfo",
        "locale",
        "phone_number",
        "phone_number_verified",
        "address",
        "updated_at",
        "cognito:mfa_enabled",
        "cognito:username"
    ],
    "UserPoolId": "USER_POOL_ID"
}
```

### Formatieren der CSV-Datei
<a name="cognito-user-pools-using-import-tool-formatting-csv-file"></a>

 Die heruntergeladene CSV-Header-Datei für den Benutzerimport sieht wie die folgende Zeichenfolge aus. Sie enthält auch benutzerdefinierte Attribute, die Sie Ihrem Benutzerpool hinzugefügt haben.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
```

Bearbeiten Sie Ihre CSV-Datei, sodass sie diesen Header und die Attributwerte für Ihre Benutzer enthält und gemäß den folgenden Regeln formatiert ist:

**Anmerkung**  
Weitere Informationen zu Attributwerten, wie etwas das richtige Format für Telefonnummern, finden Sie unter [Mit Benutzerattributen arbeiten](user-pool-settings-attributes.md).
+ Die erste Zeile in der Datei ist die heruntergeladene Kopfzeile mit den Benutzer-Attributnamen.
+ Die Reihenfolge der Spalten in der CSV-Datei ist unerheblich.
+ Jede Zeile nach der ersten Zeile enthält die Attributwerte für einen Benutzer.
+ Alle Spalten in der Kopfzeile müssen vorhanden sein, Sie müssen jedoch nicht in jeder Spalte Werte angeben.
+ Die folgenden Attribute sind erforderlich:
  + **cognito:username**
  + **email\$1verified** oder **phone\$1number\$1verified**
    + Mindestens eines der automatisch überprüften Attribute muss für jeden Benutzer `true` sein. Ein automatisch verifiziertes Attribut ist eine E-Mail-Adresse oder Telefonnummer, an die Amazon Cognito automatisch einen Code sendet, wenn ein neuer Benutzer Ihrem Benutzerpool beitritt.
    + Der Benutzerpool muss mindestens ein automatisch überprüftes Attribut besitzen, entweder **email\$1verified** oder **phone\$1number\$1verified**. Wenn der Benutzerpool keine automatisch überprüften Attribute enthält, wird der Importauftrag nicht gestartet.
    + Wenn der Benutzerpool nur über ein automatisch überprüftes Attribut verfügt, muss dieses Attribut für jeden Benutzer überprüft werden. Wenn der Benutzerpool beispielsweise nur **phone\$1number** als automatisch überprüftes Attribut aufweist, muss der Wert **phone\$1number\$1verified** `true` für jeden Benutzer überprüft werden.
**Anmerkung**  
Damit Benutzer ihre Passwörter zurücksetzen können, benötigen Sie eine bestätigte E-Mail-Adresse oder Telefonnummer. Amazon Cognito sendet eine Nachricht mit einem Code zum Zurücksetzen des Passworts an die in der CSV-Datei angegebene E-Mail-Adresse oder Telefonnummer. Die Nachricht wird als SMS an die Telefonnummer gesendet. Weitere Informationen finden Sie unter [Überprüfen von Kontaktinformationen bei der Anmeldung](signing-up-users-in-your-app.md#allowing-users-to-sign-up-and-confirm-themselves).
  + **email** (wenn **email\$1verified** `true` ist)
  + **phone\$1number** (wenn **phone\$1number\$1verified** `true` ist)
  + Alle Attribute, die Sie beim Erstellen des Benutzerpools als erforderlich kennzeichnen
+ Attributwerte, die Zeichenfolgen sind, sollten *nicht* in Anführungszeichen gesetzt werden.
+ Wenn ein Attributwert ein Komma enthält, müssen Sie einen Backslash (\$1) vor dem Komma eingeben. Der Grund hierfür ist, dass die Felder in einer CSV-Datei durch Kommas getrennt sind.
+ Die Inhalte der CSV-Datei sollten im UTF-8-Format ohne Markierung der Bytereihenfolge vorliegen.
+ Das Feld **cognito:username** ist ein Pflichtfeld und muss in Ihrem Benutzerpool einmalig sein. Es kann eine beliebige Unicode-Zeichenfolge sein. Es kann jedoch keine Leerzeichen oder Tab-Zeichen enthalten.
+ Die Werte für das **Geburtsdatum** müssen, sofern vorhanden, im folgenden Format vorliegen **mm/dd/yyyy**. Das bedeutet, dass z. B. das Geburtsdatum 1. Februar 1985 als **02/01/1985** kodiert werden muss.
+ Das Feld **cognito:mfa\$1enabled** muss den MFA-Anforderungen Ihres Benutzerpools entsprechen. Wenn Sie die Multi-Faktor-Authentifizierung (MFA) in Ihrem Benutzerpool als erforderlich festgelegt haben, muss dieses Feld für alle Benutzer leer sein `true` oder leer sein. Wenn Sie MFA deaktiviert haben, muss dieses Feld für alle Benutzer leer `false` oder leer sein. Ein leerer Wert setzt den MFA-aktivierten Status importierter Benutzer auf den vom Benutzerpool geforderten Status. Sie können Benutzer in einen Benutzerpool, für den MFA erforderlich ist, ohne einen gültigen MFA-Faktor importieren, unabhängig davon, ob Sie einen Wert festlegen. `cognito:mfa_enabled` Benutzer in diesem Status haben MFA aktiv, können sich aber erst anmelden, wenn sie ein E-Mail-Attribut, ein Telefonnummernattribut oder ein TOTP konfiguriert haben und diese Konfiguration ein gültiger MFA-Faktor in Ihrem Benutzerpool ist.
+ Die maximale Zeilenlänge beträgt 16 000 Zeichen.
+ Die maximale CSV-Dateigröße ist 100 MB.
+ Die maximale Anzahl von Zeilen (Benutzer) in der Datei ist 500 000. Dieser Höchstwert enthält die Kopfzeile nicht.
+ Der Feldwert **updated\$1at** ist voraussichtlich die Epochenzeit in Sekunden, z. B.: **1471453471**.
+ Alle führenden bzw. nachgestellten Leerzeichen in einem Attributwert werden getrimmt.

Die folgende Liste ist ein Beispiel für eine CSV-Importdatei für einen Benutzerpool ohne benutzerdefinierte Attribute. Ihr Benutzerpool-Schema kann sich von diesem Beispiel unterscheiden. In diesem Fall müssen Sie Testwerte in der CSV-Vorlage angeben, die Sie aus Ihrem Benutzerpool herunterladen.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
John,,John,Doe,,,,,,,johndoe@example.com,TRUE,,02/01/1985,,,+12345550100,TRUE,123 Any Street,,FALSE
Jane,,Jane,Roe,,,,,,,janeroe@example.com,TRUE,,01/01/1985,,,+12345550199,TRUE,100 Main Street,,FALSE
```

## Erstellen und Ausführen des Amazon-Cognito-Benutzerpool-Importauftrags
<a name="cognito-user-pools-creating-import-job"></a>

In diesem Abschnitt wird beschrieben, wie Sie den Benutzerpool-Importauftrag mithilfe der Amazon Cognito Cognito-Konsole und der AWS Command Line Interface (AWS CLI) erstellen und ausführen.

**Topics**
+ [Importieren von Benutzern aus einer CSV-Datei (Konsole)](#cognito-user-pools-using-import-tool-console)
+ [Importieren von Benutzern (AWS CLI)](#cognito-user-pools-using-import-tool-cli)

### Importieren von Benutzern aus einer CSV-Datei (Konsole)
<a name="cognito-user-pools-using-import-tool-console"></a>

Im folgenden Verfahren wird beschrieben, wie Sie Benutzer aus der CSV-Datei importieren.

**So importieren Sie Benutzer aus der CSV-Datei (Konsole)**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Möglicherweise werden Sie zur Eingabe Ihrer AWS Anmeldeinformationen aufgefordert.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Benutzer**.

1. Wählen Sie im Abschnitt **Import users** (Benutzer importieren) die Option **Create an import job** (Importauftrag erstellen) aus.

1. Geben Sie auf der Seite **Create import job** (Importauftrag erstellen) unter **Job name** einen Auftragsnamen ein.

1. Wählen Sie dann **Create a new IAM role** (Neue IAM-Rolle erstellen) oder **Use an existing IAM role** (Vorhandene IAM-Rolle verwenden) aus.

   1. Wenn Sie **Create a new IAM role** (Neue IAM-Rolle erstellen) ausgewählt haben, geben Sie einen Namen für Ihre neue Rolle ein. Amazon Cognito erstellt automatisch eine Rolle mit den richtigen Berechtigungen und der richtigen Vertrauensstellung. Der IAM-Prinzipal, der den Importauftrag erstellt, muss über die Berechtigungen zum Erstellen von IAM-Rollen verfügen.

   1. Wenn Sie **Use an existing IAM role** (Vorhandene IAM-Rolle verwenden) ausgewählt haben, wählen Sie eine Rolle aus der Liste unter **IAM role selection** (Auswahl der IAM-Rolle) aus. Diese Rolle muss über die in [Die IAM-Rolle „ CloudWatch Logs“ erstellen](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role) beschriebenen Berechtigungen und Vertrauensrichtlinien verfügen.

1. Wählen **Sie unter CSV hochladen** die Option **Datei auswählen** und hängen Sie die CSV-Datei an, die Sie vorbereitet haben.

1. Wählen Sie **Create job** (Auftrag erstellen) aus, um Ihren Auftrag zu übermitteln, jedoch erst später zu starten. Wählen Sie **Create and start job** (Auftrag erstellen und starten) aus, um Ihren Auftrag zu übermitteln und sofort zu starten.

1. Wenn Sie Ihren Auftrag erstellt, aber noch nicht gestartet haben, können Sie ihn später starten. Wählen Sie im Menü **Benutzer** unter **Benutzer importieren** Ihren Importjob aus und wählen Sie dann **Start** aus. Sie können auch eine [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html)API-Anfrage von einem AWS SDK aus einreichen.

1. Überwachen Sie den Fortschritt Ihres Benutzerimportauftrags im Menü **Benutzer** unter **Benutzer importieren**. Wenn Ihr Auftrag nicht erfolgreich ist, können Sie den **Status**-Wert auswählen. Wenn Sie weitere Informationen wünschen, wählen Sie ** CloudWatch Protokolle anzeigen aus, um weitere Informationen** zu erhalten, und überprüfen Sie alle Probleme in der CloudWatch Protokollkonsole.

### Importieren von Benutzern (AWS CLI)
<a name="cognito-user-pools-using-import-tool-cli"></a>

Die folgenden CLI-Befehle sind für den Import von Benutzern in einen Benutzerpool verfügbar:
+ `create-user-import-job`
+ `get-csv-header`
+ `describe-user-import-job`
+ `list-user-import-jobs`
+ `start-user-import-job`
+ `stop-user-import-job`

Um die Liste der Befehlszeilen-Optionen für diese Befehle zu erhalten, verwenden Sie die Befehlszeilen-Option `help`. Beispiel:

```
aws cognito-idp get-csv-header help
```

#### Erstellen eines Benutzer-Importauftrags
<a name="cognito-user-pools-using-import-tool-cli-creating-user-import-job"></a>

Nachdem Sie Ihre CSV-Datei erstellt haben, erstellen Sie einen Benutzerimportauftrag, indem Sie den folgenden CLI-Befehl ausführen. Dabei *JOB\$1NAME* stehen der Name, den Sie für den Job wählen, *USER\$1POOL\$1ID* die Benutzerpool-ID für den Benutzerpool, dem die neuen Benutzer hinzugefügt werden, und *ROLE\$1ARN* der Rollen-ARN, in dem Sie erhalten haben[Die IAM-Rolle „ CloudWatch Logs“ erstellen](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role): 

```
aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"
```

Der in der Antwort *PRE\$1SIGNED\$1URL* zurückgegebene Wert ist 15 Minuten gültig. Nach dieser Zeit läuft sie ab, und Sie müssen einen neuen Benutzer-Importauftrag erstellen, um eine neue URL zu erhalten.

**Example Antwort:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Statuswerte für einen Benutzer-Importauftrag
<a name="cognito-user-pools-using-import-tool-cli-status-values-for-user-import-job"></a>

In den Antworten auf Ihre Benutzer-Importbefehle sehen Sie einen der folgenden `Status`-Werte:
+ `Created` – Der Auftrag wurde erstellt aber noch nicht gestartet.
+ `Pending` – Ein Übergangsstatus. Sie haben den Auftrag gestartet, aber es wurden bislang noch keine Benutzer importiert.
+ `InProgress` – Der Auftrag wurde gestartet, und Benutzer werden importiert.
+ `Stopping` – Sie haben den Auftrag angehalten, aber der Import von Benutzern wurde noch nicht angehalten.
+ `Stopped` – Sie haben den Auftrag angehalten, und es werden keine Benutzer mehr importiert.
+ `Succeeded` – Der Schritt wurde erfolgreich ausgeführt.
+ `Failed` – Der Auftrag wurde aufgrund eines Fehlers angehalten.
+ `Expired` – Sie haben einen Auftrag erstellt, ihn aber nicht innerhalb von 24-48 Stunden gestartet. Alle mit dem Auftrag verbundenen Daten wurden gelöscht, und der Auftrag kann nicht gestartet werden.

#### Hochladen der CSV-Datei
<a name="cognito-user-pools-using-import-tool-cli-uploading-csv-file"></a>

Verwenden Sie den folgenden `curl`-Befehl zum Hochladen der CSV-Datei mit Ihren Benutzerdaten auf die vorsignierte URL, die Sie aus der Antwort des `create-user-import-job`-Befehls erhalten haben.

```
curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"
```

In der Ausgabe dieses Befehls suchen Sie die Zeichenfolge `"We are completely uploaded and fine"`. Diese Phrase gibt an, dass die Datei erfolgreich hochgeladen wurde. Ihre Benutzerpools behalten die Informationen in Ihren Importdateien nicht bei, nachdem Sie Ihre Importjobs ausgeführt haben. Nachdem sie abgeschlossen sind oder abgelaufen sind, löscht Amazon Cognito Ihre hochgeladene CSV-Datei.

#### Beschreiben eines Benutzer-Importauftrags
<a name="cognito-user-pools-using-import-tool-cli-describing-user-import-job"></a>

Verwenden Sie den folgenden Befehl, um eine Beschreibung Ihres Benutzerimport-Jobs zu erhalten. Dabei *USER\$1POOL\$1ID* handelt es sich um Ihre Benutzerpool-ID und *JOB\$1ID* um die Job-ID, die bei der Erstellung des Benutzerimport-Jobs zurückgegeben wurde. 

```
aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Beispielantwort:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn":"ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

In der vorherigen Beispielausgabe *PRE\$1SIGNED\$1URL* ist dies die URL, zu der Sie die CSV-Datei hochgeladen haben. Das *ROLE\$1ARN* ist der ARN der CloudWatch Logs-Rolle, den Sie bei der Erstellung der Rolle erhalten haben.

#### Auflisten Ihrer Benutzer-Importaufträge
<a name="cognito-user-pools-using-import-tool-cli-listing-user-import-jobs"></a>

Zum Auflisten Ihrer Benutzer-Importaufträge verwenden Sie den folgenden Befehl:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
```

**Example Beispielantwort:**  

```
{
    "UserImportJobs": [
        {
            "Status": "Created",
            "SkippedUsers": 0,
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "JobName": "JOB_NAME",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 0,
            "CreationDate": 1470957431.965
        },
        {
            "CompletionDate": 1470954227.701,
            "StartDate": 1470954226.086,
            "Status": "Failed",
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "SkippedUsers": 0,
            "JobName": "JOB_NAME",
            "CompletionMessage": "Too many users have failed or been skipped during the import.",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 5,
            "CreationDate": 1470953929.313
        }
    ],
    "PaginationToken": "PAGINATION_TOKEN"
}
```

Aufträge werden in chronologischer Reihenfolge vom zuletzt erstellten bis zum zuerst erstellten aufgelistet. Die *PAGINATION\$1TOKEN* Zeichenfolge nach dem zweiten Job gibt an, dass für diesen Listenbefehl zusätzliche Ergebnisse vorliegen. Um die zusätzlichen Ergebnisse aufzulisten, verwenden Sie die Option `--pagination-token` wie folgt:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"
```

#### Starten eines Benutzer-Importauftrags
<a name="cognito-user-pools-using-import-tool-cli-starting-user-import-job"></a>

Zum Starten eines Benutzer-Importauftrags verwenden Sie den folgenden Befehl:

```
aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

Nur ein Importauftrag kann jeweils aktiv sein.

**Example Beispielantwort:**  

```
{
    "UserImportJob": {
        "Status": "Pending",
        "StartDate": 1470957851.483,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Anhalten eines Benutzer-Importauftrags
<a name="cognito-user-pools-using-import-tool-cli-stopping-user-import-job"></a>

Zum Anhalten eines Benutzer-Importauftrags, während dieser ausgeführt wird, verwenden Sie den folgenden Befehl. Nachdem Sie den Auftrag angehalten haben, kann er nicht neu gestartet werden.

```
aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Beispielantwort:**  

```
{
    "UserImportJob": {
        "CompletionDate": 1470958050.571,
        "StartDate": 1470958047.797,
        "Status": "Stopped",
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "CompletionMessage": "The Import Job was stopped by the developer.",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957972.387
    }
}
```

## Die Importergebnisse des Benutzerpools in der CloudWatch Konsole anzeigen
<a name="cognito-user-pools-using-import-tool-cloudwatch"></a>

Sie können die Ergebnisse Ihres Importauftrags in der CloudWatch Amazon-Konsole einsehen.

**Topics**
+ [Anzeigen der Ergebnisse](#cognito-user-pools-using-import-tool-viewing-the-results)
+ [Interpretieren der Ergebnisse](#cognito-user-pools-using-import-tool-interpreting-the-results)

### Anzeigen der Ergebnisse
<a name="cognito-user-pools-using-import-tool-viewing-the-results"></a>

In den folgenden Schritten wird beschrieben, wie Sie die Benutzerpool-Importergebnisse anzeigen.

**So zeigen Sie die Ergebnisse des Benutzerpoolimports an**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie **Logs**.

1. Wählen Sie die Protokollgruppe für Ihre Benutzerpool-Importaufträge. Der Name der Protokollgruppe liegt in der Form vor `/aws/cognito/userpools/USER_POOL_ID/USER_POOL_NAME`.

1. Wählen Sie das Protokoll für den Benutzer-Importauftrag, den Sie gerade ausgeführt haben. Der Protokollname hat die Form*JOB\$1ID*/*JOB\$1NAME*. Die Ergebnisse im Protokoll beziehen sich auf Ihre Benutzer nach Zeilennummer. Es werden keine Benutzerdaten in das Protokoll geschrieben. Für jeden Benutzer wird eine Zeile ähnlich der folgenden angezeigt:
   + `[SUCCEEDED] Line Number 5956 - The import succeeded.`
   + `[SKIPPED] Line Number 5956 - The user already exists.`
   + `[FAILED] Line Number 5956 - The User Record does not set any of the auto verified attributes to true. (Example: email_verified to true).`

### Interpretieren der Ergebnisse
<a name="cognito-user-pools-using-import-tool-interpreting-the-results"></a>

Der Status von erfolgreich importierten Benutzern ist auf "PasswordReset" gesetzt.

In den folgenden Fällen wird der Benutzer nicht importiert, der Importauftrag wird jedoch fortgesetzt:
+ Keine automatisch überprüften Attribute werden auf gesetzt `true`.
+ Die Benutzerdaten entsprechen nicht dem Schema.
+ Der Benutzer konnte aufgrund eines internen Fehlers nicht importiert werden.

In den folgenden Fällen schlägt der Importauftrag fehl:
+ Die Amazon CloudWatch Logs-Rolle kann nicht übernommen werden, hat nicht die richtige Zugriffsrichtlinie oder wurde gelöscht.
+ Der Benutzerpool wurde gelöscht.
+ Amazon Cognito kann die CSV-Datei nicht analysieren.

## Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen
<a name="cognito-user-pools-using-import-tool-password-reset"></a>

Wenn Ihr Benutzerpool nur die kennwortbasierte Anmeldung anbietet, müssen Benutzer ihre Passwörter nach dem Import zurücksetzen. *Bei der ersten Anmeldung können sie ein beliebiges Passwort eingeben.* Amazon Cognito fordert sie auf, in der API-Antwort auf die Anmeldeanfrage Ihrer Anwendung ein neues Passwort einzugeben.

Wenn Ihr Benutzerpool kennwortlose Authentifizierungsfaktoren hat, verwendet Amazon Cognito standardmäßig die für importierte Benutzer. Sie werden nicht zur Eingabe eines neuen Passworts aufgefordert und können sich sofort mit einem passwortlosen E-Mail- oder SMS-OTP anmelden. Sie können Benutzer auch auffordern, ein Passwort festzulegen, damit sie andere Anmeldemethoden wie Benutzername/Passwort und Hauptschlüssel verwenden können. Die folgenden Bedingungen gelten für die kennwortlose Anmeldung nach dem Benutzerimport.

1. Sie müssen Benutzer mit einem Attribut importieren, das einem verfügbaren kennwortlosen Anmeldefaktor entspricht. Wenn sich Benutzer mit einer E-Mail-Adresse anmelden können, müssen Sie ein Attribut importieren. `email` Wenn es sich um eine Telefonnummer handelt, müssen Sie ein `phone_number` Attribut importieren. Wenn beides der Fall ist, importieren Sie einen Wert für eines der Attribute.

1. Normalerweise importieren Benutzer in einem `RESET_REQUIRED` Zustand, in dem sie ihr Passwort zurücksetzen müssen. Wenn sie mit der Möglichkeit importiert werden, sich mit einem kennwortlosen Faktor anzumelden, setzt Amazon Cognito ihren Status auf. `CONFIRMED`

Weitere Informationen zur kennwortlosen Authentifizierung, einschließlich deren Einrichtung und Aufbau des Authentifizierungsablaufs in Ihrer Anwendung, finden Sie unter. [Authentifizierung mit Amazon Cognito Cognito-Benutzerpools](authentication.md)

Das folgende Verfahren beschreibt die Benutzererfahrung bei einem benutzerdefinierten Anmeldemechanismus mit lokalen Benutzern in einer `RESET_REQUIRED` nach dem Import einer CSV-Datei. Wenn sich Ihre Benutzer mit verwaltetem Login anmelden, weisen Sie sie an, die Option **Passwort vergessen?** auszuwählen Option, geben Sie den Code aus ihrer E-Mail oder Textnachricht ein und legen Sie ein Passwort fest.

**Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen**

1. Versuchen Sie sich in Ihrer App unbemerkt als der aktuelle Benutzer anzumelden, wobei `InitiateAuth` ein zufallsgeneriertes Passwort angibt.

1. Amazon Cognito gibt eine `NotAuthorizedException` zurück, wenn `PreventUserExistenceErrors` aktiviert ist. Gibt andernfalls `PasswordResetRequiredException` zurück.

1. Ihre App stellt eine API-Anforderung `ForgotPassword` und setzt das Passwort des Benutzers zurück.

   1. Die App übermittelt den Benutzernamen in einer `ForgotPassword`-API-Anforderung.

   1. Amazon Cognito sendet einen Code an die verifizierte E-Mail-Adresse oder Telefonnummer. Das Ziel hängt von den Werten ab, die Sie für `email_verified` und `phone_number_verified` in Ihrer CSV-Datei angegeben haben. In der Antwort auf die Anforderung `ForgotPassword` ist das Ziel des Codes angegeben.
**Anmerkung**  
Ihr Benutzerpool muss für die Verifizierung von E-Mail-Adressen oder Telefonnummern konfiguriert sein. Weitere Informationen finden Sie unter [Registrieren und Bestätigen von Benutzerkonten](signing-up-users-in-your-app.md).

   1. Ihre App zeigt dem Benutzer eine Nachricht an, damit dieser den Ort überprüft, an den der Code gesendet wurde, und fordert den Benutzer auf, den Code und ein neues Passwort einzugeben.

   1. Der Benutzer gibt den Code und das neue Passwort in der App ein.

   1. Die App übermittelt den Code und das neue Passwort in einer API-Anforderung `ConfirmForgotPassword`.

   1. Ihre App leitet Ihren Benutzer zur Anmeldung weiter.

# Mit Benutzerattributen arbeiten
<a name="user-pool-settings-attributes"></a>

Attribute sind Informationen, anhand derer Sie einzelne Benutzer ermitteln können, z. B. Name, E-Mail-Adresse und Telefonnummer. Ein neuer Benutzerpool hat einen Satz standardmäßiger *Standardattribute*. Sie können Ihrer Benutzerpool-Definition im auch benutzerdefinierte Attribute hinzufügen AWS-Managementkonsole. In diesem Thema werden diese Attribute ausführlich beschrieben und Sie erhalten Tipps zum Einrichten des Benutzerpools.

Speichern Sie nicht alle Informationen von Benutzern in Attributen. Speichern Sie beispielsweise Benutzerdaten, die häufig geändert werden (wie Nutzungsstatistiken oder Spielstände) in einem separaten Datenspeicher, z. B. Amazon Cognito Sync oder Amazon DynamoDB.

Bereinigen Sie die Eingaben für Zeichenkettenwerte von Benutzerattributen, bevor Sie sie an Ihren Benutzerpool senden. Eine Methode zur Analyse der vorgeschlagenen Benutzerattributwerte ist ein Lambda-Trigger wie bei der [Anmeldung](user-pool-lambda-pre-sign-up.md).

**Anmerkung**  
In einigen Dokumentationen und Standards werden Attribute als *Member* bezeichnet.

**Topics**
+ [Standardattribute](#cognito-user-pools-standard-attributes)
+ [Benutzernamen und bevorzugter Benutzername](#user-pool-settings-usernames)
+ [Anpassen von Anmeldeattributen](#user-pool-settings-aliases)
+ [Custom attributes (Benutzerdefinierte Attribute)](#user-pool-settings-custom-attributes)
+ [Attributberechtigungen und -bereiche](#user-pool-settings-attribute-permissions-and-scopes)

## Standardattribute
<a name="cognito-user-pools-standard-attributes"></a>

Amazon Cognito weist allen Benutzern basierend auf der [OpenID-Connect-Spezifikation](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) eine Reihe von Standardattributen zu. Standard- und benutzerdefinierte Attributwerte können standardmäßig aus einer beliebigen Zeichenfolge von bis zu 2048 Zeichen bestehen. Einige Attributwerte unterliegen jedoch Formatierungseinschränkungen. 

Die Standardattribute sind:
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`
+ `updated_at`
+ `address`
+ `email`
+ `phone_number`
+ `sub`

Mit Ausnahme von `sub` sind Standardattribute standardmäßig für alle Benutzer optional. Um ein Attribut als erforderlich festzulegen, aktivieren Sie bei der Erstellung des Benutzerpools das Kontrollkästchen **Required** (Erforderlich) neben dem Attribut. Amazon Cognito weist jedem `sub`-Benutzerattribut einen eindeutigen Benutzerkennungswert zu. Nur die Attribute **email** und **phone\$1number** können verifiziert werden.

Standardattribute haben vordefinierte Eigenschaften, die Sie im `SchemaAttributes` Parameter einer [DescribeUserPool API-Antwort](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html#API_DescribeUserPool_ResponseSyntax) anzeigen können. Sie können benutzerdefinierte Werte für diese Attributeigenschaften wie Datentyp, Veränderbarkeit und Längenbeschränkungen festlegen. Um Standardattributeigenschaften zu ändern, legen Sie ihre benutzerdefinierten Werte im [CreateUserPool Schema-Parameter](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) fest. Im Schema legen Sie auch die erforderlichen Attribute fest. Sie können die Eigenschaften von Standardattributen nicht ändern, wenn Sie Benutzerpools in der Amazon Cognito Cognito-Konsole erstellen.

**Anmerkung**  
 Wenn Sie ein Standardattribut als **erforderlich** markieren, kann ein Benutzer sich erst registrieren, wenn er einen Wert für das Attribut angibt. Um Benutzer zu erstellen und keine Werte für erforderliche Attribute anzugeben, können Administratoren die [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API verwenden. Nachdem Sie einen Benutzerpool erstellt haben, können Sie die Markierung eines Attributs als erforderlich und nicht erforderlich nicht mehr ändern.Details zu Standardattributen und Formateinschränkungen

**birthdate**  
Der Wert muss ein gültiges 10-stelliges Datum im Format sein YYYY-MM-DD.

**E-Mail**  
Benutzer und Administratoren können die Werte für E-Mail-Adressen überprüfen.  
Ein Administrator mit den entsprechenden AWS-Konto Berechtigungen kann die E-Mail-Adresse des Benutzers ändern und sie auch als verifiziert markieren. Markieren Sie eine E-Mail-Adresse mit der [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API oder dem Befehl [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS Command Line Interface (AWS CLI) als verifiziert. Mit diesem Befehl kann der Administrator das `email_verified`-Attribut in `true` ändern. **Sie können einen Benutzer auch im Benutzermenü der Amazon Cognito Cognito-Konsole bearbeiten, um eine E-Mail-Adresse als verifiziert zu markieren.**  
Der Wert muss eine [gültige E-Mail-Adresszeichenfolge](https://datatracker.ietf.org/doc/html/rfc3696#section-3) sein, die dem Standard-E-Mail-Format mit dem @-Symbol und der Domäne folgt und bis zu 2048 Zeichen lang sein kann.

**phone\$1number**  
Ein Benutzer muss eine Telefonnummer angeben, wenn die SMS-Multi-Faktor-Authentifizierung (MFA) aktiv ist. Weitere Informationen finden Sie unter [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md).  
Benutzer und Administratoren können Telefonnummernwerte überprüfen.  
Ein Administrator mit den entsprechenden AWS-Konto Berechtigungen kann die Telefonnummer des Benutzers ändern und sie auch als verifiziert markieren. Markieren Sie eine Telefonnummer mit der [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API oder dem [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS CLI Befehl als verifiziert. Mit diesem Befehl kann der Administrator das `phone_number_verified`-Attribut in `true` ändern. **Sie können einen Benutzer auch im Benutzermenü der Amazon Cognito Cognito-Konsole bearbeiten, um eine Telefonnummer als verifiziert zu markieren.**  
Bei Telefonnummern müssen die folgenden Formatierungsregeln beachtet werden: Eine Telefonnummer muss mit einem Pluszeichen (**\$1**) beginnen, auf das direkt der Ländercode folgt. Eine Telefonnummer kann nur das Pluszeichen **\$1** und Ziffern enthalten. Entfernen Sie alle anderen Zeichen, z. B. Klammern, Leerzeichen und Bindestriche (**-**) aus einer Telefonnummer, bevor Sie den Wert an den Service übermitteln. Eine Telefonnummer in den Vereinigten Staaten muss beispielsweise das folgende Format haben: **\$114325551212**.

**preferred\$1username**  
Sie können `preferred_username` als erforderlich oder als Alias auswählen, aber nicht beides. Wenn es sich um einen Alias `preferred_username` handelt, können Sie eine Anfrage an den [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API-Vorgang stellen und den Attributwert hinzufügen, nachdem Sie den Benutzer bestätigt haben.

**sub**  
Indexieren und durchsuchen Sie Ihre Benutzer basierend auf dem `sub`-Attribut. Das `sub`-Attribut ist eine eindeutige Benutzerkennung in jedem Benutzerpool. Benutzer können Attribute wie `phone_number` und `email` ändern. Das `sub`-Attribut hat einen festen Wert. Weitere Informationen zur Suche nach Benutzern finden Sie unter [Verwalten von und Suchen nach Benutzerkonten](how-to-manage-user-accounts.md).

### Erforderliche Attribute anzeigen
<a name="how-to-edit-standard-attributes"></a>

Gehen Sie wie folgt vor, um die erforderlichen Attribute für einen bestimmten Benutzerpool anzuzeigen.

**Anmerkung**  
Sie können erforderliche Attribute nicht mehr ändern, nachdem Sie einen Benutzerpool erstellt haben.

**Erforderliche Attribute anzeigen**

1. Gehen Sie zu [Amazon Cognito](https://console.aws.amazon.com/cognito/home) in der AWS-Managementkonsole. Wenn Sie von der Konsole dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das **Anmelde-Menü**.

1. Zeigen Sie die erforderlichen Attribute Ihres Benutzerpools im Abschnitt **Required attributes** (Erforderliche Attribute) an.

## Benutzernamen und bevorzugter Benutzername
<a name="user-pool-settings-usernames"></a>

Der Wert `username` ist ein separates Attribut und nicht mit dem Attribut `name` identisch. Jeder Benutzer hat ein `username`-Attribut. Amazon Cognito generiert automatisch einen Benutzernamen für Verbundbenutzer. Sie müssen ein `username`-Attribut angeben, um einen lokalen Benutzer im Amazon-Cognito-Verzeichnis zu erstellen. Nachdem Sie einen Benutzer erstellt haben, können Sie den Wert des `username`-Attributs nicht mehr ändern.

Entwickler können das `preferred_username`-Attribut verwenden, um Benutzern Benutzernamen zuzuteilen, die diese ändern können. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](#user-pool-settings-aliases).

Wenn für Ihre Anwendung kein Benutzername erforderlich ist, müssen Sie Benutzer nicht zur Angabe eines Benutzernamens auffordern. Ihre App kann im Hintergrund einen eindeutigen Benutzernamen für Benutzer erstellen. Dies kann sich als nützlich erweisen, wenn Sie beispielsweise möchten, dass sich Benutzer mit einer E-Mail-Adresse und einem Passwort registrieren und anmelden. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](#user-pool-settings-aliases).

Der `username` muss innerhalb eines Benutzerpools eindeutig sein. Ein `username` kann wiederverwendet werden, aber erst, nachdem er gelöscht wurde und nicht mehr in Gebrauch ist. Informationen zu den Zeichenkettenbeschränkungen für die `username` Attribute finden Sie in der Eigenschaft *username* einer [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username)API-Anfrage.

## Anpassen von Anmeldeattributen
<a name="user-pool-settings-aliases"></a>

Beim Erstellen eines Benutzerpools können Sie *Benutzernamenattribute* einrichten, wenn Sie möchten, dass sich Ihre Benutzer mit einer E-Mail-Adresse oder Telefonnummer als Benutzername registrieren können. Alternativ können Sie *Aliasattribute* einrichten, um Ihren Benutzern die Wahl zu lassen: Sie können mehrere Attribute angeben, wenn sie sich registrieren, und sich dann mit einem Benutzernamen, einem bevorzugten Benutzernamen, einer E-Mail-Adresse oder einer Telefonnummer anmelden.

**Wichtig**  
Nachdem Sie einen Benutzerpool erstellt haben, können Sie diese Einstellung nicht mehr ändern.

### So wählen Sie zwischen Aliasattributen und Benutzernamenattributen
<a name="user-pool-settings-aliases-settings"></a>


| Ihre Anforderung | Aliasattribute | Benutzernamenattribute | 
| --- |--- |--- |
| Benutzer haben mehrere Anmeldeattribute | Ja¹ | Nein² | 
| Benutzer müssen ihre E-Mail-Adresse oder Telefonnummer verifizieren, bevor sie sich damit anmelden können | Ja | Nein | 
| Melden Sie Benutzer mit doppelten E-Mail-Adressen oder Telefonnummern an und vermeiden Sie UsernameExistsException Fehler³ | Ja | Nein | 
| Kann denselben Attributwert für E-Mail-Adresse oder Telefonnummer mehreren Benutzern zuweisen | Ja⁴ | Nein | 

¹ Verfügbare Anmeldeattribute sind der Benutzername, die E-Mail-Adresse, die Telefonnummer und der bevorzugte Benutzername.

² Es ist eine Anmeldung mit der E-Mail-Adresse oder der Telefonnummer möglich.

³ Ihr Benutzerpool generiert keine `UsernameExistsException`-Fehler, wenn sich Benutzer mit möglicherweise doppelten E-Mail-Adressen oder Telefonnummern, aber ohne Benutzernamen registrieren. Dieses Verhalten ist unabhängig von der Option **Fehler bei vorhandenen Benutzernamen verhindern**, die für Anmelde-, aber nicht für Registrierungsvorgänge gilt.

³ Nur der letzte Benutzer, der das Attribut verifiziert hat, kann sich damit anmelden.

#### Option 1: Mehrere Anmeldeattribute (Aliasattribute)
<a name="user-pool-settings-aliases-settings-option-1"></a>

Ein Attribut ist ein *Alias*, wenn Benutzer einen Benutzernamen haben, sich aber auch mit diesem Attribut anmelden können. Richten Sie Aliase ein, wenn Sie Ihren Benutzern die Möglichkeit geben möchten, zwischen ihrem Benutzernamen und anderen Attributwerten im Feld für den Benutzernamen Ihres Anmeldeformulars zu wählen. Das `username` Attribut ist ein fester Wert, den Benutzer nicht ändern können. Wenn Sie ein Attribut als Alias markieren, können Benutzer anstelle des Benutzernamens dieses Attribut zur Anmeldung verwenden. Die Attribute E-Mail-Adresse, Telefonnummer und bevorzugter Benutzername können als Aliasnamen markiert werden. Wenn Sie beispielsweise die E-Mail-Adresse und die Telefonnummer als Aliasnamen für einen Benutzerpool auswählen, können sich Benutzer in diesem Benutzerpool mit ihrem Benutzernamen, ihrer E-Mail-Adresse oder ihrer Telefonnummer sowie ihrem Passwort anmelden.

Wählen Sie zum Auswählen von Aliasattributen **User name** (Benutzername) und mindestens eine zusätzliche Anmeldeoption aus, wenn Sie den Benutzerpool erstellen.

**Anmerkung**  
Wenn Sie Ihren Benutzerpool ohne Berücksichtigung der Groß- und Kleinschreibung konfigurieren, kann ein Benutzer entweder Klein- oder Großbuchstaben verwenden, um sich mit seinem Alias zu registrieren oder anzumelden. Weitere Informationen finden Sie [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)in der *Amazon Cognito Cognito-API-Referenz für Benutzerpools*.

Wenn Sie die E-Mail-Adresse als Alias auswählen, akzeptiert Amazon Cognito keinen Benutzernamen, der mit einem gültigen E-Mail-Adressformat übereinstimmt. Ebenso wenig akzeptiert Amazon Cognito einen Benutzernamen für diesen Benutzerpool, der einem gültigen Telefonnummernformat entspricht, wenn Sie eine Telefonnummer als Alias auswählen.

**Anmerkung**  
Aliaswerte müssen in einem Benutzerpool eindeutig sein. Wenn Sie einen Alias für eine E-Mail-Adresse oder eine Telefonnummer konfigurieren, kann der von Ihnen bereitgestellte Wert nur in einem Konto den bestätigten Status aufweisen. Wenn Ihr Benutzer während der Registrierung eine E-Mail-Adresse oder Telefonnummer als Aliaswert angibt und ein anderer Benutzer diesen Aliaswert bereits verwendet hat, ist die Registrierung erfolgreich. Versucht ein Benutzer allerdings, das Konto mit dieser E-Mail-Adresse (oder Telefonnummer) zu bestätigen, und gibt den gültigen Code ein, gibt Amazon Cognito einen `AliasExistsException`-Fehler zurück. Der Fehler weist den Benutzer darauf hin, dass bereits ein Konto mit dieser E-Mail-Adresse (oder Telefonnummer) vorhanden ist. An diesem Punkt kann der Benutzer die Erstellung des neuen Kontos abbrechen und stattdessen versuchen, das Passwort für das alte Konto zurückzusetzen. Wenn der Benutzer mit der Erstellung des neuen Kontos fortfährt, muss Ihre App die `ConfirmSignUp`-API mit der Option `forceAliasCreation` aufrufen. `ConfirmSignUp` mit `forceAliasCreation` verschiebt den Alias vom vorherigen Konto in das neu erstellte Konto und markiert das Attribut im vorherigen Konto als nicht verifiziert.

Telefonnummern und E-Mail-Adressen werden für einen Benutzer erst zu aktiven Aliasnamen, nachdem Ihr Benutzer die Telefonnummern und E-Mail-Adressen verifiziert hat. Wir empfehlen, die automatische Verifizierung von E-Mail-Adressen und Telefonnummern zu aktivieren, wenn Sie diese als Aliasnamen verwenden.

Wählen Sie Aliasattribute, um den Fehler `UsernameExistsException` bei den Attributen für E-Mail-Adressen und Telefonnummern zu vermeiden, wenn sich Ihre Benutzer anmelden.

Aktivieren Sie das `preferred_username`-Attribut, damit Ihr Benutzer den Benutzernamen ändern kann, mit dem er sich anmeldet, während sich der `username`-Attributwert nicht ändert. Wenn Sie diese Benutzererfahrung unterstützen möchten, senden Sie den neuen `username`-Wert als `preferred_username` und wählen `preferred_username` als Alias aus. Anschließend können sich Benutzer mit dem neuen Wert anmelden, den sie eingegeben haben. Wenn `preferred_username` als Alias ausgewählt ist, kann Ihr Benutzer den Wert nur dann bereitstellen, wenn er ein Konto bestätigt. Er kann den Wert nicht während der Registrierung bereitstellen.

Wenn sich der Benutzer mit einem Benutzernamen anmeldet, können Sie auswählen, ob er sich mit einem oder mehreren der folgenden Aliasnamen anmelden kann.
+ Verifizierte E-Mail-Adresse
+ Verifizierte Telefonnummer
+ Bevorzugter Benutzername

Nachdem sich der Benutzer registriert hat, kann er diese Aliasnamen ändern.

**Wichtig**  
Wenn Ihr Benutzerpool die Anmeldung mit Aliasen unterstützt und Sie einen Benutzer autorisieren oder suchen möchten, identifizieren Sie Ihren Benutzer nicht anhand seiner Anmeldeattribute. Die Benutzerkennung `sub` mit festem Wert ist der einzige konsistente Bezeichner für die Identität des Benutzers.

Fügen Sie die folgenden Schritte ein, wenn Sie den Benutzerpool erstellen, damit sich Benutzer mit einem Alias anmelden können.

------
#### [ Phone number or email address (console) ]

Sie müssen E-Mail-Adresse und Telefonnummer als Alias-Attribute festlegen, wenn Sie einen Benutzerpool erstellen.

**So erstellen Sie einen Benutzerpool mit Benutzernamen-Aliasnamen in der Amazon Cognito Cognito-Konsole**

1. Wechseln Sie zu [Amazon Cognito](https://console.aws.amazon.com/cognito/home) in der AWS-Managementkonsole. Wenn Sie von der Konsole dazu aufgefordert werden, geben Sie Ihre Anmeldeinformationen ein. AWS 

1. Erstellen Sie mit den Schaltflächen **Erste Schritte** oder Benutzerpool **erstellen einen neuen Benutzerpool**.

1. Wählen Sie unter Anwendung **definieren die Anwendungseinstellungen** aus.

1. Aktivieren Sie unter ****Optionen für Anmeldekennungen** konfigurieren** das Kontrollkästchen neben **Benutzername** und mindestens eine der anderen Optionen, **E-Mail** und **Telefonnummer**.

1. Wählen Sie Ihre Alias-Attribute als **Erforderliche Attribute für** die Registrierung aus. Im Anmeldeformular für verwaltete Logins fordert Amazon Cognito neue Benutzer auf, Werte für die erforderlichen Attribute anzugeben.

1. Richten **Sie unter Rückgabe-URL hinzufügen eine Rückruf-URL** für die Anwendung ein, die nach der verwalteten Anmeldung weitergeleitet werden soll.

1. Wählen Sie **Erstellen** aus.

------
#### [ Phone number or email address (API/SDK) ]

Erstellen Sie mit dem [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Vorgang einen neuen Benutzerpool. Konfigurieren Sie den `AliasAttributes` Parameter wie gezeigt. Sie können den `email` Eintrag entfernen, wenn Sie nur Telefonnummern-Aliase verwenden möchten, oder den `phone_number` Eintrag entfernen, wenn Sie nur E-Mail-Adress-Aliase verwenden möchten.

```
"AliasAttributes": [
   "email",
   "phone_number"
],
```

------
#### [ Preferred username (API/SDK) ]

Die Amazon Cognito Cognito-Konsole erstellt Benutzerpools ohne `preferred_username` Alias. Um Benutzerpools mit einem `preferred_username` Alias zu erstellen, richten Sie Benutzerpools mit [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API-Anfragen in einem AWS SDK ein. Um die Erstellung von bevorzugten Benutzernamenattributen bei der Registrierung zu unterstützen, legen Sie diese `preferred_username` als erforderliches Attribut fest. Im Anmeldeformular für verwaltete Logins fordert Amazon Cognito neue Benutzer auf, Werte für die erforderlichen Attribute anzugeben. Sie *können* es in der Amazon Cognito Cognito-Konsole `preferred_username` als erforderliches Attribut festlegen, aber dadurch ist es nicht als Alias verfügbar.

**Als Alias konfigurieren**  
`preferred_username`Als Alias im `AliasAttributes` Parameter einer `CreateUserPool` Anfrage konfigurieren, wie in der Abbildung gezeigt. Entfernen Sie alle Werte, die Sie nicht als Alias-Attribute verwenden möchten, aus der Liste.

```
"AliasAttributes": [
   "email",
   "phone_number",
   "preferred_username"
],
```

**Konfigurieren Sie nach Bedarf**  
Im Anmeldeformular für verwaltete Logins fordert Amazon Cognito neue Benutzer auf, Werte für die erforderlichen Attribute anzugeben. Konfigurieren Sie `preferred_username` die Konfiguration nach Bedarf im `SchemaAttributes` Parameter einer Anfrage. [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)

Um den bevorzugten Benutzernamen als erforderliches Attribut festzulegen, konfigurieren Sie ihn wie in der Abbildung gezeigt. Im folgenden Beispiel wird das Standardschema von so geändert`preferred_username`, dass es wie erforderlich festgelegt wird. Andere Schemaparameter wie `AttributeDataType` (standardmäßig`string`) und `StringAttributeConstraints` (standardmäßig 1—99 Zeichen lang) gehen von Standardwerten aus.

```
"Schema": [
   {
      "Name": "preferred_username",
      "Required": true
   }
]
```

------

#### Option 2: E-Mail-Adresse oder Telefonnummer als Anmeldeattribut (Benutzernamenattribute)
<a name="user-pool-settings-aliases-settings-option-2"></a>

Wenn sich der Benutzer mit einer E-Mail-Adresse oder Telefonnummer als Benutzername registriert, können Sie auswählen, ob er sich nur mit E-Mail-Adressen, nur mit Telefonnummern oder mit beidem registrieren kann. 

Um Benutzernamenattribute auszuwählen, wählen Sie beim Erstellen Ihres Benutzerpools nicht **Benutzername** als Anmeldeoption aus.

Die E-Mail-Adresse oder Telefonnummer muss eindeutig sein und darf nicht bereits von einem anderen Benutzer verwendet werden. Sie muss nicht bestätigt sein. Nachdem sich der Benutzer mit einer E-Mail-Adresse oder Telefonnummer registriert hat, kann der Benutzer mit dieser E-Mail-Adresse oder Telefonnummer kein neues Konto erstellen. Der Benutzer kann das vorhandene Konto nur wiederverwenden und das Kontopasswort bei Bedarf zurücksetzen. Der Benutzer kann jedoch die E-Mail-Adresse oder Telefonnummer in eine neue E-Mail-Adresse oder Telefonnummer ändern. Wenn die E-Mail-Adresse oder Telefonnummer noch nicht in Gebrauch ist, wird sie zum neuen Benutzernamen.

Wenn Sie sowohl E-Mail-Adresse als auch Telefonnummer als Benutzernamenattribute auswählen, können sich Benutzer mit dem einen oder anderen anmelden, auch wenn sie Werte für beide Attribute angeben. Der Benutzername für die Anmeldung basiert auf dem Wert, den Sie im `Username` Parameter von [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username)übergeben.

**Anmerkung**  
Wenn sich ein Benutzer mit einer E-Mail-Adresse als Benutzername registriert, kann er den Benutzernamen zu einer anderen E-Mail-Adresse ändern, jedoch nicht zu einer Telefonnummer. Wenn sich Benutzer mit einer Telefonnummer registrieren, können sie den Benutzernamen zu einer anderen Telefonnummer ändern, jedoch nicht zu einer E-Mail-Adresse.

Führen Sie während der Erstellung des Benutzerpools die folgenden Schritte aus, um eine Registrierung und Anmeldung mit einer E-Mail-Adresse oder Telefonnummer einzurichten.

------
#### [ Username attributes (console) ]

Mit dem folgenden Verfahren wird ein Benutzerpool mit den Attributen E-Mail-Adresse oder Telefonnummer erstellt. Der Unterschied beim Verfahren für Benutzernamenattribute in der Amazon Cognito Cognito-Konsole besteht darin, dass Sie den **Benutzernamen** nicht auch als Anmeldeattribut festlegen.

**So erstellen Sie einen Benutzerpool mit Benutzernamenattributen in der Amazon Cognito Cognito-Konsole**

1. Wechseln Sie zu [Amazon Cognito](https://console.aws.amazon.com/cognito/home) in der AWS-Managementkonsole. Wenn Sie von der Konsole dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Erstellen Sie mit den Schaltflächen **Erste Schritte** oder Benutzerpool **erstellen einen neuen Benutzerpool**.

1. Wählen Sie unter Anwendung **definieren die Anwendungseinstellungen** aus.

1. Wählen Sie unter **Optionen für Anmeldekennungen konfigurieren** **unter Optionen für Anmeldekennungen** Ihre Benutzernamenattribute aus: **E-Mail**, **Telefonnummer oder beides.** Lassen Sie das Häkchen für den **Benutzernamen deaktiviert**.

1. Es hat sich bewährt, dass Sie Ihre Benutzernamenattribute als **Erforderliche Attribute für die Registrierung** auswählen. Im Anmeldeformular für verwaltete Logins fordert Amazon Cognito neue Benutzer auf, Werte für die erforderlichen Attribute anzugeben. Wenn Sie Ihre Benutzernamenattribute nicht wie erforderlich festlegen, fordert Amazon Cognito neue Benutzer nicht auf, Werte für sie anzugeben. In diesem Szenario müssen Sie Ihre Anwendung so konfigurieren, dass E-Mail-Adressen oder Telefonnummern für jeden Benutzer erfasst und übermittelt werden, bevor dieser sich anmelden kann.

1. Richten **Sie unter Rückgabe-URL hinzufügen eine Rückruf-URL** für die Anwendung ein, die nach der verwalteten Anmeldung weitergeleitet wird.

1. Wählen Sie **Erstellen** aus.

------
#### [ Username attributes (API/SDK) ]

Konfigurieren Sie den `UsernameAttributes` Parameter in einer [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)Anfrage wie gezeigt. Um die Anmeldung nur mit Benutzernamen mit E-Mail-Adresse zu ermöglichen, geben Sie in dieser Liste die Option „`email`Allein“ an. Um die Anmeldung nur mit Nutzernamen mit Telefonnummer zu ermöglichen, geben Sie „Nur“ an. `phone_number` Dieser Parameter hat Vorrang vor dem Benutzernamen als Anmeldeoption.

```
"UsernameAttributes": [ 
   "email",
   "phone_number"
],
```

------

Wenn Sie Benutzernamenattribute konfigurieren, können Sie [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API-Anfragen stellen, die eine E-Mail-Adresse oder Telefonnummer im `username` Parameter übergeben. Im Folgenden wird das Verhalten der `SignUp` Code-API-Operation mit Benutzernamenattributen beschrieben.
+ Wenn die `username` Zeichenfolge beispielsweise ein gültiges E-Mail-Adressformat hat`user@example.com`, füllt der Benutzerpool das `email` Attribut des Benutzers automatisch mit dem `username` Wert aus.
+ Wenn die `username` Zeichenfolge beispielsweise ein gültiges Telefonnummernformat hat`+12065551212`, füllt der Benutzerpool das `phone_number` Attribut des Benutzers automatisch mit dem `username` Wert aus.
+ Wenn die `username`-Zeichenfolge kein gültiges E-Mail-Adress- oder Telefonnummernformat besitzt, gibt die `SignUp`-API eine Ausnahme zurück.
+ Wenn die Zeichenfolge `username` eine E-Mail-Adresse oder Telefonnummer enthält, die bereits verwendet wird, gibt die `SignUp`-API eine Ausnahme zurück.
+ Die `SignUp` API füllt das `username` Attribut mit einer [UUID](cognito-terms.md#terms-uuid) für Ihren Benutzer. Diese UUID hat den gleichen Wert wie der `sub`-Anspruch im Token für die Benutzeridentität.

Sie können eine E-Mail-Adresse oder Telefonnummer anstelle des Benutzernamens in allen APIs Fällen verwenden, mit Ausnahme des Vorgangs. [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) In `ListUsers` API-Anfragen können Sie einen Wert `Filter` von `email` oder angeben`phone_number`. Wenn Sie nach filtern`username`, müssen Sie den UUID-Benutzernamen angeben, nicht die E-Mail-Adresse oder Telefonnummer.

## Custom attributes (Benutzerdefinierte Attribute)
<a name="user-pool-settings-custom-attributes"></a>

Sie können Ihrem Benutzerpool bis zu 50 benutzerdefinierte Attribute hinzufügen. Für die benutzerdefinierten Attribute können Sie eine Mindest- und/oder Höchstlänge festlegen. Die maximale Länge eines benutzerdefinierten Attributs darf jedoch nicht mehr als 2048 Zeichen betragen. Der Name eines benutzerdefinierten Attributs muss dem Muster für reguläre Ausdrücke entsprechen, das im `Name` Parameter von beschrieben ist. [SchemaAttributeType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SchemaAttributeType.html)

**Jedes benutzerdefinierte Attribut hat die folgenden Eigenschaften:**
+ Sie können es als eine Zeichenfolge, eine Zahl, einen booleschen Wert oder `DateTime` ein Objekt definieren. Amazon Cognito schreibt benutzerdefinierte Attributwerte nur als Strings in das ID-Token.
**Anmerkung**  
In der Amazon Cognito Cognito-Konsole können Sie nur benutzerdefinierte Attribute der Datentypen Zeichenfolge und Zahl hinzufügen. Zusätzliche Optionen wie boolesche Datentypen und `DateTime` Attributdatentypen sind nur in den `SchemaAttributes` Property of [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)- und [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Anfragen verfügbar.
+ Sie können nicht verlangen, dass Benutzer einen Wert für das Attribut angeben.
+ Sie können es nicht mehr entfernen oder ändern, nachdem Sie es dem Benutzerpool hinzugefügt haben.
+ Die Zeichenlänge des Attributnamens liegt innerhalb des Grenzwerts, den Amazon Cognito akzeptiert. Weitere Informationen finden Sie unter [Kontingente in Amazon Cognito](quotas.md).
+ Es kann *veränderlich* oder *unveränderlich* sein. Sie können einen Wert nur in ein unveränderliches benutzerdefiniertes Attribut schreiben, wenn Sie einen Benutzer erstellen. Sie können den Wert eines veränderlichen Attributs ändern, wenn Ihr App-Client über Schreibberechtigung für das Attribut verfügt. Weitere Informationen finden Sie unter [Attributberechtigungen und -bereiche](#user-pool-settings-attribute-permissions-and-scopes).

**Anmerkung**  
Im Code und in den Regeleinstellungen für [Verwenden der rollenbasierten Zugriffskontrolle](role-based-access-control.md) ist für benutzerdefinierte Attribute zur Unterscheidung von Standardattributen das Präfix `custom:` erforderlich.

Sie können auch *Entwicklerattribute* hinzufügen, wenn Sie Benutzerpools erstellen, und zwar in der `SchemaAttributes` Eigenschaft von. [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) Entwicklerattribute verfügen über ein `dev:`-Präfix. Sie können die Entwicklerattribute eines Benutzers nur mit AWS Anmeldeinformationen ändern. Entwicklerattribute sind eine veraltete Funktion, die Amazon Cognito durch Lese- und Schreibberechtigungen für App-Clients ersetzt hat.

Führen Sie die folgenden Schritte aus, um ein neues benutzerdefiniertes Attribut zu erstellen.

**Ein benutzerdefiniertes Attribut mithilfe der Konsole hinzufügen**

1. Gehen Sie zu [Amazon Cognito](https://console.aws.amazon.com/cognito/home) in der AWS-Managementkonsole. Wenn Sie von der Konsole dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das **Anmeldemenü** und wählen Sie im Abschnitt **Benutzerdefinierte Attribute** die Option **Benutzerdefinierte Attribute hinzufügen** aus.

1. Geben Sie auf der Seite **Add custom attributes** (Benutzerdefinierte Attribute hinzufügen) die folgenden Details zu neuen Attributen ein:
   + Geben Sie einen **Name** (Namen) ein.
   + Wählen Sie als **Type** (Typ) entweder **String** (Zeichenfolge) oder **Number** (Zahl) aus.
   + Geben Sie eine/n **Min** (minimal) Zeichenfolgelänge oder -Zahlenwert ein.
   + Geben Sie eine/n **Max** (maximal) Zeichenfolgelänge oder -Zahlenwert ein.
   + Wählen Sie **Mutable** (Veränderlich) aus, wenn Sie Benutzern die Berechtigung erteilen möchten, den Wert eines benutzerdefinierten Attributs zu ändern, nachdem sie den Anfangswert festgelegt haben.

1. Wählen Sie **Änderungen speichern ** aus.

## Attributberechtigungen und -bereiche
<a name="user-pool-settings-attribute-permissions-and-scopes"></a>

Für jeden App-Client können Sie Lese- und Schreibberechtigungen für jedes Benutzerattribut festlegen. Auf diese Weise können Sie den Zugriff steuern, den jede App benötigt, um jedes Attribut zu lesen und zu ändern, das Sie für Ihre Benutzer speichern. Beispiel: Sie haben ein benutzerdefiniertes Attribut, das angibt, ob ein Benutzer zahlender Kunde ist oder nicht. Ihre Apps können dieses Attribut möglicherweise sehen, es aber nicht direkt ändern. Stattdessen aktualisieren Sie dieses Attribut mit einem Verwaltungstool oder einem Hintergrundprozess. Sie können Berechtigungen für Benutzerattribute über die Amazon-Cognito-Konsole, die Amazon-Cognito-API oder die AWS CLI festlegen. Standardmäßig werden alle neuen benutzerdefinierten Attribute erst verfügbar, wenn Sie Lese- und Schreibberechtigungen dafür einrichten. Wenn Sie einen neuen App-Client erstellen, gewähren Sie Ihrer App standardmäßig Lese- und Schreibberechtigungen für alle Standard- und benutzerdefinierten Attribute. Wenn Sie Ihre App nur auf die Menge an Informationen beschränken möchten, die sie benötigt, weisen Sie Attributen in Ihrer App-Client-Konfiguration bestimmte Berechtigungen zu.

Es hat sich bewährt, Lese- und Schreibberechtigungen für Attribute anzugeben, wenn Sie einen App-Client erstellen. Gewähren Sie Ihrem App-Client Zugriff auf die Mindestanzahl an Benutzerattributen, die Sie für den Betrieb Ihrer Anwendung benötigen.

**Anmerkung**  
[DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html)gibt nur Werte für `ReadAttributes` und zurück`WriteAttributes`, wenn Sie andere App-Client-Berechtigungen als die Standardberechtigungen konfigurieren.

**So aktualisieren Sie Attributberechtigungen (AWS-Managementkonsole)**

1. Gehen Sie zu [Amazon Cognito](https://console.aws.amazon.com/cognito/home) in der AWS-Managementkonsole. Wenn Sie von der Konsole dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **App-Clients** und wählen Sie einen App-Client aus der Liste aus.

1. Wählen Sie auf der Registerkarte **Attributberechtigungen** die Option **Bearbeiten** aus.

1. Konfigurieren Sie auf der Seite **Edit attribute read and write permissions** (Lese- und Schreibberechtigungen für Attribute bearbeiten) Ihre Lese- und Schreibberechtigungen und wählen Sie anschließend **Save changes** (Änderungen speichern) aus.

Wiederholen Sie diese Schritte für jeden App-Client, der das benutzerdefinierte Attribut verwendet.

Für jeden App-Client können Sie Attribute als lesbar oder schreibbar markieren. Dies gilt sowohl für Standard- als auch für benutzerdefinierte Attribute. Ihre App kann den Wert von Attributen abrufen, die Sie als lesbar markieren, und den Wert von Attributen festlegen oder ändern, die Sie als schreibbar markieren. Wenn Ihre App versucht, einen Wert für ein Attribut festzulegen, zu dessen Schreiben sie nicht berechtigt ist, kehrt Amazon Cognito zurück`NotAuthorizedException`. [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)Anfragen enthalten ein Zugriffstoken mit einem App-Client-Anspruch; Amazon Cognito gibt nur Werte für Attribute zurück, die Ihr App-Client lesen kann. Das ID-Token Ihres Benutzers aus einer App enthält nur Ansprüche, die den lesbaren Attributen entsprechen. Alle App-Clients können für den Benutzerpool erforderliche Attribute schreiben. Sie können den Wert eines Attributs in einer API-Anforderung für Amazon-Cognito-Benutzerpools nur festlegen, wenn Sie auch einen Wert für alle erforderlichen Attribute angeben, die noch keinen Wert haben.

Benutzerdefinierte Attribute verfügen über unterschiedliche Funktionen für Lese- und Schreibberechtigungen. Sie können sie für den Benutzerpool als veränderbar oder unveränderlich erstellen und sie für jeden App-Client einzeln als Lese- oder Schreibattribute festlegen.

Ein unveränderliches benutzerdefiniertes Attribut kann einmal während der Benutzererstellung aktualisiert werden. Sie können ein unveränderliches Attribut mit den folgenden Methoden auffüllen.
+ `SignUp`: Ein Benutzer meldet sich mit einem App-Client an, der Schreibzugriff auf ein unveränderliches benutzerdefiniertes Attribut hat. Es wird ein Wert für dieses Attribut angegeben.
+ Anmeldung mit einem Drittanbieter-IdP: Ein Benutzer meldet sich bei einem App-Client an, der Schreibzugriff auf ein unveränderliches benutzerdefiniertes Attribut hat. Ihre Benutzerpoolkonfiguration für den IdP enthält eine Regel, mit der ein bereitgestellter Antrag einem unveränderlichen Attribut zugeordnet wird. Dies ist möglich, aber nicht praktikabel, da sich der Benutzer nur einmal anmelden kann. Bei Anmeldeversuchen nach dem ersten Versuch lehnt Amazon Cognito den Versuch aufgrund der Zuordnungsregel zu einem jetzt nicht beschreibbaren Attribut ab.
+ `AdminCreateUser`: Sie geben einen Wert für ein unveränderliches Attribut an.

### Attributberechtigungen mit Geltungsbereichen
<a name="user-pool-settings-attribute-scope-based-permissions"></a>

In Benutzerpools, die Sie mit einem AWS SDK oder CDK, der REST-API oder dem konfigurieren, können Sie den AWS CLI Lese- oder Schreibzugriff des App-Clients mit dem OIDC-Bereich konfigurieren. `oidc:profile` Das `oidc:profile` gewährt Lese- oder Schreibzugriff auf die folgenden Standardattribute:
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`

Diese Liste besteht aus den OIDC-Standardattributen abzüglich `email``phone_number`,`sub`, und`address`, wie in [Abschnitt 2.4 der OIDC-Spezifikation](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes) definiert. Informationen zu den Bereichen, die Sie Ihren App-Clients zuweisen können, finden Sie unter [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md).

Um Ihren App-Client so zu konfigurieren, dass er in die Attribute im `oidc:profile` Bereich schreibt, legen Sie in einer [WriteAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-WriteAttributes)oder `oidc:profile` API-Anfrage den Wert auf sowie alle anderen Attribute fest, deren Änderung Sie durch Ihre Anwendung zulassen möchten. [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) Um ebenfalls Lesezugriff auf diese Attribute zu gewähren, erhöhen Sie `oidc:profile` den Wert von [ReadAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ReadAttributes).

Sie können Attributberechtigungen und -bereiche nach dem Erstellen des Benutzerpools ändern.

# JSON-Webtoken (JWTs) für den Benutzerpool verstehen
<a name="amazon-cognito-user-pools-using-tokens-with-identity-providers"></a>

Token sind Authentifizierungsartefakte, die Ihre Anwendungen als Nachweis für die OIDC-Authentifizierung und zur Anforderung des Zugriffs auf Ressourcen verwenden können. Bei den *Ansprüchen* in Tokens handelt es sich um Informationen über Ihren Benutzer. Das ID-Token enthält Angaben zu dessen Identität, wie etwa Benutzername, Familienname und E-Mail-Adresse. Das Zugriffstoken enthält Behauptungen wie`scope`, mit denen der authentifizierte Benutzer auf Self-Service-API-Operationen von Drittanbietern APIs, Amazon Cognito Cognito-Benutzern zugreifen kann, und die. [UserInfo-Endpunkt](userinfo-endpoint.md) Sowohl das Zugriffs- als auch das ID-Token enthalten einen `cognito:groups`-Anspruch mit der Gruppenmitgliedschaft Ihres Benutzers in Ihrem Benutzerpool. Weitere Informationen zu Benutzerpoolgruppen finden Sie unter [Hinzufügen von Gruppen zu einem Benutzerpool](cognito-user-pools-user-groups.md).

Amazon Cognito bietet außerdem auch Refresh-Token, mit denen Sie neue Token abrufen oder vorhandene Token widerrufen können. [Aktualisieren Sie ein Token](amazon-cognito-user-pools-using-the-refresh-token.md), um eine neue ID und Zugriffstoken abzurufen. [Widerrufen Sie ein Token](amazon-cognito-user-pools-using-the-refresh-token.md#amazon-cognito-identity-user-pools-revoking-all-tokens-for-user), um den Benutzerzugriff zu widerrufen, der durch Aktualisierungstoken zugelassen wird.

Amazon Cognito gibt Token als [base64url](https://datatracker.ietf.org/doc/html/rfc4648#section-5) -kodierte Zeichenfolgen aus. Sie können jede Amazon Cognito Cognito-ID oder jedes Zugriffstoken in Klartext-JSON `base64url` dekodieren. Amazon-Cognito-Refresh-Token sind verschlüsselt, für Benutzer und Administratoren von Benutzerpools undurchsichtig, und können nur von Ihrem Benutzerpool gelesen werden.

**Authentifizieren mit Tokens**  
Wenn sich ein Benutzer bei Ihrer App anmeldet, überprüft Amazon Cognito die Anmeldeinformationen. Nach erfolgreicher Anmeldung erstellt Amazon Cognito eine Sitzung und gibt ein ID-, Zugriffs- und Refresh-Token für den authentifizierten Benutzer zurück. Sie können die Token verwenden, um Ihren Benutzern Zugriff auf nachgelagerte Ressourcen APIs wie Amazon API Gateway zu gewähren. Alternativ können Sie diese gegen temporäre AWS -Anmeldeinformationen eintauschen, um auf andere AWS-Services zugreifen zu können.

![\[Authentifizierung – Übersicht\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-cup2.png)


**Speichern von Token**  
Ihre App muss Token unterschiedlicher Größe speichern können. Die Tokengröße kann sich unter anderem aus Gründen zusätzlicher Ansprüche, Änderungen der Kodierungsalgorithmen und Änderungen der Verschlüsselungsalgorithmen ändern. Wenn Sie den Token-Widerruf in Ihrem Benutzerpool aktivieren, fügt Amazon Cognito JSON Web Tokens zusätzliche Anforderungen hinzu und erhöht deren Größe. Die neuen Ansprüche `origin_jti` und `jti` werden zu Zugriffs- und ID-Token hinzugefügt. Weitere Informationen zum Widerrufen von Token finden Sie unter [Widerrufen von Token](https://docs.aws.amazon.com/cognito/latest/developerguide/token-revocation.html).

**Wichtig**  
Eine bewährte Methode ist, alle Token während der Übertragung und Speicherung im Kontext Ihrer Anwendung zu sichern. Token können persönlich identifizierende Informationen über Ihre Benutzer und Informationen über das Sicherheitsmodell enthalten, das Sie für Ihren Benutzerpool verwenden.

**Anpassen von Token**  
Sie können die Zugriffs- und ID-Token anpassen, die Amazon Cognito an Ihre App weitergibt. In einer [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md) können Sie Token-Ansprüche hinzufügen, ändern und unterdrücken. Der Trigger für Pre-Token-Generierung ist eine Lambda-Funktion, an die Amazon Cognito einen Standardsatz von Ansprüchen sendet. Zu den Ansprüchen gehören Bereiche der OAuth Version 2.0, Gruppenzugehörigkeit im Benutzerpool, Benutzerattribute und andere. Die Funktion kann dann die Gelegenheit nutzen, Änderungen zur Laufzeit vorzunehmen und die aktualisierten Token-Ansprüche an Amazon Cognito zurückzugeben.

Für die Anpassung des Zugriffs-Token bei Ereignissen der Version 2 fallen zusätzliche Kosten an. Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing/).

**Topics**
+ [Grundlegendes zum Identitätstoken (ID)](amazon-cognito-user-pools-using-the-id-token.md)
+ [Das Zugriffstoken verstehen](amazon-cognito-user-pools-using-the-access-token.md)
+ [Tokens aktualisieren](amazon-cognito-user-pools-using-the-refresh-token.md)
+ [Benutzersitzungen mit Token-Widerruf beenden](token-revocation.md)
+ [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md)
+ [Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens](amazon-cognito-user-pools-using-tokens-caching-tokens.md)

# Grundlegendes zum Identitätstoken (ID)
<a name="amazon-cognito-user-pools-using-the-id-token"></a>

Das ID-Token ist ein [JSON-Web-Token (JWT)](https://tools.ietf.org/html/rfc7519), das Anforderungen bezüglich der Identität des authentifizierten Benutzers enthält, beispielsweise `name`, `email` und `phone_number`. Sie können diese Identitätsinformationen in Ihrer Anwendung verwenden. Das ID-Token kann ebenfalls verwendet werden, um Benutzer mithilfe Ihrer Ressourcenserver oder Serveranwendungen zu authentifizieren. Sie können auch ein ID-Token außerhalb der Anwendung mit Ihren Web-API-Operationen verwenden. In diesen Fällen müssen Sie die Signatur des ID-Tokens überprüfen, bevor Sie Ansprüchen innerhalb des ID-Tokens vertrauen können. Siehe [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). 

Sie können den Ablauf des ID-Tokens auf einen beliebigen Wert zwischen 5 Minuten und 1 Tag festlegen. Sie können diesen Wert pro App-Client festlegen.

**Wichtig**  
Wenn sich Ihr Benutzer mit verwaltetem Login anmeldet, setzt Amazon Cognito Sitzungscookies, die 1 Stunde lang gültig sind. Wenn Sie die verwaltete Anmeldung für die Authentifizierung in Ihrer Anwendung verwenden und eine Mindestdauer von weniger als 1 Stunde für Ihre Zugriffs- und ID-Token angeben, haben Ihre Benutzer weiterhin eine gültige Sitzung, bis das Cookie abläuft. Wenn der Benutzer Token hat, die in der einstündigen Sitzung ablaufen, kann der Benutzer seine Token aktualisieren, ohne sich erneut authentifizieren zu müssen.

## ID-Token-Header
<a name="user-pool-id-token-header"></a>

Der Header enthält zwei verschiedene Informationen: die Schlüssel-ID (`kid`) und den Algorithmus (`alg`).

```
{
"kid" : "1234example=",
"alg" : "RS256"
}
```

**`kid`**  
Die Schlüssel-ID. Ihr Wert ist ein Hinweis darauf, welcher Schlüssel verwendet wurde, um die JSON-Websignatur (JWS) des Tokens zu sichern. Sie können Ihren Benutzerpool-Signaturschlüssel IDs am `jwks_uri` Endpunkt einsehen.  
Weitere Informationen über den `kid`-Parameter finden Sie unter dem [Schlüssel-ID-(kid)-Header-Parameter](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.5).

**`alg`**  
Der kryptografische Algorithmus, mit dem Amazon Cognito das Zugriffstoken sichert. Benutzerpools verwenden einen RS256 kryptografischen Algorithmus, bei dem es sich um eine RSA-Signatur mit SHA-256 handelt.  
Weitere Informationen über den `alg`-Parameter finden Sie unter dem [Algorithmus-(alg)-Header-Parameter](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.4).

## Standard-Payload für ID-Token
<a name="user-pool-id-token-payload"></a>

Dies ist ein Beispiel für eine Payload aus einem ID-Token. Es enthält Ansprüche bezüglich des authentifizierten Benutzers. Weitere Informationen zu OpenID Connect (OIDC) -Standardansprüchen finden Sie in der Liste der [OIDC-Standardansprüche](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Sie können Ansprüche Ihres eigenen Designs mit einem hinzufügen. [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md)

```
<header>.{
    "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "cognito:groups": [
        "test-group-a",
        "test-group-b",
        "test-group-c"
    ],
    "email_verified": true,
    "cognito:preferred_role": "arn:aws:iam::111122223333:role/my-test-role",
    "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example",
    "cognito:username": "my-test-user",
    "middle_name": "Jane",
    "nonce": "abcdefg",
    "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "cognito:roles": [
        "arn:aws:iam::111122223333:role/my-test-role"
    ],
    "aud": "xxxxxxxxxxxxexample",
    "identities": [
        {
            "userId": "amzn1.account.EXAMPLE",
            "providerName": "LoginWithAmazon",
            "providerType": "LoginWithAmazon",
            "issuer": null,
            "primary": "true",
            "dateCreated": "1642699117273"
        }
    ],
    "event_id": "64f513be-32db-42b0-b78e-b02127b4f463",
    "token_use": "id",
    "auth_time": 1676312777,
    "exp": 1676316377,
    "iat": 1676312777,
    "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "email": "my-test-user@example.com"
}
.<token signature>
```

**`sub`**  
Eine eindeutige Kennung ([UUID](cognito-terms.md#terms-uuid)) oder ein Betreff für den authentifizierten Benutzer. Möglicherweise ist der Benutzername in Ihrem Benutzerpool nicht eindeutig. Der `sub`-Anspruch ist der beste Weg, um einen bestimmten Benutzer zu identifizieren.

**`cognito:groups`**  
Ein Array mit den Namen von Benutzerpoolgruppen, zu denen Ihr Benutzer gehört. Gruppen können eine Kennung sein, die Sie Ihrer App präsentieren, oder sie können eine Anfrage für eine bevorzugte IAM-Rolle aus einem Identitätspool generieren.

**`cognito:preferred_role`**  
Der ARN der IAM-Rolle, die Sie der Benutzerpoolgruppe mit der höchsten Priorität Ihres Benutzers zugeordnet haben. Weitere Informationen darüber, wie Ihr Benutzerpool diesen Rollenanspruch auswählt, finden Sie unter [Zuweisen von Prioritätswerten zu Gruppen](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups).

**`iss`**  
Der Identitätsanbieter, der das Token ausgegeben hat. Der Anspruch hat das folgende Format:  
`https://cognito-idp.<Region>.amazonaws.com/<your user pool ID>`

**`cognito:username`**  
Der Benutzername Ihres Benutzers in Ihrem Benutzerpool.

**`nonce`**  
Der `nonce` Anspruch stammt aus einem gleichnamigen Parameter, den Sie zu Anfragen an Ihren OAuth 2.0-Endpunkt hinzufügen können. `authorize` Wenn Sie den Parameter hinzufügen, wird der `nonce`-Anspruch in das ID-Token eingeschlossen, das Amazon Cognito ausgibt, und Sie können ihn zum Schutz vor Wiederholungsangriffen verwenden. Wenn Sie in Ihrer Anfrage keinen `nonce`-Wert angeben, generiert und validiert Amazon Cognito automatisch eine Nonce, wenn Sie sich über eine Drittanbieter-Identität authentifizieren, und fügt sie dann als `nonce`-Anspruch zum ID-Token hinzu. Die Implementierung des `nonce`-Anspruchs in Amazon Cognito basiert auf [OIDC-Standards](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation).

**`origin_jti`**  
Eine Token-Widerrufs-ID, die dem Aktualisierungstoken Ihres Benutzers zugeordnet ist. Amazon Cognito verweist auf den `origin_jti` Anspruch, wenn geprüft wird, ob Sie das Token Ihres Benutzers mit der [Widerrufen des Endpunkts](revocation-endpoint.md) oder der [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API-Operation gesperrt haben. Wenn Sie ein Token widerrufen, macht Amazon Cognito alle Zugriffs- und ID-Token mit demselben `origin_jti`-Wert ungültig.

**`cognito:roles`**  
Ein Array mit den Namen der IAM-Rollen, die den Gruppen Ihres Benutzers zugeordnet sind. Jeder Benutzerpoolgruppe kann eine einzelne IAM-Rolle zugeordnet werden. Dieses Array stellt alle IAM-Rollen für die Gruppen Ihrer Benutzer dar, unabhängig von ihrer Rangfolge. Weitere Informationen finden Sie unter [Hinzufügen von Gruppen zu einem Benutzerpool](cognito-user-pools-user-groups.md).

**`aud`**  
Der Benutzerpool-App-Client, der Ihren Benutzer authentifiziert hat. Amazon Cognito gibt den gleichen Wert im Zugriffstoken-Anspruch `client_id` wieder.

**`identities`**  
Der Inhalt des Benutzerattributs `identities`. Das Attribut enthält Informationen über jedes Profil eines externen Identitätsanbieters, das Sie mit einem Benutzer verknüpft haben, entweder durch Verbundanmeldung oder durch [Verknüpfen eines Verbundbenutzers mit einem lokalen Profil](cognito-user-pools-identity-federation-consolidate-users.md). Diese Informationen enthalten ihren Anbieternamen, ihre eindeutige Anbieter-ID und andere Metadaten.

**`token_use`**  
Der vorgesehene Zweck des Tokens. In einem ID-Token ist der Wert `id`.

**`auth_time`**  
Der Authentifizierungszeitpunkt im Unix-Zeitformat, an dem Ihr Benutzer die Authentifizierung abgeschlossen hat.

**`exp`**  
Der Ablaufzeitpunkt im Unix-Zeitformat, an dem das Token Ihres Benutzers abläuft.

**`iat`**  
Der Zeitpunkt, an dem Amazon Cognito das Token Ihres Benutzers ausgegeben hat, im Unix-Zeitformat.

**`jti`**  
Die eindeutige Kennung des JWT.

Das ID-Token kann OIDC-Standardansprüche enthalten, die in [OIDC-Standardansprüchen](https://openid.net/specs/openid-connect-core-1_0.html#Claims) definiert sind. Das ID-Token kann auch benutzerdefinierte Attribute enthalten, die Sie in Ihrem Benutzerpool definieren. Amazon Cognito schreibt benutzerdefinierte Attributwerte unabhängig vom Attributtyp als Strings in das ID-Token.

**Anmerkung**  
Den benutzerdefinierten Attributen des Benutzerpools wird immer ein Präfix vorangestellt. `custom:` 

## ID-Token-Signatur
<a name="user-pool-id-token-signature"></a>

Die Signatur des ID-Tokens wird basierend auf dem Header und der Nutzlast des JWT-Tokens berechnet. Bevor Sie die Ansprüche in einem von Ihrer App empfangenen ID-Token akzeptieren, überprüfen Sie die Signatur des Tokens. Weitere Informationen finden Sie unter Verifizieren eines JSON-Webtokens. [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).

# Das Zugriffstoken verstehen
<a name="amazon-cognito-user-pools-using-the-access-token"></a>

Das Zugriffstoken für Benutzerpools enthält Ansprüche zum authentifizierten Benutzer, eine Liste mit den Gruppen des Benutzers und eine Liste mit Bereichen. Der primäre Zweck des Zugriffstokens ist die Autorisierung von API-Operationen. Ihr Benutzerpool akzeptiert Zugriffstokens, um Self-Service-Operationen für Benutzer zu autorisieren. Beispielsweise können Sie das Zugriffstoken verwenden, um Ihrem Benutzer Zugriff zu erteilen, um Benutzerattribute hinzuzufügen, zu ändern oder zu löschen.

Mit [OAuth 2.0-Bereichen](https://www.rfc-editor.org/rfc/rfc6749#section-3.3) in einem Zugriffstoken, das von den benutzerdefinierten Bereichen abgeleitet wird, die Sie Ihrem Benutzerpool hinzufügen, können Sie Ihren Benutzer autorisieren, Informationen von einer API abzurufen. Beispielsweise unterstützt Amazon API Gateway die Autorisierung mit Amazon-Cognito-Zugriffstokens. Sie können einen REST-API-Autorisierer mit Informationen aus Ihrem Benutzerpool befüllen oder Amazon Cognito als JSON-Web-Token-Autorisierer (JWT) für eine HTTP-API verwenden. Um ein Zugriffstoken mit benutzerdefinierten Bereichen zu generieren, müssen Sie es über die [öffentlichen Endpunkte](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) Ihres Benutzerpools anfordern.

Mit dem [Feature-Plan](cognito-sign-in-feature-plans.md) Essentials oder Plus können Sie auch einen Lambda-Trigger vor der Token-Generierung implementieren, der Ihren Zugriffstoken zur Laufzeit Bereiche hinzufügt. Weitere Informationen finden Sie unter [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md).

Das Zugriffstoken eines Benutzers mit dem `openid` Gültigkeitsbereich ist die Erlaubnis, weitere Informationen zu den Attributen Ihres Benutzers von der anzufordern. [UserInfo-Endpunkt](userinfo-endpoint.md) Die Menge der Informationen vom `userInfo` Endpunkt ergibt sich aus den zusätzlichen Bereichen im Zugriffstoken: zum Beispiel `profile` für alle Benutzerdaten, `email` für deren E-Mail-Adresse. 

Das Zugriffstoken eines Benutzers mit dem `aws.cognito.signin.user.admin` Gültigkeitsbereich ist die Erlaubnis, Benutzerattribute zu lesen und zu schreiben, Authentifizierungsfaktoren aufzulisten, Einstellungen für die Multi-Faktor-Authentifizierung (MFA) zu konfigurieren und gespeicherte Geräte zu verwalten. Die Zugriffsebene auf Attribute, die Ihr Zugriffstoken für diesen Bereich gewährt, entspricht den read/write Attributberechtigungen, die Sie Ihrem App-Client zuweisen.

Das Zugriffstoken ist ein [JSON Web Token (JWT)](https://www.rfc-editor.org/rfc/rfc7519). Der Header für das Zugriffstoken hat die gleiche Struktur wie das ID-Token. Amazon Cognito signiert Zugriffstokens mit einem anderen Schlüssel als dem Schlüssel, der ID-Tokens signiert. Der Wert eines Zugriffsschlüssel-ID-Anspruchs (`kid`) entspricht nicht dem Wert des `kid`-Anspruchs in einem ID-Token aus derselben Benutzersitzung. Verifizieren Sie in Ihrem App-Code unabhängig voneinander ID-Tokens und Zugriffstokens. Vertrauen Sie den Ansprüchen in einem Zugriffstoken erst, wenn Sie die Signatur verifiziert haben. Weitere Informationen finden Sie unter [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). Sie können den Ablauf des Zugriffstokens auf einen beliebigen Wert zwischen 5 Minuten und 1 Tag festlegen. Sie können diesen Wert pro App-Client festlegen.

**Wichtig**  
Geben Sie für Zugriffs- und ID-Tokens nicht ein Minimum von weniger als einer Stunde an, wenn Sie die verwaltete Anmeldung verwenden. Bei der verwalteten Anmeldung werden Browser-Cookies gesetzt, die eine Stunde lang gültig sind. Wenn Sie eine Dauer des Zugriffstokens von weniger als einer Stunde konfigurieren, hat dies keine Auswirkungen auf die Gültigkeit des verwalteten Anmelde-Cookies und die Fähigkeit der Benutzer, sich nach der ersten Anmeldung eine Stunde lang ohne zusätzliche Anmeldeinformationen erneut zu authentifizieren.

## Zugriffstoken-Header
<a name="user-pool-access-token-header"></a>

Der Header enthält zwei verschiedene Informationen: die Schlüssel-ID (`kid`) und den Algorithmus (`alg`).

```
{
"kid" : "1234example="
"alg" : "RS256",
}
```

**`kid`**  
Die Schlüssel-ID. Ihr Wert ist ein Hinweis darauf, welcher Schlüssel verwendet wurde, um die JSON-Websignatur (JWS) des Tokens zu sichern. Sie können Ihren Benutzerpool-Signaturschlüssel IDs am Endpunkt einsehen. `jwks_uri`  
Weitere Informationen über den `kid`-Parameter finden Sie unter dem [Schlüssel-ID-(kid)-Header-Parameter](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.5).

**`alg`**  
Der kryptografische Algorithmus, mit dem Amazon Cognito das Zugriffstoken sichert. Benutzerpools verwenden einen RS256 kryptografischen Algorithmus, bei dem es sich um eine RSA-Signatur mit SHA-256 handelt.  
Weitere Informationen über den `alg`-Parameter finden Sie unter dem [Algorithmus-(alg)-Header-Parameter](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.4).

## Standard-Payload für Zugriffstoken
<a name="user-pool-access-token-payload"></a>

Dies ist eine Beispielnutzlast eines Zugriffstokens. Weitere Informationen finden Sie unter [JWT-Ansprüche](https://tools.ietf.org/html/rfc7519#section-4). Sie können Ansprüche Ihres eigenen Designs mit einem [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md) hinzufügen.

```
<header>.
{
   "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "cognito:groups":[
      "testgroup"
   ],
   "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example",
   "version":2,
   "client_id":"xxxxxxxxxxxxexample",
   "aud": "https://api.example.com",
   "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "token_use":"access",
   "scope":"phone openid profile resourceserver.1/appclient2 email",
   "auth_time":1676313851,
   "exp":1676317451,
   "iat":1676313851,
   "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "username":"my-test-user"
}
.<token signature>
```

**`sub`**  
Eine eindeutige Kennung ([UUID](cognito-terms.md#terms-uuid)) oder ein Betreff für den authentifizierten Benutzer. Möglicherweise ist der Benutzername in Ihrem Benutzerpool nicht eindeutig. Der `sub`-Anspruch ist der beste Weg, um einen bestimmten Benutzer zu identifizieren.

**`cognito:groups`**  
Ein Array mit den Namen von Benutzerpoolgruppen, zu denen Ihr Benutzer gehört.

**`iss`**  
Der Identitätsanbieter, der das Token ausgegeben hat. Der Anspruch hat das folgende Format:  
`https://cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE`

**`client_id`**  
Der Benutzerpool-App-Client, der Ihren Benutzer authentifiziert hat. Amazon Cognito gibt den gleichen Wert im ID-Token-Anspruch `aud` wieder.

**aud**  
Die URL der API, für die das Zugriffstoken autorisieren soll. Nur vorhanden, wenn Ihre Anwendung eine [Ressourcenbindung](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding) von Ihrem Autorisierungsserver angefordert hat.

**`origin_jti`**  
Eine Token-Widerrufs-ID, die dem Aktualisierungstoken Ihres Benutzers zugeordnet ist. Amazon Cognito verweist auf den `origin_jti` Anspruch, wenn geprüft wird, ob Sie das Token Ihres Benutzers mit der [Widerrufen des Endpunkts](revocation-endpoint.md) oder der [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API-Operation gesperrt haben. Wenn Sie ein Token widerrufen, validiert Amazon Cognito keine Zugriffs- und ID-Tokens mehr mit demselben `origin_jti` Wert.

**`token_use`**  
Der vorgesehene Zweck des Tokens. In einem Zugriffstoken ist der Wert `access`.

**`scope`**  
Eine Liste von OAuth 2.0-Bereichen, die für den angemeldeten Benutzer ausgestellt wurde. Bereiche definieren den Zugriff, den das Token auf externe APIs Self-Service-Operationen für Benutzer und Benutzerdaten auf dem Endpunkt gewährt. `userInfo` Ein Token aus dem [Token-Endpunkt](token-endpoint.md) kann alle Bereiche enthalten, die Ihr App-Client unterstützt. Ein Token aus der API-Anmeldung in Amazon Cognito enthält nur den Bereich `aws.cognito.signin.user.admin`.

**`auth_time`**  
Der Authentifizierungszeitpunkt im Unix-Zeitformat, an dem Ihr Benutzer die Authentifizierung abgeschlossen hat.

**`exp`**  
Der Ablaufzeitpunkt im Unix-Zeitformat, an dem das Token Ihres Benutzers abläuft.

**`iat`**  
Der Zeitpunkt, an dem Amazon Cognito das Token Ihres Benutzers ausgegeben hat, im Unix-Zeitformat.

**`jti`**  
Die eindeutige Kennung des JWT.

**`username`**  
Der Benutzername des Benutzers im Benutzerpool.

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

## Zugriffstoken-Signatur
<a name="user-pool-access-token-signature"></a>

Die Signatur des Zugriffstokens, signiert mit dem am `.well-known/jwks.json` Endpunkt angekündigten Schlüssel, bestätigt die Integrität des Token-Headers und der Nutzlast. Wenn Sie Zugriffstoken verwenden, um den Zugriff auf externe Daten zu autorisieren, konfigurieren Sie Ihren API-Autorisierer immer so APIs, dass er diese Signatur anhand des Schlüssels verifiziert, mit dem sie signiert wurde. Weitere Informationen finden Sie unter [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).

# Tokens aktualisieren
<a name="amazon-cognito-user-pools-using-the-refresh-token"></a>

Sie können das Aktualisierungstoken verwenden, um neue ID- und Zugriffstoken abzurufen. Standardmäßig läuft das Aktualisierungstoken 30 Tage, nachdem sich Ihr Anwendungs-Benutzer an Ihrem Benutzerpool angemeldet hat, ab. Wenn Sie eine Anwendung für Ihren Benutzerpool erstellen, können Sie den Ablauf des Aktualisierungstokens der Anwendung auf einen beliebigen Wert zwischen 60 Minuten und 10 Jahren setzen. 

## Abrufen neuer Zugriffs- und Identitätstoken mit einem Aktualisierungstoken
<a name="amazon-cognito-user-pools-using-the-refresh-token_initiate-token"></a>

Amazon Cognito gibt Aktualisierungstoken als Reaktion auf eine erfolgreiche Authentifizierung mit dem verwalteten Anmeldeautorisierungscode-Flow und mit API-Operationen oder SDK-Methoden aus. Das Aktualisierungstoken gibt neue ID- und Zugriffstoken sowie optional ein neues Aktualisierungstoken zurück. Sie können Aktualisierungstoken auf folgende Weise verwenden.

**GetTokensFromRefreshToken**  
Der [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API-Vorgang gibt neue ID- und Zugriffstoken aus einem gültigen Aktualisierungstoken aus. Sie erhalten auch ein neues Aktualisierungstoken, wenn Sie die Rotation des Aktualisierungstokens aktiviert haben.

**InitiateAuth und AdminitiateAuth**  
Die [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)oder [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Operationen beinhalten den `REFRESH_TOKEN_AUTH` Authentifizierungsablauf. In diesem Ablauf übergeben Sie ein Aktualisierungstoken und erhalten neue ID- und Zugriffstoken. Sie können sich nicht mit `REFRESH_TOKEN_AUTH` In-App-Clients authentifizieren, wenn die [Rotation des Aktualisierungstokens](#using-the-refresh-token-rotation) aktiviert ist.

**OAuth Token-Endpunkt**  
Der [Token-Endpunkt](token-endpoint.md) in Benutzerpools mit einer [Domäne](cognito-user-pools-assign-domain.md) hat einen `refresh_token` Grant-Typ, der neue ID-, Zugriffs- und optional (bei [Rotation des Aktualisierungstokens) Aktualisierungstoken](#using-the-refresh-token-rotation) von einem gültigen Aktualisierungstoken ausgibt.

## Token-Rotation aktualisieren
<a name="using-the-refresh-token-rotation"></a>

Sie können optional die Rotation des Aktualisierungstokens in Ihrem App-Client konfigurieren. Mit der Rotation des Aktualisierungstokens kann Ihr Client das ursprüngliche Aktualisierungstoken für ungültig erklären und bei jeder Token-Aktualisierung ein neues Aktualisierungstoken ausgeben. Wenn diese Einstellung aktiviert ist, gibt jede erfolgreiche Anforderung in allen Formen der Token-Aktualisierung eine neue ID, einen neuen Zugriff *und* ein neues Aktualisierungstoken zurück. Wenn diese Einstellung deaktiviert ist, geben Token-Aktualisierungsanforderungen nur neue Zugriffs- und ID-Token zurück, und das ursprüngliche Aktualisierungstoken bleibt gültig. Das neue Aktualisierungstoken ist für die verbleibende Dauer des ursprünglichen Aktualisierungstokens gültig. Sie können [App-Clients](user-pool-settings-client-apps.md) so konfigurieren, dass sie Aktualisierungstoken rotieren oder das ursprüngliche Aktualisierungstoken übernehmen. Um für kurze Zeit Wiederholungsversuche zu ermöglichen, können Sie auch eine Übergangszeit von bis zu 60 Sekunden für das ursprüngliche Aktualisierungstoken konfigurieren.

**Wissenswertes zur Rotation von Aktualisierungstoken**
+ Nachdem Sie die Rotation der Aktualisierungstoken aktiviert haben, werden neue Ansprüche in JSON-Webtoken aus Ihrem Benutzerpool hinzugefügt. Die `origin_jti`- und `jti`-Ansprüche werden zu Zugriffs- und ID-Token hinzugefügt. Diese Ansprüche erhöhen die Größe von JWTs.
+ Die Rotation des Aktualisierungstokens ist nicht mit dem Authentifizierungsablauf kompatibel`REFRESH_TOKEN_AUTH`. Um die Rotation von Aktualisierungstoken zu implementieren, müssen Sie diesen Authentifizierungsablauf in Ihrem App-Client deaktivieren und Ihre Anwendung so gestalten, dass Token-Aktualisierungsanforderungen mit dem [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API-Vorgang oder der entsprechenden SDK-Methode gesendet werden.
+ Wenn die Rotation des Aktualisierungstokens inaktiv ist, können Sie Token-Aktualisierungsanforderungen entweder mit oder abschließen. `GetTokensFromRefreshToken` `REFRESH_TOKEN_AUTH`
+ Wenn die [Geräteerinnerung](amazon-cognito-user-pools-device-tracking.md) in Ihrem Benutzerpool aktiv ist, müssen Sie den Geräteschlüssel in Anfragen angeben. `GetTokensFromRefreshToken` Wenn Ihr Benutzer keinen bestätigten Geräteschlüssel hat, den Ihre Anwendung in der ersten Authentifizierungsanfrage übermittelt, gibt Amazon Cognito einen neuen aus. Um Token in dieser Konfiguration zu aktualisieren, müssen Sie einen Geräteschlüssel angeben, unabhängig davon, ob Sie einen in der Authentifizierungsantwort angegeben `AuthParameters` oder einen neuen erhalten haben.
+ Sie können in Ihrer `GetTokensFromRefreshToken` Anfrage `ClientMetadata` an den Lambda-Trigger vor der Token-Generierung übergeben. Diese Daten, die an das Eingabeereignis für Ihren Trigger übergeben werden, liefern zusätzlichen Kontext, den Sie in der benutzerdefinierten Logik Ihrer Lambda-Funktion verwenden können.

Aus Sicherheitsgründen sollten Sie die Rotation der Aktualisierungstoken auf Ihren App-Clients aktivieren.

------
#### [ Enable refresh token rotation (console) ]

Mit dem folgenden Verfahren wird die Rotation des Aktualisierungstokens für Ihren App-Client ein- oder ausgeschaltet. Für dieses Verfahren ist ein vorhandener App-Client erforderlich. Weitere Informationen zum Erstellen eines App-Clients finden Sie unter[Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).

**Um die Rotation des Aktualisierungstokens**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Navigieren Sie zum Menü **App-Clients** und wählen Sie einen vorhandenen App-Client aus.

1. Wählen Sie auf der Seite im Bereich **App-Client-Informationen** die Option **Bearbeiten** aus.

1. Suchen Sie unter **Erweiterte Sicherheitskonfigurationen** nach der Option **Aktualisierungstoken-Rotation aktivieren**.

1. Um die Rotation zu aktivieren, aktivieren Sie das Kontrollkästchen. Um die Rotation zu deaktivieren, deaktivieren Sie das Kontrollkästchen.

1. Geben Sie unter **Kulanzzeitraum für die Rotation des Aktualisierungstokens** eine Anzahl von Sekunden (bis zu 60) ein, die Sie als Verzögerung festlegen möchten, bevor das rotierte Aktualisierungstoken gesperrt wird.

------
#### [ Enable refresh token rotation (API) ]

Konfigurieren Sie die Rotation des Aktualisierungstokens in einer [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)oder API-Anfrage [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html). Der folgende Teil der Anfrage aktiviert die Rotation des Aktualisierungstokens und legt die Kulanzzeit auf zehn Sekunden fest.

```
"RefreshTokenRotation" : {
   "Feature" : "ENABLED,
   "RetryGracePeriodSeconds" : 10
}
```

------

## Aktualisierung von API- und SDK-Tokens
<a name="using-the-refresh-token-api"></a>

Es gibt zwei Möglichkeiten, das Aktualisierungstoken zu verwenden, um neue IDs und Zugriffstoken mit der Benutzerpools-API abzurufen, je nachdem, ob die Rotation des Aktualisierungstokens aktiv ist. Verwenden Sie in App-Clients mit aktiver Aktualisierungstoken-Rotation den [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)API-Vorgang. Verwenden Sie in App-Clients ohne Aktualisierungstoken-Rotation den `REFRESH_TOKEN_AUTH` Ablauf der [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)oder [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Operationen.

**Anmerkung**  
Benutzer können sich mit Benutzerpools in [verwalteten Logins](cognito-user-pools-managed-login.md) oder in benutzerdefinierten Anwendungen, die Sie mit Amazon Cognito AWS SDKs API-Vorgängen erstellen, authentifizieren. Der `REFRESH_TOKEN_AUTH` Ablauf und beide `GetTokensFromRefreshToken` können die Token-Aktualisierung für verwaltete Login-Benutzer abschließen. Die Tokenaktualisierung in benutzerdefinierten Anwendungen hat keine Auswirkungen auf verwaltete Anmeldesitzungen. Diese Sitzungen werden in einem Browser-Cookie gespeichert und sind eine Stunde lang gültig. Die `GetTokensFromRefreshToken` Antwort gibt neue ID-, Zugriffs- und optionale Aktualisierungstoken aus, erneuert jedoch nicht das verwaltete Anmeldesitzungscookie.  
`REFRESH_TOKEN_AUTH`ist in App-Clients mit aktivierter Aktualisierungstoken-Rotation nicht verfügbar.

------
#### [ GetTokensFromRefreshToken ]

[GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)gibt neue ID-, Zugriffs- und Aktualisierungstoken aus einer Anfrage zurück, die Sie mit einem Aktualisierungstoken autorisieren. Im Folgenden finden Sie ein Beispiel für einen Anfragetext für`GetTokensFromRefreshToken`. In Anfragen für diesen Vorgang können Sie Client-Metadaten an Lambda-Trigger senden.

```
{
    "RefreshToken": "eyJjd123abcEXAMPLE",
    "ClientId": "1example23456789",
    "ClientSecret": "myappclientsecret123abc",
    "ClientMetadata": { 
      "MyMetadataKey" : "MyMetadataValue" 
   },
}
```

------
#### [ AdminInitiateAuth/InitiateAuth ]

Um das Aktualisierungstoken zu verwenden, wenn die Aktualisierungstoken-Rotation inaktiv ist, verwenden Sie die [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Operationen [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)oder. Übergeben Sie `REFRESH_TOKEN_AUTH` für den `AuthFlow`-Parameter. Übergeben Sie das Aktualisierungstoken des Benutzers in der `AuthFlow`-Eigenschaft `AuthParameters` als Wert von `"REFRESH_TOKEN"`. Amazon Cognito gibt neue ID- und Zugriffstoken zurück, nachdem Ihre API-Anfrage alle Herausforderungen bestanden hat.

Im Folgenden finden Sie ein Beispiel für einen Anforderungstext für eine Token-Aktualisierung mit der `AdminInitiateAuth` API `InitiateAuth` oder.

```
{
    "AuthFlow": "REFRESH_TOKEN_AUTH",
    "ClientId": "1example23456789",
    "UserPoolId": "us-west-2_EXAMPLE",
    "AuthParameters": {
        "REFRESH_TOKEN": "eyJjd123abcEXAMPLE",
        "SECRET_HASH": "kT5acwCVrbD6JexhW3EQwnRSe6fLuPTRkEQ50athqv8="
    }
}
```

------

## OAuth Token-Aktualisierung
<a name="using-the-refresh-token-oauth"></a>

Sie können Aktualisierungstoken auch an den [Token-Endpunkt](token-endpoint.md) in einem Benutzerpool übermitteln, in dem Sie eine Domain konfiguriert haben. Fügen Sie in den Anfragetext den `grant_type`-Wert `refresh_token` und den `refresh_token`-Wert des Aktualisierungstokens des Benutzers ein.

Anfragen an den Token-Endpunkt sind in App-Clients mit aktiver Aktualisierungstoken-Rotation und solchen, bei denen sie inaktiv ist, verfügbar. Wenn die Aktualisierungstoken-Rotation aktiv ist, gibt der Token-Endpunkt ein neues Aktualisierungstoken zurück.

Im Folgenden finden Sie eine Beispielanforderung mit einem Aktualisierungstoken.

```
POST /oauth2/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Length: **

client_id=1example23456789&grant_type=refresh_token&refresh_token=eyJjd123abcEXAMPLE
```

## Widerrufen von Aktualisierungstokens
<a name="amazon-cognito-identity-user-pools-revoking-all-tokens-for-user"></a>

Sie können Aktualisierungstokens widerrufen, die einem Benutzer gehören. Weitere Informationen über Token finden Sie unter [Benutzersitzungen mit Token-Widerruf beenden](token-revocation.md). 

**Anmerkung**  
Durch das Widerrufen des Aktualisierungstokens werden alle ID- und Zugriffstoken widerrufen, die Amazon Cognito aus Aktualisierungsanfragen mit diesem Token ausgestellt hat.

Um Benutzer von allen aktuell angemeldeten Sitzungen abzumelden, widerrufen Sie alle ihre Token mit [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html)oder [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html)API-Anfragen. Die Abmeldung eines Benutzers hat folgende Auswirkungen.
+ Mit dem Aktualisierungstoken des Benutzers können keine neuen Token für den Benutzer abgerufen werden.
+ Mit dem Zugriffstoken des Benutzers können keine über Token autorisierte API-Anforderungen gesendet werden.
+ Der Benutzer muss sich erneut authentifizieren, um neue Tokens zu erhalten. Da Cookies für verwaltete Anmeldesitzungen nicht automatisch ablaufen, kann sich Ihr Benutzer mit einem Sitzungscookie erneut authentifizieren, ohne dass zusätzliche Anmeldeinformationen angefordert werden müssen. Nachdem Sie Ihre verwalteten Anmeldebenutzer abgemeldet haben, leiten Sie sie zu dem weiter[Logout-Endpunkt](logout-endpoint.md), wo Amazon Cognito ihr Sitzungscookie löscht.

Mit Aktualisierungstoken können Sie Benutzersitzungen in Ihrer App für eine lange Zeit aufrechterhalten. Im Laufe der Zeit möchten Ihre Benutzer möglicherweise einige Anwendungen deautorisieren, bei denen sie mit ihren Aktualisierungstoken angemeldet geblieben sind. Um Ihren Benutzer von einer einzelnen Sitzung abzumelden, widerrufen Sie sein Aktualisierungstoken. Wenn sich Ihr Benutzer von allen authentifizierten Sitzungen abmelden möchte, generieren Sie eine [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html)API-Anfrage. Ihre App kann dem Benutzer eine Auswahl wie **Von allen Geräten abmelden** bieten. `GlobalSignOut` akzeptiert das gültige – unveränderte, nicht abgelaufene, nicht widerrufene – Zugriffstoken eines Benutzers. Da diese API über Token autorisiert ist, können Benutzer sie nicht verwenden, um die Abmeldung für andere Benutzer zu initiieren.

Sie können jedoch eine [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html)API-Anfrage generieren, die Sie mit Ihren AWS Anmeldeinformationen autorisieren, um jeden Benutzer von all seinen Geräten abzumelden. Die Administratoranwendung muss diesen API-Vorgang mit AWS Entwickleranmeldedaten aufrufen und die Benutzerpool-ID und den Benutzernamen des Benutzers als Parameter übergeben. Die `AdminUserGlobalSignOut`-API kann alle Benutzer vom Benutzerpool abmelden.

Weitere Informationen zu Anfragen, die Sie entweder mit AWS Anmeldeinformationen oder dem Zugriffstoken eines Benutzers autorisieren können, finden Sie unter[Liste der API-Operationen, gruppiert nach Autorisierungsmodell](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

# Benutzersitzungen mit Token-Widerruf beenden
<a name="token-revocation"></a>

Sie können Aktualisierungstoken und Endbenutzersitzungen mit den folgenden Methoden widerrufen. Wenn Sie ein Aktualisierungstoken widerrufen, werden alle Zugriffstoken, die zuvor von diesem Aktualisierungstoken ausgegeben wurden, ungültig. Die anderen Aktualisierungstoken, die an den Benutzer ausgegeben wurden, sind nicht betroffen.

**RevokeToken Betrieb**  
[RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)widerruft alle Zugriffstoken für ein bestimmtes Aktualisierungstoken, einschließlich des ersten Zugriffstokens bei der interaktiven Anmeldung. Dieser Vorgang hat keine Auswirkungen auf die anderen Aktualisierungstoken des Benutzers oder auf die ID- und Zugriffstoken, die diesen anderen Aktualisierungstoken untergeordnet sind.

**Endpunkt der Sperrung**  
Der [Widerrufsendpunkt widerruft](revocation-endpoint.md) ein bestimmtes Aktualisierungstoken und alle ID- und Zugriffstoken, die das Aktualisierungstoken generiert hat. Dieser Endpunkt widerruft auch das anfängliche Zugriffstoken für die interaktive Anmeldung. Anfragen an diesen Endpunkt wirken sich weder auf die anderen Aktualisierungstoken des Benutzers noch auf die ID- und Zugriffstoken aus, die diesen anderen Aktualisierungstoken untergeordnet sind.

**GlobalSignOut Betrieb**  
[GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html)ist ein Self-Service-Vorgang, den ein Benutzer mit seinem Zugriffstoken autorisiert. Dieser Vorgang widerruft alle Aktualisierungs-, ID- und Zugriffstoken des anfragenden Benutzers.

**AdminUserGlobalSignOut Vorgang**  
[AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html)ist ein serverseitiger Vorgang, den ein Administrator mit IAM-Anmeldeinformationen autorisiert. Dieser Vorgang widerruft alle Aktualisierungs-, ID- und Zugriffstoken des Zielbenutzers.

**Wissenswertes über den Widerruf von Token**
+ Ihre Widerrufsanforderung für ein Aktualisierungstoken muss dieselbe Client-ID beinhalten, die zum Abrufen des Tokens verwendet wurde.
+ Der Benutzerpool ist JWTs eigenständig und verfügt über eine Signatur und eine Ablaufzeit, die bei der Erstellung des Tokens zugewiesen wurden. Widerrufene Token können nicht mit Amazon-Cognito-API-Aufrufen verwendet werden, die ein Token erfordern. Widerrufene Token sind jedoch weiterhin gültig, wenn sie mit einer beliebigen JWT-Bibliothek verifiziert werden, die die Signatur und den Ablauf des Tokens verifiziert.
+ Wenn Sie einen neuen Benutzerpool-Client erstellen, ist der Tokenwiderruf standardmäßig aktiviert.
+ Sie können Aktualisierungstoken nur in App-Clients widerrufen, bei denen der Token-Widerruf aktiviert ist. 
+ Nachdem Sie den Token-Widerruf aktiviert haben, werden neue Anforderungen in den JSON-Web-Tokens von Amazon Cognito hinzugefügt. Die `origin_jti`- und `jti`-Ansprüche werden zu Zugriffs- und ID-Token hinzugefügt. Diese Ansprüche erhöhen die Größe des Anwendungsclient-Zugriffs und ID-Tokens.
+ Wenn Sie den Token-Widerruf in einem App-Client deaktivieren, in dem er zuvor aktiviert war, werden widerrufene Token nicht wieder aktiv.
+ Wenn Sie [ein Benutzerkonto deaktivieren](how-to-manage-user-accounts.md#manage-user-accounts-enable-disable) (wodurch Aktualisierungs- und Zugriffstoken gesperrt werden), werden die widerrufenen Token nicht aktiv, wenn Sie das Benutzerkonto erneut aktivieren.
+ Wenn Sie einen neuen Benutzerpool-Client mithilfe der AWS-Managementkonsole, der oder der AWS API erstellen AWS CLI, ist der Token-Widerruf standardmäßig aktiviert.

## Tokenwiderruf aktivieren
<a name="enable-token-revocation"></a>

Bevor Sie ein Token für einen vorhandenen Benutzerpool-Client widerrufen können, müssen Sie den Tokenwiderruf aktivieren. Sie können den Token-Widerruf für bestehende Benutzerpool-Clients mithilfe der API AWS CLI oder der AWS API aktivieren. Rufen Sie dazu den `aws cognito-idp describe-user-pool-client` CLI-Befehl oder die `DescribeUserPoolClient` API-Operation auf, um die aktuellen Einstellungen von Ihrem App-Client abzurufen. Dann rufen Sie den `aws cognito-idp update-user-pool-client` CLI-Befehl oder die `UpdateUserPoolClient` API-Operation auf. Fügen Sie die aktuellen Einstellungen von Ihrem App-Client hinzu und setzen Sie den Parameter `EnableTokenRevocation` auf `true`.

Um einen App-Client mit aktiviertem Token-Widerruf mit der Amazon Cognito Cognito-API oder einem AWS SDK zu erstellen oder zu ändern, fügen Sie den folgenden Parameter in Ihre [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)oder Ihre [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API-Anfrage ein.

```
"EnableTokenRevocation": true
```

Um den Token-Widerruf in der Amazon Cognito Cognito-Konsole zu konfigurieren, wählen Sie einen App-Client aus dem **App-Client-Menü** in Ihrem Benutzerpool aus. Klicken Sie in den **App-Client-Informationen** auf die Schaltfläche **Bearbeiten** und aktivieren oder deaktivieren Sie den Token-Widerruf unter **Erweiterte Konfiguration**.

## Widerrufen eines Token
<a name="revoke-tokens-api"></a>

Sie können ein Aktualisierungstoken mithilfe einer [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API-Anfrage widerrufen, beispielsweise mit dem `[aws cognito-idp revoke-token](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/revoke-token.html)` CLI-Befehl. Sie können Token auch mit dem [Widerrufen des Endpunkts](revocation-endpoint.md) widerrufen. Dieser Endpunkt ist verfügbar, nachdem Sie Ihrem Benutzerpool eine Domäne hinzugefügt haben. Sie können den Widerrufsendpunkt entweder auf einer von Amazon Cognito gehosteten Domäne oder auf Ihrer eigenen benutzerdefinierten Domäne verwenden.

Es folgt ein Beispiel für eine `RevokeToken`-API-Anforderung.

```
{
   "ClientId": "1example23456789",
   "ClientSecret": "abcdef123456789ghijklexample",
   "Token": "eyJjdHkiOiJKV1QiEXAMPLE"
}
```

Es folgt ein Beispiel für eine cURL-Anforderung an den Endpunkt `/oauth2/revoke` eines Benutzerpools mit einer benutzerdefinierten Domain.

```
curl --location 'auth.mydomain.com/oauth2/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic Base64Encode(client_id:client_secret)' \
--data-urlencode 'token=abcdef123456789ghijklexample' \
--data-urlencode 'client_id=1example23456789'
```

Die Operation `RevokeToken` und der Endpunkt `/oauth2/revoke` erfordern keine zusätzliche Autorisierung, es sei denn, Ihr App-Client verfügt über einen geheimen Client-Schlüssel.

# Überprüfung von JSON-Web-Tokens
<a name="amazon-cognito-user-pools-using-tokens-verifying-a-jwt"></a>

JSON-Webtoken (JWTs) können einfach dekodiert, gelesen und geändert werden. Ein modifiziertes Zugriffstoken birgt das Risiko einer Rechteeskalation. Ein modifiziertes ID-Token birgt das Risiko eines Identitätswechsels. Ihre Anwendung vertraut Ihrem Benutzerpool als Token-Aussteller, aber was ist, wenn ein Benutzer das Token während der Übertragung abfängt? Sie müssen sicherstellen, dass Ihre Anwendung dasselbe Token erhält, das Amazon Cognito ausgestellt hat.

Amazon Cognito gibt Token aus, die einige der Integritäts- und Vertraulichkeitsfunktionen der OpenID Connect (OIDC) -Spezifikation nutzen. Benutzerpool-Token geben anhand von Objekten wie der Ablaufzeit, dem Aussteller und der digitalen Signatur die Gültigkeit an. Die Signatur, das dritte und letzte Segment des durch `.` -getrennten JWT, ist die Schlüsselkomponente der Token-Validierung. Ein böswilliger Benutzer kann ein Token ändern, aber wenn Ihre Anwendung den öffentlichen Schlüssel abruft und die Signatur vergleicht, stimmt sie nicht überein. Jede Anwendung, die die OIDC-Authentifizierung verarbeitet JWTs , muss diesen Überprüfungsvorgang bei jeder Anmeldung durchführen.

Auf dieser Seite geben wir einige allgemeine und spezifische Empfehlungen zur Überprüfung von. JWTs Die Anwendungsentwicklung umfasst eine Vielzahl von Programmiersprachen und Plattformen. Da Amazon Cognito OIDC so nah an der öffentlichen Spezifikation implementiert, kann jede seriöse JWT-Bibliothek in der Entwicklungsumgebung Ihrer Wahl Ihre Überprüfungsanforderungen erfüllen.

Diese Schritte beschreiben die Verifizierung eines Benutzerpool-JSON-Web-Tokens (JWT).

**Topics**
+ [Voraussetzungen](#amazon-cognito-user-pools-using-tokens-prerequisites)
+ [Bestätigen Sie Token mit aws-jwt-verify](#amazon-cognito-user-pools-using-tokens-aws-jwt-verify)
+ [Tokens verstehen und überprüfen](#amazon-cognito-user-pools-using-tokens-manually-inspect)

## Voraussetzungen
<a name="amazon-cognito-user-pools-using-tokens-prerequisites"></a>

Ihre Bibliothek, Ihr SDK oder Ihr Software-Framework übernehmen möglicherweise bereits die Aufgaben in diesem Abschnitt. AWS SDKs Stellen Sie Tools für die Handhabung und Verwaltung von Amazon Cognito Cognito-Benutzerpool-Tokens in Ihrer App bereit. AWS Amplify beinhaltet Funktionen zum Abrufen und Aktualisieren von Amazon Cognito Cognito-Token.

Weitere Informationen finden Sie auf den folgenden Seiten.
+ [Integration der Amazon-Cognito-Authentifizierung und -Autorisierung mit Web- und mobilen Apps](cognito-integrate-apps.md)
+ [Codebeispiele für Amazon Cognito Identity Provider mit AWS SDKs](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html)
+ [Erweiterte Workflows](https://docs.amplify.aws/lib/auth/advanced/q/platform/js/#retrieve-jwt-tokens) im *Amplify Dev Center*

Viele Bibliotheken sind zum Decodieren und Verifizieren eines JSON Web Token (JWT) verfügbar. Wenn Sie Tokens für die serverseitige API-Verarbeitung manuell verarbeiten müssen, oder wenn Sie andere Programmiersprachen verwenden, können diese Bibliotheken hilfreich sein. Weitere Informationen finden Sie in der [Liste der OpenID Foundation mit Bibliotheken für die Arbeit mit JWT-Token](http://openid.net/developers/jwt/).

## Bestätigen Sie Token mit aws-jwt-verify
<a name="amazon-cognito-user-pools-using-tokens-aws-jwt-verify"></a>

 AWS Empfiehlt der [aws-jwt-verifyBibliothek](https://github.com/awslabs/aws-jwt-verify) in einer App von Node.js, die Parameter im Token zu validieren, das Ihr Benutzer an Ihre App übergibt. Mit `aws-jwt-verify` können Sie einen `CognitoJwtVerifier` mit den Anspruchswerten auffüllen, die Sie für einen oder mehrere Benutzerpools überprüfen möchten. Zu den Werten, die überprüft werden können, gehören, dass
+ die Zugangs- oder ID-Tokens nicht falsch formatiert oder abgelaufen sind und eine gültige Signatur haben;
+ die Zugriffstokens von den [korrekten Benutzerpools und App-Clients](https://github.com/awslabs/aws-jwt-verify#verifying-jwts-from-amazon-cognito) kommen;
+ Diese Zugriffstoken-Ansprüche enthalten die [richtigen OAuth 2.0-Bereiche](https://github.com/awslabs/aws-jwt-verify#checking-scope).
+ die Schlüssel, die Ihre Zugangs- und ID-Tokens signiert haben, mit [einem `kid`-Signaturschlüssel aus der *JWKS-URI* Ihrer Benutzerpools übereinstimmen](https://github.com/awslabs/aws-jwt-verify#the-jwks-cache).

  Die JWKS-URI enthält öffentliche Informationen über den privaten Schlüssel, mit dem das Token Ihres Benutzers signiert wurde. Die JWKS-URI für Ihren Benutzerpool finden Sie unter `https://cognito-idp.<Region>.amazonaws.com/<userPoolId>/.well-known/jwks.json`.

Weitere Informationen und Beispielcode, den Sie in einer Node.js -App oder einem AWS Lambda Authorizer verwenden können, finden Sie unter [https://github.com/awslabs/aws-jwt-verify](https://github.com/awslabs/aws-jwt-verify)weiter. GitHub

## Tokens verstehen und überprüfen
<a name="amazon-cognito-user-pools-using-tokens-manually-inspect"></a>

Bevor Sie die Tokeninspektion in Ihre App integrieren, sollten Sie sich überlegen, wie Amazon Cognito zusammenbaut JWTs. Rufen Sie Beispiel-Tokens aus Ihrem Benutzerpool ab. Dekodieren und untersuchen Sie diese im Detail, um ihre Eigenschaften zu verstehen, und legen Sie fest, was Sie wann überprüfen möchten. So können Sie beispielsweise in einem Szenario die Gruppenmitgliedschaft und in einem anderen Bereiche überprüfen.

In den folgenden Abschnitten wird ein Verfahren zur manuellen Überprüfung von Amazon Cognito JWTs beschrieben, während Sie Ihre App vorbereiten.

### Bestätigen der Struktur des JWT
<a name="amazon-cognito-user-pools-using-tokens-step-1"></a>

Ein JSON-Web-Token (JWT) enthält drei Abschnitte mit einem `.` (Punkt)-Zeichen dazwischen.

**Header**  
Die Schlüssel-ID, `kid`, und der RSA-Algorithmus, `alg`, mit denen Amazon Cognito das Token signiert hat. Amazon Cognito signiert Tokens mit einem `alg` von `RS256`. Dies `kid` ist ein gekürzter Verweis auf einen privaten 2048-Bit-RSA-Signaturschlüssel, der in Ihrem Benutzerpool gespeichert ist.

**Nutzlast**  
Token-Ansprüche. In einem ID-Token enthalten die Ansprüche Benutzerattribute und Informationen über den Benutzerpool, `iss`, und den App-Client, `aud`. In einem Zugriffstoken umfasst die Payload Bereiche, Gruppenmitgliedschaft, Ihren Benutzerpool als `iss` und Ihren App-Client als `client_id`.

**Signatur**  
Die Signatur ist nicht dekodierbar base64url wie Header und Payload. Es handelt sich RSA256 um einen Bezeichner, der aus einem Signaturschlüssel und Parametern abgeleitet wird und die Sie an Ihrer JWKS-URI beobachten können.

Der Header und die Nutzlast sind Base64URL-kodierte JSON-Dateien. Sie können sie anhand der Zeichen `eyJ` am Anfang erkennen, die zum Startzeichen `{` dekodiert werden. Wenn Ihr Benutzer Ihrer App ein base64url-codiertes JWT präsentiert und es nicht im Format ist`[JSON Header].[JSON Payload].[Signature]`, ist es kein gültiges Amazon Cognito Cognito-Token und Sie können es verwerfen.

Die folgende Beispielanwendung verifiziert Benutzerpool-Token mit. `aws-jwt-verify`

```
// cognito-verify.js
// Usage example: node cognito-verify.js eyJra789ghiEXAMPLE

const { CognitoJwtVerifier } = require('aws-jwt-verify');

// Replace with your Amazon Cognito user pool ID
const userPoolId = 'us-west-2_EXAMPLE';

async function verifyJWT(token) {
  try {
    const verifier = CognitoJwtVerifier.create({
      userPoolId,
      tokenUse: 'access', // or 'id' for ID tokens
      clientId: '1example23456789', // Optional, only if you need to verify the token audience
    });

    const payload = await verifier.verify(token);
    console.log('Decoded JWT:', payload);
  } catch (err) {
    console.error('Error verifying JWT:', err);
  }
}

// Example usage
if (process.argv.length < 3) {
  console.error('Please provide a JWT token as an argument.');
  process.exit(1);
}

const MyToken = process.argv[2];
verifyJWT(MyToken);
```

### Überprüfen des JWT
<a name="amazon-cognito-user-pools-using-tokens-step-2"></a>

Die JWT-Signatur ist eine gehashte Kombination aus Header und Nutzlast. Amazon Cognito generiert zwei Paare RSA-Kryptoschlüssel für jeden Benutzerpool. Ein privater Schlüssel signiert Zugriffstokens und der andere signiert ID-Tokens.

**Verifizieren der Signatur eines JWT-Tokens**

1. Dekodieren Sie das ID-Token.

   Die OpenID Foundation pflegt auch [eine Liste mit Bibliotheken für die Arbeit mit JWT-Token](http://openid.net/developers/jwt/).

   Sie können es auch verwenden AWS Lambda , um den Benutzerpool zu dekodieren. JWTs Weitere Informationen finden Sie unter [Amazon Cognito JWT-Token dekodieren und verifizieren](https://github.com/awslabs/aws-support-tools/tree/master/Cognito/decode-verify-jwt) mithilfe von. AWS Lambda

1. Vergleichen Sie die lokale Schlüssel-ID (`kid`) mit der öffentlichen `kid`.

   1. Laden Sie den entsprechenden JWK (JSON Web Key) für Ihren Benutzerpool herunter und speichern Sie ihn. Er ist als Teil eines JWKS (JSON Web Key Set) verfügbar. Sie können ihn finden, indem Sie die folgende `jwks_uri`-URI für Ihre Umgebung konstruieren:

      ```
      https://cognito-idp.<Region>.amazonaws.com/<userPoolId>/.well-known/jwks.json
      ```

      Weitere Informationen zu JWK- und JWK-Sets finden Sie unter [JSON Web Key (JWK)](https://tools.ietf.org/html/rfc7517).
**Anmerkung**  
Amazon Cognito rotiert möglicherweise die Signaturschlüssel in Ihrem Benutzerpool. Es hat sich bewährt, öffentliche Schlüssel in Ihrer App zwischenzuspeichern, indem Sie `kid` als Cache-Schlüssel verwenden und den Cache regelmäßig aktualisieren. Vergleichen Sie die `kid` in den Tokens, die Ihre App erhält, mit Ihrem Cache.  
Wenn Sie ein Token mit dem korrekten Aussteller, aber einer anderen `kid` erhalten, hat Amazon Cognito möglicherweise den Signaturschlüssel rotiert. Aktualisieren Sie den Cache von Ihrem Benutzerpool–`jwks_uri`-Endpunkt aus.

      Dies ist eine `jwks.json`-Beispieldatei:

      ```
      {
      	"keys": [{
      		"kid": "1234example=",
      		"alg": "RS256",
      		"kty": "RSA",
      		"e": "AQAB",
      		"n": "1234567890",
      		"use": "sig"
      	}, {
      		"kid": "5678example=",
      		"alg": "RS256",
      		"kty": "RSA",
      		"e": "AQAB",
      		"n": "987654321",
      		"use": "sig"
      	}]
      }
      ```  
**Schlüssel-ID (`kid`)**  
Der `kid`-Parameter ist ein Hinweis darauf, welcher Schlüssel verwendet wurde, um die JSON-Websignatur (JWS) des Tokens zu sichern.  
**Algorithmus (`alg`)**  
Der `alg`-Header-Parameter stellt den kryptografischen Algorithmus dar, mit dem das ID-Token gesichert wird. Benutzerpools verwenden einen RS256 kryptografischen Algorithmus, bei dem es sich um eine RSA-Signatur mit SHA-256 handelt. Weitere Informationen zu RSA finden Sie unter [RSA-Kryptografie](https://tools.ietf.org/html/rfc3447).   
**Schlüsseltyp (`kty`)**  
Der `kty`-Parameter identifiziert die kryptografischen Algorithmus-Familie, die mit dem Schlüssel verwendet wird, z. B. „RSA“ in diesem Beispiel.  
**RSA-Exponent (`e`)**  
Der `e`-Parameter enthält den Exponentenwert für den öffentlichen RSA-Schlüssel. Er wird als Base64URL-codierter Wert dargestellt. UInt  
**RSA-Modulo (`n`)**  
Der `n`-Parameter enthält den Modulo-Wert für den öffentlichen RSA-Schlüssel. Er wird als Base64Url -codierter Wert dargestellt. UInt  
**Verwenden von (`use`)**  
Der `use`-Parameter beschreibt die beabsichtigte Verwendung des öffentlichen Schlüssels. In diesem Beispiel stellt der `use`-Wert `sig` die Signatur dar.

   1. Durchsuchen Sie den öffentlichen JSON-Web-Schlüssel nach einer `kid` die mit der `kid` Ihres JWT übereinstimmt.

### Überprüfen der Ansprüche
<a name="amazon-cognito-user-pools-using-tokens-step-3"></a>

**Überprüfen der JWT-Ansprüche**

1. Stellen Sie mit einer der folgenden Methoden sicher, dass das Token nicht abgelaufen ist.

   1. Dekodieren Sie das Token und vergleichen Sie den `exp`-Anspruch mit der aktuellen Uhrzeit.

   1. Wenn Ihr Zugriffstoken einen `aws.cognito.signin.user.admin` Anspruch enthält, senden Sie eine Anfrage an eine API wie. [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) API-Anfragen, die Sie [mit einem Zugriffs-Token autorisieren](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html#user-pool-apis-auth-unauth), geben einen Fehler zurück, wenn Ihr Token abgelaufen ist.

   1. Präsentieren Sie Ihr Zugriffs-Token in einer Anfrage an den [UserInfo-Endpunkt](userinfo-endpoint.md). Ihre Anfrage gibt einen Fehler zurück, wenn Ihr Token abgelaufen ist.

1. Der `aud`-Anspruch in einem ID-Token und der `client_id`-Anspruch in einem Zugriffstoken müssen mit der App-Client-ID übereinstimmen, die im Amazon-Cognito-Benutzerpool erstellt wurde.

1. Der Aussteller (`iss`)-Anspruch muss mit Ihrem Benutzerpool übereinstimmen. Ein in der `us-east-1`-Region erstellter Benutzerpool hat den folgenden `iss`-Wert:

   `https://cognito-idp.us-east-1.amazonaws.com/<userpoolID>`.

1. Prüfen Sie den `token_use`-Anspruch. 
   + Wenn Sie nur das Zugriffstoken in den Web-API-Operationen akzeptieren, muss der Wert lauten `access`.
   + Verwenden Sie nur das ID-Token, muss der Wert sein `id`.
   + Wenn Sie ID- und Zugriffstoken verwenden, muss der `token_use`-Anspruch `id` oder `access` sein.

Jetzt können Sie den Ansprüchen innerhalb des Tokens vertrauen.

# Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens"></a>

Ihre App muss jedes Mal, wenn Sie ein neues JSON Web Token (JWT) abrufen möchten, eine der folgenden Anforderungen erfolgreich abschließen.
+ Fordern Sie Kundenanmeldeinformationen oder eine [Autorisierungscode-Erteilung](https://www.rfc-editor.org/rfc/rfc6749#section-1.3) von [Token-Endpunkt](token-endpoint.md) an.
+ Beantragen Sie von Ihren verwalteten Anmeldeseiten aus eine implizite Gewährung.
+ Authentifizieren Sie einen lokalen Benutzer in einer Amazon Cognito Cognito-API-Anfrage wie. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)

Sie können Ihren Benutzerpool so konfigurieren, dass Tokens in Minuten, Stunden oder Tagen ablaufen. Um die Leistung und Verfügbarkeit Ihrer App sicherzustellen, verwenden Sie Amazon Cognito Cognito-Token für etwa 75% der Token-Lebensdauer und rufen Sie erst dann neue Token ab. Eine Zwischenspeicherungslösung, die Sie für Ihre App erstellen, hält Token verfügbar und verhindert die Ablehnung von Anfragen durch Amazon Cognito, wenn Ihre Anforderungsrate zu hoch ist. Eine clientseitige App muss Token in einem Speichercache ablegen. Eine serverseitige App kann einen verschlüsselten Cache-Mechanismus zum Speichern von Token hinzufügen.

Wenn Ihr Benutzerpool ein hohes Volumen an Benutzern oder machine-to-machine Aktivitäten generiert, stoßen Sie möglicherweise auf die Beschränkungen, die Amazon Cognito für die Anzahl der Token-Anfragen festlegt, die Sie stellen können. Wenn Sie die Anzahl der Anfragen, die Sie an Amazon-Cognito-Endpunkte stellen, reduzieren möchten, können Sie Authentifizierungsdaten entweder sicher speichern und wiederverwenden oder exponentielle Backoffs und Wiederholungsversuche implementieren.

Authentifizierungsdaten stammen aus zwei Klassen von Endpunkten. Zu den Amazon Cognito [OAuth2.0-Endpunkten](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) gehört der Token-Endpunkt, der Kundenanmeldedaten und verwaltete Anfragen von Anmeldeautorisierungscodes bearbeitet. [Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html#cognito_identity_your_user_pools_region) beantworten Benutzerpool-API-Anfragen wie `InitiateAuth` und `RespondToAuthChallenge`. Jede Art von Anfrage hat eigene Grenzen. Weitere Informationen zu Limits finden Sie unter [Kontingente in Amazon Cognito](quotas.md).

## Zwischenspeichern von machine-to-machine Zugriffstoken mit Amazon API Gateway
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway"></a>

Mit dem API-Gateway-Token-Caching kann Ihre App als Reaktion auf Ereignisse skaliert werden, die die standardmäßige Quote für die Anforderungsrate von Amazon Cognito OAuth Cognito-Endpunkten überschreiten.

![\[Ein Diagramm eines API Gateway, das einen Cache mit Zugriffstoken für M2M verwaltet. Der API-Proxy verarbeitet die Token-Anfrage und gibt ein zwischengespeichertes Token zurück, falls eines bereits gültig ist.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/user-pools-m2m-caching.png)


Sie können die Zugriffstoken zwischenspeichern, sodass Ihre App nur dann ein neues Zugriffstoken anfordert, wenn ein zwischengespeichertes Token abgelaufen ist. Andernfalls gibt Ihr Caching-Endpunkt ein Token aus dem Cache zurück. Dadurch wird ein zusätzlicher Aufruf eines Amazon-Cognito-API-Endpunkts verhindert. Wenn Sie Amazon API Gateway als Proxy für [Token-Endpunkt](token-endpoint.md) verwenden, reagiert Ihre API auf die meisten Anfragen, die andernfalls zu Ihrem Anforderungskontingent beitragen würden, und vermeidet erfolglose Anfragen aufgrund der Kontingentbegrenzung.

Die folgende API-Gateway-basierte Lösung bietet eine Low-Code-/No-Code-Implementierung von Token-Caching mit niedriger Latenz. API Gateway APIs werden bei der Übertragung und optional im Ruhezustand verschlüsselt. Ein API-Gateway-Cache eignet sich ideal für die [Gewährung von OAuth 2.0-Client-Anmeldeinformationen](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4). Dabei handelt es sich um einen häufig großvolumigen Grant-Typ, der Zugriffstoken für Autorisierungs machine-to-machine - und Microservice-Sitzungen generiert. In einem Fall wie einem Anstieg des Datenverkehrs, der dazu führt, dass Ihre Microservices horizontal skaliert werden, kann es passieren, dass viele Systeme dieselben Client-Anmeldeinformationen verwenden, und zwar in einem Umfang, der die AWS Anforderungsratenbegrenzung Ihres Benutzerpools oder App-Clients überschreitet. Zur Erhaltung der Verfügbarkeit von Apps und einer geringen Latenz hat sich eine Caching-Lösung in solchen Szenarien als Methode bewährt.

Bei dieser Lösung definieren Sie einen Cache in Ihrer API, um für jede Kombination aus OAuth Bereichen und App-Client, die Sie in Ihrer App anfordern möchten, ein separates Zugriffstoken zu speichern. Wenn Ihre App eine Anfrage stellt, die mit dem Cache-Schlüssel übereinstimmt, antwortet Ihre API mit einem Zugriffstoken, das Amazon Cognito aufgrund der ersten Anfrage ausgegeben hat, die mit dem Cache-Schlüssel übereinstimmt. Wenn die Dauer Ihres Cache-Schlüssels abläuft, leitet Ihre API die Anforderung an Ihren Tokenendpunkt weiter und speichert ein neues Zugriffstoken im Cache.

**Anmerkung**  
Die Dauer Ihres Cache-Schlüssels muss kürzer sein als die Zugriffstokendauer Ihres App-Clients.

Der Cache-Schlüssel ist eine Kombination aus den OAuth Bereichen, die Sie im `scope` Parameter im Anfragetext anfordern, und dem `Authorization` Header in der Anfrage. Der `Authorization`-Header enthält die App-Client-ID und den geheimen Client-Schlüssel. Sie müssen keine zusätzliche Logik in Ihrer App implementieren, um diese Lösung zu verwenden. Sie müssen Ihre Konfiguration nur aktualisieren, um den Pfad zu Ihrem Tokenendpunkt des Benutzerpools zu ändern.

Sie können Token-Caching auch mit [ElastiCache (Redis](https://docs.aws.amazon.com/elasticache/index.html) OSS) implementieren. Für die differenzierte Steuerung mit AWS Identity and Access Management (IAM)-Richtlinien erwägen Sie die Verwendung eines [Amazon-DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/authentication-and-access-control.html#authentication)-Caches.

**Anmerkung**  
Das Zwischenspeichern im API Gateway ist mit zusätzlichen Kosten verbunden. [Weitere Informationen finden Sie unter Preise.](https://aws.amazon.com/api-gateway/pricing)<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway-how-to"></a>

**So richten Sie einen Caching-Proxy mit API Gateway ein**

1. Öffnen Sie die [API-Gateway-Konsole](https://console.aws.amazon.com/apigateway/main/apis) und erstellen Sie eine REST-API.

1. Erstellen Sie eine POST-Methode in **Resources** (Ressourcen).

   1. Wählen Sie HTTP als **Integration type** (Integrationstyp) aus.

   1. Wählen Sie **Use HTTP proxy integration** (HTTP-Proxy-Integration verwenden) aus.

   1. Geben Sie als **Endpoint URL** (Endpunkt-URL) `https://<your user pool domain>/oauth2/token` ein.

1. Konfigurieren Sie den Cache-Schlüssel in **Resources** (Ressourcen).

   1. Bearbeiten Sie **Method request** (Methodenanforderung) Ihrer POST-Methode.
**Anmerkung**  
Diese Methode der Anforderungsvalidierung ist für die `client_secret_basic` Autorisierung bei Token-Anfragen vorgesehen, bei denen das Client-Geheimnis im Anforderungsheader kodiert ist. `Authorization` Für die Validierung des JSON-Anforderungstexts bei der `client_secret_post` Autorisierung erstellen Sie stattdessen ein [Datenmodell](https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings-models.html), das erfordert, dass [client\$1secret vorhanden](token-endpoint.md#post-token-request-parameters-in-body) ist. In diesem Modell sollte Ihr **Request-Validator** den **Text, die Parameter der Abfragezeichenfolge und die Header validieren**.

   1. Konfigurieren Sie die Methode **Request Validator** so, dass die Parameter und Header der **Abfragezeichenfolge validiert** werden. Weitere Informationen zur Anforderungsvalidierung finden Sie unter [Anforderungsvalidierung](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) im *Amazon API Gateway Developer Guide*.

   1. Legen Sie den `scope`-Parameter und den `Authorization`-Header als Caching-Schlüssel fest.

      1. Fügen Sie den **URL-Abfragezeichenfolgenparametern eine Abfragezeichenfolge** hinzu. Geben Sie eine Abfragezeichenfolge „**Name** of“ ein `scope` und wählen Sie „**Erforderlich**“ und „**Zwischenspeichern**“ aus.

      1. Fügen Sie den Headern der **HTTP-Anfrage einen Header** hinzu. Geben Sie den **Namen** des Anforderungsheaders ein `Authorization` und wählen Sie **Erforderlich und **Zwischenspeichern**** aus.

1. Konfigurieren Sie das Caching unter **Stages** (Phasen).

   1. Wählen Sie die Phase aus, die Sie ändern möchten, und wählen Sie in den **Stufendetails** die Option **Bearbeiten** aus.

   1. Aktivieren Sie unter **Zusätzliche Einstellungen****, Cache-Einstellungen** die Option **API-Cache bereitstellen**.

   1. Wählen Sie einen Wert für **Cache capacity** (Cache-Kapazität) aus. Eine höhere Cachekapazität verbessert die Leistung, ist jedoch mit zusätzlichen Kosten verbunden.

   1. Deaktivieren Sie das Kontrollkästchen **Autorisierung erforderlich**. Wählen Sie **Weiter** aus.

   1. API Gateway wendet Cache-Richtlinien nur auf GET-Methoden aus der Stufenebene an. Sie müssen eine Überschreibung der Cache-Richtlinie auf Ihre POST-Methode anwenden.

      Erweitern Sie die Phase, die Sie konfiguriert haben, und wählen Sie die `POST` Methode aus. Um Cache-Einstellungen für die Methode zu erstellen, wählen Sie **Create Override** aus.

   1. Aktivieren Sie die Option **Methoden-Cache aktivieren**.

   1. Geben Sie einen ****Cache time-to-live (TTL)**** von 3600 Sekunden ein. Wählen Sie **Speichern**.

1. Notieren Sie sich unter **Stages** (Phasen) die **Invoke URL** (Aufruf-URL).

1. Aktualisieren Sie Ihre App auf POST-Tokenanfragen an die **Invoke URL** (Aufruf-URL) Ihrer API anstatt an den `/oauth2/token`-Endpunkt Ihres Benutzerpools.

# Zugriff auf Ressourcen nach erfolgreicher Anmeldung
<a name="accessing-resources"></a>

Ihre App-Benutzer können sich entweder direkt über einen Benutzerpool anmelden oder sich über einen externen Identitätsanbieter (IdP) zusammenschließen. Der Benutzerpool verwaltet den Aufwand für die Verwaltung der Token, die bei der Anmeldung in sozialen Netzwerken über Facebook, Google, Amazon und Apple sowie von OpenID Connect (OIDC) und SAML zurückgegeben werden. IdPs Weitere Informationen finden Sie unter [JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md). 

Nach einer erfolgreichen Authentifizierung erhält Ihre App Benutzerpool-Token von Amazon Cognito. Sie können Benutzerpool-Token verwenden, um:
+ Rufen Sie AWS Anmeldeinformationen ab, die Anfragen nach Anwendungsressourcen AWS-Services wie Amazon DynamoDB und Amazon S3 autorisieren.
+ Stellen Sie einen temporären, widerruflichen Authentifizierungsnachweis bereit.
+ Füllen Sie Identitätsdaten in ein Benutzerprofil in Ihrer App ein.
+ Autorisieren Sie Änderungen am Profil des angemeldeten Benutzers im Benutzerpoolverzeichnis.
+ Autorisieren Sie Anfragen nach Benutzerinformationen mit einem Zugriffstoken.
+ Autorisieren Sie Anfragen an Daten, die sich hinter zugriffsgeschützten externen APIs Daten mit Zugriffstoken befinden.
+ Autorisieren Sie den Zugriff auf Anwendungsressourcen, die auf dem Client oder Server gespeichert sind, mit Amazon Verified Permissions.

Weitere Informationen erhalten Sie unter [Ein Beispiel für eine Authentifizierungssitzung](authentication.md#amazon-cognito-user-pools-authentication-flow) und [JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

![\[Übersicht über die Authentifizierung.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/scenario-authentication-cup.png)


**Topics**
+ [Autorisieren des Zugriffs auf Client- oder Serverressourcen mit von Amazon Verified Permissions](scenario-backend.md)
+ [Zugriff auf Ressourcen mit API Gateway nach der Anmeldung](user-pool-accessing-resources-api-gateway-and-lambda.md)
+ [Zugriff AWS-Services über einen Identitätspool nach der Anmeldung](amazon-cognito-integrating-user-pools-with-identity-pools.md)

# Autorisieren des Zugriffs auf Client- oder Serverressourcen mit von Amazon Verified Permissions
<a name="scenario-backend"></a>

Ihre App kann die Token von einem angemeldeten Benutzer an [Amazon](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/what-is-avp.html) Verified Permissions weitergeben. Verified Permissions ist ein skalierbarer, detaillierter Service zur Verwaltung und Autorisierung von Berechtigungen für von Ihnen erstellte Anwendungen. Ein Amazon Cognito Cognito-Benutzerpool kann eine Identitätsquelle für einen Richtlinienspeicher für verifizierte Berechtigungen sein. Verified Permissions trifft Autorisierungsentscheidungen für angeforderte Aktionen und Ressourcen, z. B. `GetPhoto` für`premium_badge.png`, vom Principal und seinen Attributen in Benutzerpool-Token.

Das folgende Diagramm zeigt, wie Ihre Anwendung das Token eines Benutzers in einer Autorisierungsanfrage an Verified Permissions übergeben kann.

![\[Ein Flussdiagramm einer Anwendung, die sich bei einem Amazon Cognito Cognito-Benutzerpool authentifiziert und den Zugriff auf lokale Ressourcen mit Amazon Verified Permissions autorisiert.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/access-services-local-resources.png)


**Erste Schritte mit Amazon Verified Permissions**  
Nachdem Sie Ihren Benutzerpool mit Verified Permissions integriert haben, erhalten Sie eine zentrale Quelle für detaillierte Autorisierung für all Ihre Amazon Cognito-Apps. Dadurch entfällt die Notwendigkeit einer detaillierten Sicherheitslogik, die Sie sonst zwischen all Ihren Apps programmieren und replizieren müssten. Weitere Informationen zur Autorisierung mit verifizierten Berechtigungen finden Sie unter. [Autorisierung mit Amazon Verified Permissions](amazon-cognito-authorization-with-avp.md)

Für Autorisierungsanfragen mit verifizierten Berechtigungen sind AWS Anmeldeinformationen erforderlich. Sie können einige der folgenden Techniken implementieren, um Anmeldeinformationen sicher auf Autorisierungsanfragen anzuwenden.
+ Betreiben Sie eine Webanwendung, die Geheimnisse im Server-Backend speichern kann.
+ Besorgen Sie sich authentifizierte Anmeldeinformationen für den Identitätspool.
+ Proxyieren Sie Benutzeranfragen über eine access-token-authorized API und fügen Sie der Anfrage AWS Anmeldeinformationen hinzu.

# Zugriff auf Ressourcen mit API Gateway nach der Anmeldung
<a name="user-pool-accessing-resources-api-gateway-and-lambda"></a>

Amazon Cognito Cognito-Benutzerpools-Token werden häufig verwendet, um Anfragen an eine [API Gateway zu autorisieren.](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) Die OAuth 2.0-Bereiche in Zugriffstoken können eine Methode und einen Pfad autorisieren, z. B. für. `HTTP GET` `/app_assets` ID-Token können als generische Authentifizierung für eine API dienen und Benutzerattribute an den Backend-Service übergeben. API Gateway verfügt über zusätzliche benutzerdefinierte Autorisierungsoptionen wie [JWT-Autorisierer für HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html) und [Lambda-Autorisierer, die eine detailliertere Logik anwenden](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) können.

Das folgende Diagramm zeigt eine Anwendung, die Zugriff auf eine REST-API mit den 2.0-Bereichen in einem Zugriffstoken erhält. OAuth 

![\[Ein Flussdiagramm einer Anwendung, die sich bei einem Amazon Cognito Cognito-Benutzerpool authentifiziert und den Zugriff auf API-Ressourcen mit Amazon API Gateway autorisiert.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/access-services-api-gateway.png)


Ihre App muss die Token aus authentifizierten Sitzungen sammeln und sie als Inhaber-Token zu einem `Authorization` Header in der Anfrage hinzufügen. Konfigurieren Sie den Authorizer, den Sie für die API, den Pfad und die Methode zur Auswertung von Token-Inhalten konfiguriert haben. API Gateway gibt nur Daten zurück, wenn die Anfrage den Bedingungen entspricht, die Sie für Ihren Autorisierer eingerichtet haben. 

Einige mögliche Methoden, mit denen die API Gateway API den Zugriff von einer Anwendung aus genehmigen kann, sind:
+ Das Zugriffstoken ist gültig, nicht abgelaufen und enthält den richtigen OAuth 2.0-Bereich. Der [Amazon Cognito Cognito-Benutzerpool-Autorisierer für eine REST-API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) ist eine gängige Implementierung mit einer niedrigen Eintrittsbarriere. Sie können auch den Hauptteil, die Abfragezeichenfolgenparameter und die Header einer Anfrage an diesen Autorisierungstyp auswerten.
+ Das ID-Token ist gültig und nicht abgelaufen. Wenn Sie ein ID-Token an einen Amazon Cognito Cognito-Autorisierer übergeben, können Sie eine zusätzliche Validierung des ID-Token-Inhalts auf Ihrem Anwendungsserver durchführen.
+ Eine Gruppe, ein Anspruch, ein Attribut oder eine Rolle in einem Zugriffs- oder ID-Token erfüllt die Anforderungen, die Sie in einer Lambda-Funktion definieren. Ein [Lambda-Autorisierer](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) analysiert das Token im Anforderungsheader und wertet es für eine Autorisierungsentscheidung aus. Sie können in Ihrer Funktion eine benutzerdefinierte Logik erstellen oder eine API-Anfrage an [Amazon Verified Permissions](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/what-is-avp.html) stellen.

Sie können Anfragen an eine [AWS AppSync GraphQL-API](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html#amazon-cognito-user-pools-authorization) auch mit Tokens aus einem Benutzerpool autorisieren.

# Zugriff AWS-Services über einen Identitätspool nach der Anmeldung
<a name="amazon-cognito-integrating-user-pools-with-identity-pools"></a>

Nachdem sich Ihre Benutzer mit einem Benutzerpool angemeldet haben, können sie AWS-Services mit temporären API-Anmeldeinformationen, die von einem Identitätspool ausgestellt wurden, darauf zugreifen.

Ihre Web- oder Mobil-App erhält Token aus einem Benutzerpool. Wenn Sie Ihren Benutzerpool als Identitätsanbieter für Ihren Identitätspool konfigurieren, tauscht der Identitätspool Token gegen temporäre AWS Anmeldeinformationen aus. Diese Anmeldeinformationen können auf IAM-Rollen und deren Richtlinien beschränkt werden, die Benutzern Zugriff auf eine begrenzte Anzahl von Ressourcen gewähren. AWS Weitere Informationen finden Sie unter [Identitäten-Pools – Authentifzierungsablauf](authentication-flow.md).

Das folgende Diagramm zeigt, wie sich eine Anwendung mit einem Benutzerpool anmeldet, Identitätspool-Anmeldeinformationen abruft und ein Asset von einem anfordert. AWS-Service

![\[Ein Flussdiagramm einer Anwendung, die sich bei einem Amazon Cognito Cognito-Benutzerpool authentifiziert und den Zugriff auf AWS Ressourcen mit einem Identitätspool autorisiert.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/access-services-identity-pool.png)


Sie können die Anmeldeinformationen für den Identitätspool verwenden, um:
+ Stellen Sie detaillierte Autorisierungsanfragen an Amazon Verified Permissions mit den eigenen Anmeldeinformationen Ihres Benutzers.
+ Stellen Sie eine Connect zu einer Amazon API Gateway Gateway-REST-API oder einer AWS AppSync GraphQL-API her, die Verbindungen mit IAM autorisiert.
+ Stellen Sie eine Connect zu einem Datenbank-Backend wie Amazon DynamoDB oder Amazon RDS her, das Verbindungen mit IAM autorisiert.
+ Rufen Sie Anwendungsressourcen aus einem Amazon S3 S3-Bucket ab.
+ Initiieren Sie eine Sitzung mit einem WorkSpaces virtuellen Amazon-Desktop.

Identitätspools funktionieren nicht ausschließlich innerhalb einer authentifizierten Sitzung mit einem Benutzerpool. Sie akzeptieren auch die Authentifizierung direkt von externen Identitätsanbietern und können Anmeldeinformationen für nicht authentifizierte Gastbenutzer generieren.

Weitere Informationen zur Verwendung von Identitätspools zusammen mit Benutzerpoolgruppen zur Steuerung des Zugriffs auf Ihre AWS Ressourcen finden Sie unter [Hinzufügen von Gruppen zu einem Benutzerpool](cognito-user-pools-user-groups.md) und. [Verwenden der rollenbasierten Zugriffskontrolle](role-based-access-control.md) Weitere Informationen zu Identitätspools und AWS Identity and Access Management finden Sie auch unter[Identitäten-Pools – Authentifzierungsablauf](authentication-flow.md).

## Einrichten eines Benutzerpools mit dem AWS-Managementkonsole
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-setting-up"></a>

Erstellen Sie einen Amazon-Cognito-Benutzerpool und notieren Sie die **Benutzerpool-ID** und **App-Client-ID** für jede Ihrer Client-Apps. Weitere Informationen zum Erstellen von Benutzerpools finden Sie unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).

## Einrichtung eines Identitätspools mit dem AWS-Managementkonsole
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-configuring"></a>

Das folgende Verfahren beschreibt, wie Sie den verwenden AWS-Managementkonsole , um einen Identitätspool in einen oder mehrere Benutzerpools und Client-Apps zu integrieren.

**So fügen Sie einen Identitätsanbieter (IdP) zu Amazon-Cognito-Benutzerpools hinzu:**

1. Wählen Sie **Identitätspools** in der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) aus. Wählen Sie einen Identitätspool.

1. Wählen Sie die Registerkarte **Datenzugriff** aus.

1. Wählen Sie **Identitätsanbieter hinzufügen** aus.

1. Wählen Sie einen **Amazon-Cognito-Benutzerpool**.

1. Geben Sie eine **Benutzerpool-ID** und eine **App-Client-ID** ein.

1. Um die Rolle festzulegen, die Amazon Cognito bei der Ausgabe von Anmeldeinformationen an Benutzer anfordert, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die **Rolleneinstellungen**.

   1. Sie können Benutzern dieses IdP die **Standardrolle zuweisen, die Sie bei** der Konfiguration Ihrer **authentifizierten Rolle** eingerichtet haben, oder Sie können eine **Rolle mit Regeln auswählen**. Mit einem IdP für Amazon-Cognito-Benutzerpools können Sie auch eine **Rolle mit preferred\$1role in Token auswählen**. Weitere Informationen zur `cognito:preferred_role`-Anforderung finden Sie unter [Zuweisen von Prioritätswerten zu Gruppen](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups).

      1. Wenn Sie **„Rolle mit Regeln auswählen**“ ausgewählt haben, geben Sie den **Quellanspruch** aus Ihrer Benutzerauthentifizierung, den **Operator**, den Sie verwenden möchten, um den Anspruch mit der Regel zu vergleichen, den **Wert**, der zu einer Übereinstimmung mit dieser Rollenauswahl führt, und die **Rolle** ein, die Sie zuweisen möchten, wenn die **Rollenzuweisung** übereinstimmt. Wählen Sie **Weitere hinzufügen** aus, um eine zusätzliche Regel zu erstellen, die auf einer anderen Bedingung basiert.

      1. Wenn Sie **„Rolle mit bevorzugtem Rollenanspruch auswählen“ in Tokens** ausgewählt haben, stellt Amazon Cognito Anmeldeinformationen für die Rolle im Anspruch Ihres Benutzers aus. `cognito:preferred_role` Wenn kein Anspruch für eine bevorzugte Rolle vorliegt, stellt Amazon Cognito Anmeldeinformationen auf der Grundlage Ihrer **Rollenauflösung** aus.

   1. Wählen Sie eine **Rollenauflösung**. Wenn die Anforderungen Ihres Benutzers nicht Ihren Regeln entsprechen, können Sie Anmeldeinformationen verweigern oder Anmeldeinformationen für Ihre **Authentifizierte Rolle** ausgeben.

1. Um die Prinzipal-Tags zu ändern, die Amazon Cognito Benutzern zuweist, wenn es Anmeldeinformationen an Benutzer ausgibt, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die **Attribute für die Zugriffskontrolle**.
   + Um keine Prinzipal-Tags anzuwenden, wählen Sie **Inaktiv** aus.
   + Wählen Sie **Standardzuordnungen verwenden**, um Prinzipal-Tags auf der Grundlage von `sub`- und `aud`-Anforderungen anzuwenden.
   + Um Ihr eigenes benutzerdefiniertes Schema von Attributen für Prinzipal-Tags zu erstellen, wählen Sie **Benutzerdefinierte Zuordnungen verwenden**. Geben Sie dann einen **Tag-Schlüssel** ein, den Sie aus jeder **Anforderung** beziehen möchten, die Sie in einem Tag repräsentieren möchten.

1. Wählen Sie **Änderungen speichern** aus.

## Integration eines Benutzerpools in einen Identitäten-Pool
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-using"></a>

Nachdem Ihr App-Benutzer authentifiziert wurde, fügen Sie der Anmeldezuweisung im Anmeldeinformationsanbieter das Identitäts-Token des Benutzers hinzu. Der Anbietername ist von Ihrer Amazon-Cognito-Benutzerpool-ID abhängig. Er hat die folgende Struktur:

```
cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>
```

**Sie können den Wert für *<region>* aus der Benutzerpool-ID ableiten.** Wenn die Benutzerpool-ID beispielsweise lautet`us-east-1_EXAMPLE1`, dann *<region>* ist `us-east-1` die. Wenn die Benutzerpool-ID lautet`us-west-2_EXAMPLE2`, dann *<region>* ist die`us-west-2`.

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

```
var cognitoUser = userPool.getCurrentUser();

if (cognitoUser != null) {
	cognitoUser.getSession(function(err, result) {
		if (result) {
			console.log('You are now logged in.');

			// Add the User's Id Token to the Cognito credentials login map.
			AWS.config.credentials = new AWS.CognitoIdentityCredentials({
				IdentityPoolId: 'YOUR_IDENTITY_POOL_ID',
				Logins: {
					'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken()
				}
			});
		}
	});
}
```

------
#### [ Android ]

```
cognitoUser.getSessionInBackground(new AuthenticationHandler() {
	@Override
	public void onSuccess(CognitoUserSession session) {
		String idToken = session.getIdToken().getJWTToken();

		Map<String, String> logins = new HashMap<String, String>();
		logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken());
		credentialsProvider.setLogins(logins);
	}

});
```

------
#### [ iOS - objective-C ]

```
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil];
AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID"  clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"];
[AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"];
AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"];
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
```

------
#### [ iOS - swift ]

```
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)
let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID")
AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool")
let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)
```

------

# Bereiche, M2M und Ressourcenserver
<a name="cognito-user-pools-define-resource-servers"></a>

Nachdem Sie eine Domain für Ihren Benutzerpool konfiguriert haben, stellt Amazon Cognito automatisch einen OAuth 2.0-Autorisierungsserver und eine gehostete Weboberfläche mit Anmelde- und Anmeldeseiten bereit, die Ihre App Ihren Benutzern präsentieren kann. Weitere Informationen finden Sie unter [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md). Sie können die Bereiche auswählen, die der Autorisierungsserver den Zugriffstoken hinzufügen soll. Bereiche autorisieren den Zugriff auf Ressourcenserver und Benutzerdaten.

Ein *Ressourcenserver* ist ein OAuth 2.0-API-Server. Um zugriffsgeschützte Ressourcen zu sichern, wird überprüft, ob Zugriffstoken aus Ihrem Benutzerpool die Bereiche enthalten, die die angeforderte Methode und den Pfad in der geschützten API autorisieren. Der Aussteller wird anhand der Token-Signatur, der Gültigkeit basierend auf der Token-Ablaufzeit und der Zugriffsebene basierend auf den Geltungsbereichen in Token-Ansprüchen verifiziert. Die Bereiche des Benutzerpools sind im `scope` Anspruch auf Zugriffstoken enthalten. Weitere Informationen zu den Ansprüchen in Amazon-Cognito-Zugriffstoken finden Sie unter [Das Zugriffstoken verstehen](amazon-cognito-user-pools-using-the-access-token.md).

Mit Amazon Cognito können die Bereiche in Zugriffstoken den Zugriff auf externe Attribute APIs oder Benutzerattribute autorisieren. Sie können Zugriffstoken für lokale Benutzer, Verbundbenutzer oder Maschinenidentitäten ausgeben.

**Topics**
+ [API-Autorisierung](#cognito-user-pools-define-resource-servers-about-api-authz)
+ [Machine-to-machine (M2M) -Autorisierung](#cognito-user-pools-define-resource-servers-about-m2m)
+ [Grundlegendes zu Bereichen](#cognito-user-pools-define-resource-servers-about-scopes)
+ [Grundlegendes zu Ressourcenservern](#cognito-user-pools-define-resource-servers-about-resource-servers)
+ [Bindung von Ressourcen](#cognito-user-pools-resource-binding)

## API-Autorisierung
<a name="cognito-user-pools-define-resource-servers-about-api-authz"></a>

Im Folgenden finden Sie einige Möglichkeiten, Anfragen APIs mit Amazon Cognito Cognito-Token zu autorisieren:

**Zugriffstoken**  
Wenn Sie einen Amazon Cognito Cognito-Autorisierer zu einer REST-API-Methodenanforderungskonfiguration hinzufügen, fügen Sie der **Autorisierungskonfiguration Autorisierungsbereiche** hinzu. Bei dieser Konfiguration akzeptiert Ihre API Zugriffstoken im `Authorization` Header und überprüft sie auf akzeptierte Bereiche.

**ID-Token**  
Wenn Sie in Ihrer REST-API ein gültiges ID-Token an einen Amazon Cognito Cognito-Authorizer übergeben, akzeptiert API Gateway die Anfrage und leitet den Inhalt des ID-Tokens an das API-Backend weiter.

**Amazon Verified Permissions**  
Unter Verifizierte Berechtigungen haben Sie die Möglichkeit, einen [API-verknüpften](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/policy-stores_api-userpool.html) Richtlinienspeicher zu erstellen. Verified Permissions erstellt und weist einen Lambda-Autorisierer zu, der ID- oder Zugriffstoken aus Ihrem Anforderungsheader verarbeitet. `Authorization` Dieser Lambda-Autorisierer leitet Ihr Token an Ihren Richtlinienspeicher weiter, wo Verified Permissions es mit Richtlinien vergleicht und eine Entscheidung über das Zulassen oder Verweigern an den Autorisierer zurückgibt.

**Weitere -Quellen**
+ [Steuern und Verwalten des Zugriffs auf eine REST-API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)
+ [Autorisierung mit Amazon Verified Permissions](amazon-cognito-authorization-with-avp.md)

## Machine-to-machine (M2M) -Autorisierung
<a name="cognito-user-pools-define-resource-servers-about-m2m"></a>

Amazon Cognito unterstützt Anwendungen, die auf API-Daten mit *Maschinenidentitäten* zugreifen. Maschinenidentitäten in Benutzerpools sind [vertrauliche Clients](user-pool-settings-client-apps.md#user-pool-settings-client-app-client-types), die auf Anwendungsservern ausgeführt werden und eine Verbindung zu Remote-Computern herstellen. APIs Ihr Betrieb erfolgt ohne Benutzerinteraktion: geplante Aufgaben, Datenströme oder Asset-Updates. Wenn diese Clients ihre Anfragen mit einem Zugriffstoken autorisieren, führen sie eine *Machine-to-Machine-Autorisierung* (M2M) durch. Bei der M2M-Autorisierung ersetzt ein gemeinsam genutzter geheimer Schlüssel die Benutzeranmeldeinformationen bei der Zugriffskontrolle.

Eine Anwendung, die mit M2M-Autorisierung auf eine API zugreift, muss über eine Client-ID und einen geheimen Clientschlüssel verfügen. In Ihrem Benutzerpool müssen Sie einen App-Client erstellen, der die Gewährung von Client-Anmeldeinformationen unterstützt. Um Client-Anmeldeinformationen zu unterstützen, muss Ihr App-Client über einen geheimen Client-Schlüssel verfügen und Sie müssen über eine Benutzerpool-Domain verfügen. In diesem Ablauf fordert Ihre Computeridentität ein Zugriffstoken direkt von der an[Token-Endpunkt](token-endpoint.md). Sie können nur benutzerdefinierte Bereiche von [Ressourcenservern](#cognito-user-pools-define-resource-servers-about-resource-servers) in Zugriffstoken für die Gewährung von Client-Anmeldeinformationen autorisieren. Weitere Informationen zum Einrichten von App-Clients finden Sie unter. [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md)

Das Zugriffstoken aus der Gewährung von Kundenanmeldedaten ist eine überprüfbare Aussage über die Vorgänge, die Sie Ihrer Computeridentität von einer API abfragen lassen möchten. Um mehr darüber zu erfahren, wie Zugriffstoken API-Anfragen autorisieren, lesen Sie weiter. Eine Beispielanwendung finden Sie unter [Machine-to-Machine-Autorisierung auf Basis von Amazon Cognito und API Gateway mit AWS CDK](https://github.com/aws-samples/amazon-cognito-and-api-gateway-based-machine-to-machine-authorization-using-aws-cdk).

Die M2M-Autorisierung hat ein Abrechnungsmodell, das sich von der Art und Weise unterscheidet, wie monatlich aktive Benutzer (MAUs) in Rechnung gestellt werden. Wenn für die Benutzerauthentifizierung Kosten pro aktivem Benutzer anfallen, spiegelt die M2M-Abrechnung die aktiven App-Clients mit Kundenanmeldedaten und das Gesamtvolumen der Token-Anfragen wider. Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing). Um die Kosten für die M2M-Autorisierung unter Kontrolle zu halten, sollten Sie die Dauer der Zugriffstoken und die Anzahl der Token-Anfragen, die Ihre Anwendungen stellen, optimieren. Eine Möglichkeit, API-Gateway-Caching zu verwenden, um Anfragen nach neuen Tokens bei der M2M-Autorisierung zu reduzieren, finden [Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens](amazon-cognito-user-pools-using-tokens-caching-tokens.md) Sie unter.

Informationen zur Optimierung von Amazon Cognito Cognito-Vorgängen, die Ihre AWS Rechnung mit zusätzlichen Kosten belasten, finden Sie unter[Verwalten von Kosten](tracking-cost.md#tracking-cost-managing).

**Client-Metadaten für machine-to-machine (M2M-) Kundenanmeldedaten**  
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.md) 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
```

## Grundlegendes zu Bereichen
<a name="cognito-user-pools-define-resource-servers-about-scopes"></a>

Ein *Bereich* ist ein Zugriffsniveau, das eine App von einer Ressource anfordern kann. In einem Zugriffstoken in Amazon Cognito wird der Bereich durch das Vertrauen gesichert, das Sie mit Ihrem Benutzerpool geschaffen haben: ein vertrauenswürdiger Aussteller von Zugriffstoken mit einer bekannten digitalen Signatur. Benutzerpools können Zugriffstoken mit Bereichen generieren, die belegen, dass Ihr Kunde sein eigenes Benutzerprofil ganz oder teilweise verwalten kann oder Daten von einer Back-End-API abrufen darf. Amazon Cognito Cognito-Benutzerpools stellen Zugriffstoken mit *dem reservierten API-Bereich, den *benutzerdefinierten Bereichen* und den *OpenID Connect-Bereichen (OIDC*) der Benutzerpools* aus.

**Der reservierte API-Bereich der Benutzerpools**  
Der `aws.cognito.signin.user.admin` Bereich autorisiert Self-Service-Operationen für den aktuellen Benutzer in der Amazon Cognito Cognito-Benutzerpools-API. Er autorisiert den Inhaber eines Zugriffstokens, alle Informationen über den Träger abzufragen und zu aktualisieren, z. B. mit den Operationen und der API. [GetUser[UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) Wenn Sie Ihren Benutzer mit der Benutzerpools-API in Amazon Cognito authentifizieren, ist dies der einzige Bereich, den Sie im Zugriffstoken erhalten. Dies ist auch der einzige Bereich, den Sie zum Lesen und Schreiben von Benutzerattributen benötigen, die der App-Client lesen und schreiben kann. Sie können diesen Bereich auch in Anfragen an Ihren [Autorisieren des Endpunkts](authorization-endpoint.md) anfordern. Dieser Bereich allein reicht nicht aus, um Benutzerattribute von [UserInfo-Endpunkt](userinfo-endpoint.md) anzufordern. *Für Zugriffstoken, die sowohl die Benutzerpool-API als auch `userInfo` Anfragen für Ihre Benutzer autorisieren, müssen Sie beide Bereiche `openid` und `aws.cognito.signin.user.admin` in einer `/oauth2/authorize` Anfrage anfordern.*

**Benutzerdefinierte Bereiche**  
Benutzerdefinierte Bereiche autorisieren Anfragen an externe Objekte, die von Ressourcenservern APIs geschützt werden. Sie können benutzerdefinierte Bereiche mit anderen Arten von Bereichen anfordern. Weitere Informationen zu benutzerdefinierten Bereichen finden Sie auf dieser Seite.

**OpenID Connect (OIDC) -Bereiche**  
Wenn Sie Benutzer mit Ihrem Benutzerpool-Autorisierungsserver authentifizieren, auch mit verwalteter Anmeldung, müssen Sie Bereiche anfordern. Sie können lokale Benutzerpool-Benutzer und externe Verbundbenutzer auf Ihrem Amazon-Cognito-Autorisierungsserver authentifizieren. OIDC-Bereiche autorisieren Ihre App, Benutzerinformationen aus Ihrem Benutzerpool zu lesen. [UserInfo-Endpunkt](userinfo-endpoint.md) Das OAuth Modell, bei dem Sie Benutzerattribute vom `userInfo` Endpunkt aus abfragen, kann Ihre App für eine große Anzahl von Anfragen nach Benutzerattributen optimieren. Der `userInfo`-Endpunkt gibt Attribute auf einer Berechtigungsebene zurück, die durch die Bereiche im Zugriffstoken bestimmt wird. Sie können Ihren App-Client autorisieren, Zugriffstoken mit den folgenden OIDC-Bereichen auszugeben.

openid  
Der obligatorische Mindestbereich für OpenID-Connect-(OIDC)-Abfragen. Autorisiert das ID-Token, den unique-identifier-Anspruch `sub` und die Möglichkeit, andere Bereiche anzufordern.  
Wenn Sie nur den `openid`-Bereich und keine anderen anfordern, enthalten Ihr Benutzerpool-ID-Token und Ihre `userInfo`-Antwort Ansprüche für alle Benutzerattribute, die Ihr App-Client lesen kann. Bei Anfragen `openid` und anderen OIDC-Bereichen wie `profile` `email``phone`, und ist der Inhalt des ID-Tokens und der [UserInfo-Antwort](userinfo-endpoint.md#userinfo-endpoint.title) auf die Einschränkungen der zusätzlichen Bereiche beschränkt.  
Beispielsweise würde eine Anfrage an [Autorisieren des Endpunkts](authorization-endpoint.md) mit dem Parameter `scope=openid+email` ein ID-Token mit `sub`, `email` und `email_verified` zurückgeben. Das Zugriffs-Token aus dieser Anfrage gibt dieselben Attribute aus [UserInfo-Endpunkt](userinfo-endpoint.md) zurück. Eine Anfrage mit Parameter `scope=openid` gibt alle vom Client lesbaren Attribute im ID-Token und aus `userInfo` zurück.

Profil  
Autorisiert alle Benutzerattribute, die der App-Client lesen kann.

E-Mail  
Autorisiert die Benutzerattribute `email` und `email_verified`. Amazon Cognito gibt `email_verified` zurück wenn ein Wert explizit festgelegt wurde.

phone  
Autorisiert die Benutzerattribute `phone_number` und `phone_number_verified`.

## Grundlegendes zu Ressourcenservern
<a name="cognito-user-pools-define-resource-servers-about-resource-servers"></a>

Eine Ressourcenserver-API kann Zugriff auf die Informationen in einer Datenbank gewähren oder Ihre IT-Ressourcen steuern. Ein Amazon Cognito Cognito-Zugriffstoken kann den Zugriff auf APIs diesen Support OAuth 2.0 autorisieren. Amazon API Gateway REST bietet [integrierte Unterstützung](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) für APIs die Autorisierung mit Amazon Cognito Cognito-Zugriffstoken. Ihre App gibt das Zugriffstoken aus dem API-Aufruf an den Ressourcenserver weiter. Der Ressourcenserver untersucht das Zugriffstoken, um zu festzustellen, ob Zugriff gewährt werden soll.

Amazon Cognito wird möglicherweise in Zukunft das Schema der Zugriffstoken für Benutzerpools aktualisieren. Wenn Ihre App den Inhalt des Zugriffstokens analysiert, bevor sie es an eine API weitergibt, müssen Sie Ihren Code so anpassen, dass er Aktualisierungen des Schemas akzeptiert.

Benutzerdefinierte Bereiche werden von Ihnen definiert und erweitern die Autorisierungsfunktionen eines Benutzerpools auf Zwecke, die nichts mit dem Abfragen und Ändern von Benutzern und ihren Attributen zu tun haben. Wenn Sie beispielsweise einen Ressourcenserver für Fotos haben, könnte dieser zwei Bereiche definieren: `photos.read` für den Lesezugriff auf die Fotos und `photos.write` für write/delete den Zugriff. Sie können eine API so konfigurieren, dass sie Zugriffstoken für die Autorisierung akzeptiert und `HTTP GET`-Anforderungen für Zugriffstoken mit `photos.read` im `scope`-Anspruch sowie `HTTP POST`-Anforderungen für Token mit `photos.write` gewährt. Das sind *benutzerdefinierte Bereiche*.

**Anmerkung**  
Ihr Ressourcenserver muss die Signatur und das Ablaufdatum des Zugriffstokens überprüfen, bevor Ansprüche innerhalb des Tokens verarbeitet werden. Weitere Informationen zur Verifizierung von Token finden Sie unter [Überprüfung von JSON-Web-Tokens](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). Weitere Informationen zur Verifizierung und Verwendung von Benutzerpool-Token finden Sie unter [Integration von Amazon-Cognito-Benutzerpools mit API-Gateway](https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-user-pools-with-api-gateway/) im Blog. API Gateway ist gut für die Überprüfung von Zugriffstoken und den Schutz Ihrer Ressourcen geeignet. Weitere Informationen zu API-Gateway-Lambda-Genehmigern finden Sie unter [Verwenden von API-Gateway-Lambda-Genehmigern](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html).

**-Übersicht**  
Mit Amazon Cognito können Sie OAuth **2.0-Ressourcenserver** erstellen und ihnen **benutzerdefinierte Bereiche** zuordnen. Benutzerdefinierte Bereiche in einem Zugriffstoken autorisieren spezifische Aktionen in Ihrer API. Sie können jeden App-Client in Ihrem Benutzerpool autorisieren, benutzerdefinierte Bereiche von jedem Ihrer Ressourcenserver aus auszustellen. Ordnen Sie Ihre benutzerdefinierten Bereiche einem App-Client zu und fordern Sie diese Bereiche in Form von OAuth 2.0-Autorisierungscode-Erteilungen, impliziten Zuweisungen und Zuweisungen von Kundenanmeldedaten bei der an. [Token-Endpunkt](token-endpoint.md) Amazon Cognito fügt dem `scope`-Anspruch benutzerdefinierte Bereiche in einem Zugriffstoken hinzu. Ein Client kann das Zugriffstoken für seinen Ressourcenserver verwenden, der die Entscheidung über die Autorisierung basierend auf den im Token vorhandenen Bereichen trifft. Weitere Informationen über Zugriffstoken-Bereiche finden Sie unter [Verwenden von Token mit Benutzerpools](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

![\[Ein Überblick über den Ablauf eines Ressourcenservers. Der Client fordert eine Erteilung mit einem benutzerdefinierten Bereich an, der Benutzerpool gibt ein Zugriffstoken mit dem benutzerdefinierten Bereich zurück und der Client präsentiert das Zugriffstoken einer API.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/resource-servers.png)


Zum Abrufen eines Zugriffstokens mit benutzerdefinierten Bereichen muss Ihre App eine Anfrage an den [Token-Endpunkt](token-endpoint.md) senden, um einen Autorisierungscode einzulösen oder eine Berechtigung für Client-Anmeldeinformationen anzufordern. Bei der verwalteten Anmeldung können Sie auch benutzerdefinierte Bereiche in einem Zugriffstoken aus einer impliziten Gewährung anfordern.

**Anmerkung**  
Weil sie für die interaktive Authentifizierung mit dem Benutzerpool als IdP konzipiert sind [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)Anfragen nur einen `scope` Anspruch im Zugriffstoken mit dem einzigen Wert erzeugen. `aws.cognito.signin.user.admin`

**Verwalten der Ressourcenserver und benutzerdefinierten Bereiche**

Beim Erstellen eines Ressourcenservers müssen Sie einen Ressourcenservernamen und eine Ressourcenserver-ID angeben. Für jeden Bereich, den Sie im Ressourcenserver erstellen, müssen Sie den Namen und die Beschreibung des Bereichs bereitstellen.
+ **Name des Ressourcenservers**: Ein Anzeigename für den Ressourcenserver, z. B. `Solar system object tracker` oder `Photo API`.
+ **Ressourcenserver-ID**: Eine eindeutige ID für den Ressourcenserver. Die ID ist ein beliebiger Name, den Sie Ihrer API zuordnen, wie z. B. `solar-system-data`. Sie können längere IDs konfigurieren, wie z. B. `https://solar-system-data-api.example.com` als direkteren Verweis auf API-URI-Pfade, aber längere Zeichenfolgen machen Zugriffstoken größer.
+ **Bereichsname**: Der Wert, den Sie in Ihren `scope`-Ansprüchen haben wollen. Beispiel, `sunproximity.read`.
+ **Beschreibung**: Eine Kurzbeschreibung des Bereichs. Beispiel, `Check current proximity to sun`.

Amazon Cognito kann benutzerdefinierte Bereiche in Zugriffstoken für alle Benutzer einbeziehen, unabhängig davon, ob sie sich lokal in Ihrem Benutzerpool befinden oder mit einem externen Identitätsanbieter verbunden sind. Sie können die Bereiche für die Zugriffstoken Ihrer Benutzer während der Authentifizierungsabläufe mit dem OAuth 2.0-Autorisierungsserver, der die verwaltete Anmeldung beinhaltet, festlegen. Die Authentifizierung des Benutzers muss bei [Autorisieren des Endpunkts](authorization-endpoint.md) beginnen, mit `scope` als einem der Anforderungsparameter. Das folgende Format wird für Ressourcenserver empfohlen. Verwenden Sie als ID einen API-freundlichen Namen. Verwenden Sie für einen benutzerdefinierten Bereich die zu autorisierende Aktion.

```
resourceServerIdentifier/scopeName
```

Sie haben beispielsweise einen neuen Asteroiden im Kuipergürtel entdeckt und möchten ihn über Ihre `solar-system-data`-API registrieren. Der Bereich, der Schreiboperationen in die Asteroidendatenbank autorisiert, ist `asteroids.add`. Wenn Sie das Zugriffstoken anfordern, das Sie zur Registrierung Ihrer Entdeckung berechtigt, formatieren Sie Ihren `scope`-HTTPS-Anforderungsparameter als `scope=solar-system-data/asteroids.add`.

Durch das Löschen eines Bereichs von einem Ressourcenserver wird nicht die Zuordnung zu allen Clients gelöscht. Stattdessen wird der Geltungsbereich als *inaktiv* markiert. Amazon Cognito fügt Zugriffstoken keine inaktiven Bereiche hinzu, verfährt jedoch ansonsten wie gewohnt, wenn Ihre App eines anfordert. Wenn Sie Ihrem Ressourcenserver den Gültigkeitsbereich zu einem späteren Zeitpunkt erneut hinzufügen, schreibt Amazon Cognito ihn erneut in das Zugriffstoken. Wenn Sie einen Bereich anfordern, den Sie Ihrem App-Client nicht zugeordnet haben, schlägt die Authentifizierung unabhängig davon fehl, ob Sie ihn vom Ressourcenserver Ihres Benutzerpools gelöscht haben.

Sie können die AWS-Managementkonsole API oder die CLI verwenden, um Ressourcenserver und Bereiche für Ihren Benutzerpool zu definieren.

### Definition eines Ressourcenservers für Ihren Benutzerpool (AWS-Managementkonsole)
<a name="cognito-user-pools-define-resource-servers-console"></a>

Sie können den verwenden AWS-Managementkonsole , um einen Ressourcenserver für Ihren Benutzerpool zu definieren.

**Definieren eines Ressourcenservers**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. Wählen Sie im Navigationsbereich **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie das **Domain-Menü** unter **Branding** und suchen Sie nach **Ressourcenservern**.

1. Wählen Sie **Create a resource server** (Ressourcenserver erstellen) aus.

1. Geben Sie einen **Name für den Ressourcenserver** ein. Beispiel, `Photo Server`.

1. Geben Sie eine **ID für den Ressourcenserver** ein. Beispiel, `com.example.photos`.

1. Geben Sie **benutzerdefinierte Bereiche** für Ihre Ressourcen ein, z. B. `read` und `write`.

1. Geben Sie für jeden der **Bereichsnamen** eine **Beschreibung** ein, z. B. `view your photos` und `update your photos`.

1. Wählen Sie **Erstellen** aus.

Ihre benutzerdefinierten Bereiche können im Menü **Domäne** unter **Ressourcenserver** in der Spalte **Benutzerdefinierte Bereiche** überprüft werden. **Benutzerdefinierte Bereiche können für App-Clients im Menü App-Clients unter **Anwendungen** aktiviert werden.** Wählen Sie einen App-Client aus, suchen Sie nach **Anmeldeseiten** und wählen Sie **Bearbeiten**. Fügen Sie **benutzerdefinierte Bereiche** hinzu und wählen Sie **Save changes** (Änderungen speichern) aus.

### Definieren Sie einen Ressourcenserver für Ihren Benutzerpool (AWS CLI und Ihre AWS API)
<a name="cognito-user-pools-define-resource-servers-cli-api"></a>

Verwenden Sie die folgenden Befehle für die Angabe von Einstellungen der Ressourcenserver für Ihren Benutzerpool.

**Erstellen eines Ressourcenservers**
+ AWS CLI: `aws cognito-idp create-resource-server`
+ AWS API: [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html)

**Informationen über die Einstellungen Ihres Ressourcenservers abrufen**
+ AWS CLI: `aws cognito-idp describe-resource-server`
+ AWS API: [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html)

**Informationen über alle Ressourcenserver für Ihren Benutzerpool auflisten**
+ AWS CLI: `aws cognito-idp list-resource-servers`
+ AWS API: [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html)

**So löschen Sie einen Ressourcenserver**
+ AWS CLI: `aws cognito-idp delete-resource-server`
+ AWS API: [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html)

**Die Einstellungen für einen Ressourcenserver aktualisieren**
+ AWS CLI: `aws cognito-idp update-resource-server`
+ AWS API: [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html)

## Bindung von Ressourcen
<a name="cognito-user-pools-resource-binding"></a>

Mit der Ressourcenbindung, auch als Ressourcenindikatoren bezeichnet, können Sie API-spezifische Zuweisungen von Ihrem Benutzerpool-Autorisierungsserver anfordern. Resource Binding ist eine in [RFC 8707](https://www.rfc-editor.org/rfc/rfc8707.html) definierte OAuth 2.0-Erweiterung, mit der Clients bei Autorisierungsanfragen explizit angeben können, auf welchen Ressourcenserver sie zugreifen möchten. Mit der Ressourcenbindung können Ihre API-Konfigurationen den Zugriff für Token verweigern, die nicht speziell für sie bestimmt sind.

**Anmerkung**  
Sie können Zugriffstoken nur an Ressourcen für Benutzer binden. Sie können keine Ressourcenbindung mit M2M-Zuschüssen mit Kundenanmeldedaten anfordern.

Wenn Sie die Ressourcenbindung mit Amazon Cognito Cognito-Benutzerpools verwenden, können Clients einen `resource` Parameter in ihre Authentifizierungsanforderungen an Ihren Benutzerpool-Autorisierungsserver aufnehmen. Ihr Benutzerpool überprüft, ob es sich bei dem Wert der angeforderten Ressource um eine URL handelt, und folgt dabei denselben Schemaregeln wie beim [App-Client-Callback](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-about) URLs:`https://`, `localhost` nur `http://` mit oder einem benutzerdefinierten Schema wie. `myapp://` Amazon Cognito legt den angeforderten URI als Zielgruppe im `aud` Anspruch [auf das Zugriffstoken](amazon-cognito-user-pools-using-the-access-token.md) fest. Wenn es sich bei der angeforderten Ressource um einen Benutzerpool-Ressourcenserver handelt, muss die Ressourcenserver-ID im URL-Format vorliegen. Sie können eine Ressource pro Authentifizierungsanfrage anfordern.

Diese Funktion ist ausschließlich für die [verwaltete Anmeldeauthentifizierung](authentication-flows-selection-managedlogin.md) mit Ihrem Benutzerpool OAuth 2.0-Autorisierungsserver verfügbar. Sie können die Ressourcenbindung in Form von impliziten Zuschüssen und Autorisierungscodes bei der beantragen. [Autorisieren des Endpunkts](authorization-endpoint.md) Token-Refresh-Zuschüsse aus der Übertragung des Antrags aus der [Token-Endpunkt](token-endpoint.md) ursprünglichen Anfrage. `aud` Es ist derzeit nicht in [SDK-Authentifizierungsmodellen](authentication-flows-selection-sdk.md) verfügbar.

**Implementieren Sie die Ressourcenbindung mit Ihrem Amazon Cognito Cognito-Benutzerpool**

1. Konfigurieren Sie einen oder mehrere Ressourcenserver in Ihrem Benutzerpool mit eindeutigen Kennungen.

1. Fordern Sie in Ihrer `/oauth2/authorize` Autorisierungsanfrage einen Autorisierungscode oder eine implizite Erteilung an und geben Sie den Parameter an`resource`. Der Wert von `resource` muss eine URL-formatierte Resource Server-ID oder eine URL sein. Beispiel, `&resource=https://solar-system-data-api.example.com`.

1. Der Autorisierungsserver validiert die Ressourcenanforderung, schließt die Authentifizierung ab und legt den `aud` Zugriffstoken-Anspruch auf die angeforderte Ressourcen-URL fest.

1. Um zu überprüfen, ob speziell dafür ausgegebene Token ausgestellt wurden, überprüft die Ressource, die das Zugriffstoken Ihres Benutzers verbraucht, den `aud` Anspruch.

# Benutzerpoolfunktionen konfigurieren
<a name="user-pools-configure-features"></a>

In den vorherigen Kapiteln haben Sie wahrscheinlich einige Funktionen mithilfe der Amazon Cognito Cognito-Konsole konfiguriert. Die Seiten in diesem Abschnitt bieten einen tieferen Einblick in die detaillierten Konfigurationsanforderungen einiger Kernfunktionen von Benutzerpools. Es gibt wichtige Referenzinformationen zu Ihren Optionen in Bezug auf App-Clients, E-Mail- und SMS-Konfiguration, Speicherung von Benutzergeräten und mehr.

**Topics**
+ [Aktualisierung der Benutzerpool- und App-Client-Konfiguration](cognito-user-pool-updating.md)
+ [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md)
+ [Verwendung von Benutzergeräten in Ihrem Benutzerpool](amazon-cognito-user-pools-device-tracking.md)
+ [Verwendung von Amazon Pinpoint für Benutzerpool-Analysen](cognito-user-pools-pinpoint-integration.md)
+ [E-Mail-Einstellungen für Amazon-Cognito-Benutzerpools](user-pool-email.md)
+ [Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools](user-pool-sms-settings.md)

# Aktualisierung der Benutzerpool- und App-Client-Konfiguration
<a name="cognito-user-pool-updating"></a>

Wenn Sie eine Einstellung in einem Benutzerpool oder App-Client ändern möchten, können Sie das Update mit wenigen Klicks in der Amazon Cognito Cognito-Konsole anwenden. Sie navigieren durch die funktionsbasierten Registerkarten in Ihren Benutzerpool-Einstellungen und Aktualisierungsfeldern, wie in anderen Bereichen dieses Handbuchs beschrieben.

Viele Organisationen verwalten ihre Ressourcen programmgesteuert in Anwendungen AWS CloudFormation, die auf dem CDK AWS SDKs oder CDK basieren, und anderer Automatisierungssoftware. Wenn dies Ihr Ressourcenverwaltungsmodell ist, müssen Sie besonders vorsichtig sein, wenn Sie Änderungen an Ihren Ressourcen vornehmen.

Die API-Operationen [ UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)und die [ UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)Aktualisierung eines vorhandenen Benutzerpools oder App-Clients. Für jedes Attribut gibt es eine Warnung in der API-Referenz: *Wenn Sie keinen Wert für ein Attribut angeben, setzt Amazon Cognito es auf den Standardwert*. Wenn Sie eine Aktualisierungsanfrage mit nur einem Parameter einreichen, setzt Amazon Cognito diesen Parameter auf den Wert Ihrer Wahl und setzt alle anderen auf einen Standardwert. Dadurch können Konfigurationen wie Ihr Attributschema, Ihre Lambda-Trigger und Ihre E-Mail- und SMS-Nachrichtenkonfiguration zurückgesetzt werden.

Darüber hinaus sind einige Einstellungen gesperrt, nachdem Sie Ihren Benutzerpool oder App-Client erstellt haben. Sie können sie nur ändern, wenn Sie eine neue Ressource erstellen.

**Topics**
+ [Einstellungen, die Sie nicht ändern können](#cognito-user-pool-updating-fixed-settings)
+ [SMS-Konfiguration](#cognito-user-pool-updating-sms)
+ [Aktualisierung eines Benutzerpools mit einem AWS SDK oder einer REST-API AWS CDK](#cognito-user-pool-updating-api-cli)

## Einstellungen, die Sie nicht ändern können
<a name="cognito-user-pool-updating-fixed-settings"></a>

Nachdem Sie einen Benutzerpool erstellt haben, können Sie einige dieser Einstellungen nicht mehr ändern. Wenn Sie die folgenden Einstellungen ändern möchten, müssen Sie einen neuen Benutzerpool oder App-Client erstellen.

**Anmerkung**  
Bisher konnten Sie den Namen eines Benutzerpools nicht ändern. Das hat sich geändert. Sie können Ihren Benutzerpools jetzt neue benutzerfreundliche Namen zuweisen.

**Benutzerpool-ID**  
Name des API-Parameters: [Id/ UserPoolId](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-ID)  
Die Benutzerpool-ID wird `us-east-1_EXAMPLE` beispielsweise automatisch von Amazon Cognito generiert und kann nicht geändert werden.

**Anmeldeoptionen für den Amazon-Cognito-Benutzerpool**  
API-Parameternamen: [AliasAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AliasAttributes)und [UsernameAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UsernameAttributes)  
Die Attribute, die Ihre Benutzer beim Anmelden als Benutzernamen übergeben können. Wenn Sie einen Benutzerpool erstellen, können Sie die Anmeldung mit Benutzername, E-Mail-Adresse, Telefonnummer oder einem bevorzugten Benutzernamen zulassen. Wenn Sie die Anmeldeoptionen für den Benutzerpool ändern möchten, erstellen Sie einen neuen Benutzerpool.

**Make user name case sensitive (Groß- und Kleinschreibung bei Benutzernamen beachten)**  
API-Parametername: [UsernameConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UsernameConfiguration)  
Wenn Sie einen Benutzernamen erstellen, der mit Ausnahme der Groß-/Kleinschreibung mit einem anderen Benutzernamen übereinstimmt, kann Amazon Cognito diesen entweder als denselben Benutzer oder als eindeutigen Benutzer behandeln. Weitere Informationen finden Sie unter [Berücksichtigung der Groß-/Kleinschreibung im Benutzerpool](user-pool-case-sensitivity.md). Wenn Sie die Groß-/Kleinschreibung ändern möchten, erstellen Sie einen neuen Benutzerpool.

**Clientschlüssel**  
API-Parametername: [GenerateSecret](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-GenerateSecret)  
Wenn Sie einen App-Client erstellen, können Sie einen Client-Schlüssel generieren, damit nur vertrauenswürdige Quellen Anfragen an Ihren Benutzerpool stellen können. Weitere Informationen finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md). Wenn Sie einen Client-Schlüssel ändern möchten, erstellen Sie einen neuen App-Client im selben Benutzerpool.

**Erforderliche Attribute**  
API-Parametername: [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
Die Attribute, für die Ihre Benutzer Werte angeben müssen, wenn sie sich anmelden oder wenn Sie sie erstellen. Weitere Informationen finden Sie unter [Mit Benutzerattributen arbeiten](user-pool-settings-attributes.md). Wenn Sie die erforderlichen Attribute ändern möchten, erstellen Sie einen neuen Benutzerpool.

**Benutzerdefinierte Attribute (Löschung)**  
API-Parametername: [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
Attribute mit benutzerdefinierten Namen. Sie können den Wert des benutzerdefinierten Attributs eines Benutzers ändern, aber Sie können kein benutzerdefiniertes Attribut aus Ihrem Benutzerpool löschen. Weitere Informationen finden Sie unter [Mit Benutzerattributen arbeiten](user-pool-settings-attributes.md). Wenn Sie die maximale Anzahl benutzerdefinierter Attribute erreicht haben und die Liste ändern möchten, erstellen Sie einen neuen Benutzerpool.

## SMS-Konfiguration
<a name="cognito-user-pool-updating-sms"></a>

Nachdem Sie SMS-Nachrichten in Ihrem Benutzerpool aktiviert haben, können Sie sie nicht mehr deaktivieren.
+ Wenn Sie beim Erstellen eines Benutzerpools SMS-Nachrichten konfigurieren möchten, können Sie SMS nach Abschluss der Einrichtung nicht deaktivieren.
+ Sie können SMS-Nachrichten in einem Benutzerpool aktivieren, den Sie erstellt haben, aber danach können Sie SMS nicht mehr deaktivieren.
+ Amazon Cognito kann SMS-Nachrichten für die Einladung und Wiederherstellung von Benutzerkonten, die Überprüfung von Attributen und die Multi-Faktor-Authentifizierung (MFA) verwenden. Nachdem Sie SMS-Nachrichten aktiviert haben, können Sie SMS-Nachrichten für diese Funktionen jederzeit ein- oder ausschalten.
+ Die SMS-Nachrichtenkonfiguration umfasst eine IAM-Rolle, die Sie an Amazon Cognito delegieren, um Nachrichten mit Amazon SNS zu senden. Sie können die zugewiesene Rolle jederzeit ändern.

## Aktualisierung eines Benutzerpools mit einem AWS SDK oder einer REST-API AWS CDK
<a name="cognito-user-pool-updating-api-cli"></a>

In der Amazon Cognito Cognito-Konsole können Sie die Einstellungen Ihres Benutzerpools für jeden Parameter ändern. Um beispielsweise einen Lambda-Trigger hinzuzufügen, wählen Sie **Lambda-Trigger hinzufügen** und wählen die Funktion und den Triggertyp aus. Die Amazon Cognito Cognito-Benutzerpools-API ist so strukturiert, dass Aktualisierungsvorgänge für Benutzerpools und App-Clients alle Parameter für den Benutzerpool erfordern. Die Konsole automatisiert diesen Aktualisierungsvorgang jedoch auf transparente Weise mit Ihren anderen Benutzerpool-Einstellungen.

Möglicherweise stellen Sie manchmal fest, dass eine Änderung an einer anderen Stelle in Ihrem AWS-Konto System dazu führen kann, dass Updates einen Fehler generieren, wenn sie nicht mit der Einstellung zusammenhängen, die Sie ändern möchten. Eine gelöschte Amazon SES SES-Identität oder eine Änderung einer IAM-Berechtigung für AWS WAF, zum Beispiel. Wenn einer der aktuellen Parameter nicht mehr gültig ist, können Sie Ihre Einstellungen erst aktualisieren, wenn Sie ihn behoben haben. Wenn Sie auf einen solchen Fehler stoßen, überprüfen Sie die Fehlerreaktion und überprüfen Sie die darin erwähnte Einstellung.

Die [Amazon Cognito Cognito-Benutzerpools [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk), die REST-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) und [AWS SDKs](https://aws.amazon.com/developer/tools/)sind Tools für die Automatisierung und programmatische Konfiguration von Amazon Cognito Cognito-Ressourcen. Anfragen mit diesen Tools müssen ebenfalls, wie bei der Amazon Cognito-Konsole, eine Einstellung mit einer vollständigen Ressourcenkonfiguration im Anfragetext aktualisieren. Auf hoher Ebene müssen Sie den folgenden Prozess ausführen.

1. Erfassen Sie die Ausgabe eines Vorgangs, der die Konfiguration Ihrer vorhandenen Ressource beschreibt.

1. Ändern Sie die Ausgabe mit Ihren geänderten Einstellungen.

1. Senden Sie die geänderte Konfiguration in einem Vorgang, der Ihre Ressource aktualisiert.

Das folgende Verfahren aktualisiert Ihre Konfiguration mit dem [ UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Vorgang. Derselbe Ansatz mit unterschiedlichen Eingabefeldern gilt für [ UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).

**Wichtig**  
Wenn Sie keine Werte für vorhandene Parameter angeben, legt Amazon Cognito diese auf Standardwerte fest. Wenn Sie zum Beispiel einen vorhandenen `LambdaConfig`-Wert haben und einen `UpdateUserPool` mit einer leeren `LambdaConfig` senden, löschen Sie die Zuordnung aller Lambda-Funktionen zu Benutzerpool-Auslösern. Planen Sie entsprechend, wenn Sie Änderungen an Ihrer Benutzerpool-Konfiguration automatisieren möchten.

1. Erfassen Sie den aktuellen Status Ihres Benutzerpools mit [ DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html).

1. Formatieren Sie die Ausgabe von `DescribeUserPool` den [Anfrageparametern](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_RequestSyntax) von `UpdateUserPool` entsprechend. Entfernen Sie die folgenden Felder der obersten Ebene und ihre untergeordneten Objekte aus dem ausgegebenen JSON-Code.
   + `Arn`
   + `CreationDate`
   + `CustomDomain`
     + Aktualisieren Sie dieses Feld mit der [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html)API-Operation.
   + `Domain`
     + Aktualisieren Sie dieses Feld mit der [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html)API-Operation.
   + `EmailConfigurationFailure`
   + `EstimatedNumberOfUsers`
   + `Id`
   + `LastModifiedDate`
   + `Name`
   + `SchemaAttributes`
   + `SmsConfigurationFailure`
   + `Status`

1. Bestätigen Sie, dass der resultierende JSON-Code den [Anfrageparametern](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_RequestSyntax) von `UpdateUserPool` entspricht.

1. Ändern Sie alle Parameter, die Sie im resultierenden JSON-Code bearbeiten möchten.

1. Senden Sie eine API-Anfrage `UpdateUserPool` mit Ihrem modifizierten JSON-Code als Anforderungseingabe.

Sie können auch diese modifizierte Ausgabe `DescribeUserPool` im Parameter `--cli-input-json` von `update-user-pool` in der AWS CLI verwenden.

Führen Sie alternativ den folgenden AWS CLI Befehl aus, um JSON mit leeren Werten für die akzeptierten Eingabefelder für `update-user-pool` zu generieren. Anschließend können Sie diese Felder mit den vorhandenen Werten aus Ihrem Benutzerpool füllen.

```
aws cognito-idp update-user-pool --generate-cli-skeleton --output json
```

Führen Sie den folgenden Befehl aus, um dasselbe JSON-Objekt für einen App-Client zu erstellen.

```
aws cognito-idp update-user-pool-client --generate-cli-skeleton --output json
```

# Anwendungsspezifische Einstellungen mit App-Clients
<a name="user-pool-settings-client-apps"></a>

Ein Benutzerpool-App-Client ist eine Konfiguration innerhalb eines Benutzerpools, die mit einer Mobil- oder Webanwendung interagiert, welche sich bei Amazon Cognito authentifiziert. App-Clients können authentifizierte und nicht authentifizierte API-Operationen aufrufen und einige oder alle Attribute Ihrer Benutzer lesen oder ändern. Ihre App muss sich bei Operationen gegenüber dem App-Client identifizieren, um sich zu registrieren, anzumelden und mit vergessenen Passwörtern umzugehen. Diese API-Anforderungen müssen die Selbstidentifikation mit einer App-Client-ID und die Autorisierung mit einem optionalen Client-Geheimnis beinhalten. Sie müssen alle App-Clients IDs oder Secrets schützen, sodass nur autorisierte Client-Apps diese nicht authentifizierten Operationen aufrufen können. Wenn Sie Ihre App so konfigurieren, dass authentifizierte API-Anfragen mit AWS Anmeldeinformationen signiert werden, müssen Sie Ihre Anmeldeinformationen außerdem vor Benutzereinsicht schützen.

Sie können mehrere Apps für einen Benutzerpool erstellen. Ein App-Client kann mit der Codeplattform einer App oder einem separaten Mandanten in Ihrem Benutzerpool verknüpft sein. Beispielsweise können Sie eine App für eine serverseitige Anwendung und eine Android-App erstellen. Jede Anwendung hat eine eigene App-Client-ID.

Sie können Einstellungen für die folgenden Benutzerpoolfunktionen auf App-Client-Ebene anwenden:

1. [Analysen](cognito-user-pools-pinpoint-integration.md)

1. [Verwaltete Anmeldung](cognito-user-pools-managed-login.md) IdPs, Arten von Zuschüssen URLs, Rückrufe und Anpassungen

1. [Ressourcenserver und benutzerdefinierte Bereiche](cognito-user-pools-define-resource-servers.md)

1. [Schutz vor Bedrohungen](cognito-user-pool-settings-threat-protection.md)

1. [Lese- und Schreibberechtigungen für Attribute](user-pool-settings-attributes.md#user-pool-settings-attribute-permissions-and-scopes)

1. [Ablauf und Widerruf von Tokens](amazon-cognito-user-pools-using-tokens-with-identity-providers.md)

1. [Authentifizierungsabläufe](authentication.md#amazon-cognito-user-pools-authentication-flow)

## Arten von App-Clients
<a name="user-pool-settings-client-app-client-types"></a>

**Wenn Sie einen App-Client in Amazon Cognito erstellen, können Sie Optionen auf der Grundlage der OAuth Standardclienttypen **öffentlicher Client und vertraulicher Client** vorab ausfüllen.** Konfigurieren eines **vertraulichen Clients** mit einem **Clientschlüssel**. Weitere Informationen zu Client-Arten finden Sie unter [IETF RFC 6749 \$12.1](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).

**Öffentlicher Client**  
Ein öffentlicher Client läuft in einem Browser oder auf einem mobilen Gerät. Da er keine vertrauenswürdigen serverseitigen Ressourcen hat, hat es auch keinen Clientschlüssel.

**Vertraulicher Client**  
Ein vertraulicher Client verfügt über serverseitige Ressourcen, denen mit einem **Clientschlüssel** für nicht authentifizierte API-Vorgänge vertraut werden kann. Die App wird möglicherweise als Daemon- oder Shell-Skript auf Ihrem Backend-Server ausgeführt.

**Clientschlüssel**  
Ein geheimer Client-Schlüssel ist eine feste Zeichenfolge, die Ihre App in allen API-Anfragen an den App-Client verwenden muss. Ihr App-Client muss einen Clientschlüssel haben, um `client_credentials`-Erteilungen auszuführen. Weitere Informationen finden Sie unter [IETF RFC 6749 \$12.3.1](https://datatracker.ietf.org/doc/html/rfc6749#section-2.3.1).  
Jeder App-Client kann bis zu zwei Secrets gleichzeitig haben, sodass die Secret-Rotation ohne Ausfallzeiten möglich ist. Wenn Sie einen App-Client erstellen, können Sie entweder Amazon Cognito einen geheimen Wert generieren lassen oder Ihren eigenen benutzerdefinierten geheimen Wert angeben. Nach der Erstellung einer App können die Schlüssel nicht mehr geändert werden. Sie können mit der [AddUserPoolClientSecret](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddUserPoolClientSecret.html)API-Operation ein zweites Geheimnis hinzufügen, um Geheimnisse zu rotieren. Wenn Sie ein Geheimnis hinzufügen, können Sie entweder Amazon Cognito einen geheimen Wert generieren lassen oder Ihren eigenen benutzerdefinierten geheimen Wert angeben. Verwenden Sie den [DeleteUserPoolClientSecret](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClientSecret.html)API-Vorgang, um ein Geheimnis zu löschen. Sie können das einzige Geheimnis, das einem App-Client zugeordnet ist, nicht löschen. Ferner sind Sie in der Lage, eine Anwendung zu löschen und so den Zugriff über Apps zu blockieren, welche die jeweilige App-Client-ID verwenden.  
Die Amazon Cognito Cognito-Konsole erstellt App-Clients mit Client-Geheimnissen, wenn Sie die Optionen **Traditionelle Webanwendung** und **achine-to-machineM-Anwendung** als Anwendungstyp auswählen. Wählen Sie eine dieser Optionen, um einen geheimen Clientschlüssel zu generieren, oder erstellen Sie den Client programmgesteuert mit [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)und stellen Sie ihn auf ein. `GenerateSecret` `true`

Sie können einen vertraulichen Client und einen Clientschlüssel mit einer öffentlichen App verwenden. Verwenden Sie einen CloudFront Amazon-Proxy, um einen `SECRET_HASH` In-Transit hinzuzufügen. Weitere Informationen finden Sie im AWS Blog unter [Schützen öffentlicher Clients für Amazon Cognito mithilfe eines CloudFront Amazon-Proxys](https://aws.amazon.com/blogs/security/protect-public-clients-for-amazon-cognito-by-using-an-amazon-cloudfront-proxy/).

## JSON-Webtoken
<a name="user-pool-settings-client-app-token-types"></a>

Amazon Cognito-App-Clients können JSON-Webtoken (JWTs) der folgenden Typen ausgeben.

**Identitätstoken (ID)**  
Eine überprüfbare Aussage, dass Ihr Benutzer in Ihrem Benutzerpool authentifiziert wurde. OpenID Connect (OIDC) hat die [ID-Token-Spezifikation](https://openid.net/specs/openid-connect-core-1_0.html#IDToken) zu den in 2.0 definierten Standards für Zugriffs- und Aktualisierungstoken hinzugefügt. OAuth Das ID-Token enthält Identitätsinformationen wie Benutzerattribute, die Ihre App verwenden kann, um ein Benutzerprofil zu erstellen und Ressourcen bereitzustellen. Weitere Informationen finden Sie unter [Grundlegendes zum Identitätstoken (ID)](amazon-cognito-user-pools-using-the-id-token.md).

**Zugriffstoken**  
Eine überprüfbare Erklärung zu den Zugriffsrechten Ihres Benutzers. Das [Zugriffstoken enthält Bereiche](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3), eine Funktion von OIDC und 2.0. OAuth Ihre App kann Back-End-Ressourcen Bereiche präsentieren und nachweisen, dass Ihr Benutzerpool einen Benutzer oder eine Maschine autorisiert hat, um auf Daten von einer API oder auf ihre eigenen Benutzerdaten zuzugreifen. Ein Zugriffstoken mit *benutzerdefinierten Bereichen*, häufig aus einer Erteilung von M2M-Client-Anmeldeinformationen, autorisiert den Zugriff auf einen Ressourcenserver. Weitere Informationen finden Sie unter [Das Zugriffstoken verstehen](amazon-cognito-user-pools-using-the-access-token.md).

**Aktualisierungstoken**  
Eine verschlüsselte Erklärung zur Erstauthentifizierung, die Ihre App Ihrem Benutzerpool präsentieren kann, wenn die Token Ihrer Benutzer ablaufen. Eine Anforderung für ein Aktualisierungstoken gibt neue, noch nicht abgelaufene Zugriffs- und ID-Token zurück. Weitere Informationen finden Sie unter [Tokens aktualisieren](amazon-cognito-user-pools-using-the-refresh-token.md).

**Sie können den Ablauf dieser Token für jeden App-Client im App-Client-Menü Ihres Benutzerpools in der [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito/v2/idp/user-pools) festlegen.**

## App-Client-Bedingungen
<a name="cognito-user-pools-app-idp-settings-about"></a>

Die folgenden Begriffe sind verfügbare Eigenschaften von App-Clients in der Amazon-Cognito-Konsole.

**Rückruf erlaubt URLs**  
Eine Rückruf-URL gibt an, wohin der Benutzer nach erfolgreicher Anmeldung umgeleitet werden soll. Wählen Sie mindestens eine Rückruf-URL aus. Die Rückruf-URL muss:  
+ Eine absolute URI sein.
+ Vorab bei einem Client registriert worden sein.
+ Sie darf keine Fragment-Komponente enthalten.
Siehe [OAuth 2.0 — Endpunkt der Umleitung](https://tools.ietf.org/html/rfc6749#section-3.1.2).  
Amazon Cognito fordert `HTTPS` statt `HTTP`, außer nur für Testzwecke für `http://localhost`.  
App-Callbacks URLs wie diese `myapp://example` werden ebenfalls unterstützt.

**Abmelden erlaubt URLs**  
Eine Abmelde-URL gibt an, wohin Ihr Benutzer nach der Abmeldung umgeleitet werden soll.

**Festlegen von Lese- und Schreibberechtigungen**  
Ihr Benutzerpool kann viele Kunden haben, von denen jeder seinen eigenen App-Client hat und IdPs. Sie können Ihren App-Client so konfigurieren, dass er nur Lese- und Schreibzugriff auf die Benutzerattribute hat, die für die App relevant sind. In Fällen wie der machine-to-machine (M2M-) Autorisierung können Sie Zugriff auf keines Ihrer Benutzerattribute gewähren.  

**Überlegungen zur Konfiguration der Lese- und Schreibberechtigungen für Attribute**
+ Wenn Sie einen App-Client erstellen und die Lese- und Schreibberechtigungen für Attribute nicht anpassen, gewährt Amazon Cognito Lese- und Schreibberechtigungen für alle Benutzerpool-Attribute.
+ Sie können Schreibzugriff für unveränderliche [benutzerdefinierte Attribute](user-pool-settings-attributes.md#user-pool-settings-custom-attributes.title) gewähren. Ihr App-Client kann Werte in unveränderliche Attribute schreiben, wenn Sie einen Benutzer erstellen oder registrieren. Danach können Sie keine Werte mehr in unveränderliche benutzerdefinierte Attribute für den Benutzer schreiben.
+ App-Clients müssen Schreibzugriff auf die erforderlichen Attribute in Ihrem Benutzerpool haben. Die Amazon-Cognito-Konsole legt die erforderlichen Attribute automatisch als schreibbar fest.
+ Sie können einem App-Client nicht erlauben, Schreibzugriff auf `email_verified` oder `phone_number_verified` zu haben. Ein Benutzerpool-Administrator kann diese Werte ändern. Ein Benutzer kann den Wert dieser Attribute nur durch [Attributüberprüfung](signing-up-users-in-your-app.md#allowing-users-to-sign-up-and-confirm-themselves.title) ändern.

**Authentifizierungsabläufe**  
Die Methoden, die Ihr App-Client für die Anmeldung zulässt. Ihre App kann die Authentifizierung mit Benutzername und Passwort, E-Mail- und SMS-Nachricht, Passkey-Authentifikatoren OTPs, benutzerdefinierte Authentifizierung mit Lambda-Triggern und Token-Aktualisierung unterstützen. Verwenden Sie als bewährte Sicherheitspraxis die SRP-Authentifizierung für die Authentifizierung von Benutzernamen und Passwörtern in maßgeschneiderten Anwendungen.

**Benutzerdefinierte Bereiche**  
Ein benutzerdefinierter Bereich ist ein Bereich, den Sie unter **Resource Servers (Ressourcen-Server)** für Ihre eigenen Ressourcenserver definieren. Das Format ist*resource-server-identifier*/*scope*. Siehe [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md).

**Standard-Umleitungs-URI**  
Ersetzt den `redirect_uri` Parameter in Authentifizierungsanfragen für Benutzer durch Drittanbieter IdPs. Konfigurieren Sie diese App-Client-Einstellung mit dem `DefaultRedirectURI` Parameter einer [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)oder [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API-Anfrage. Diese URL muss auch Mitglied des `CallbackURLs` für Ihren App-Client sein. Amazon Cognito leitet authentifizierte Sitzungen an diese URL weiter, wenn:  

1. Ihrem App-Client ist ein [Identitätsanbieter](#app-client-terms-identity-provider) zugewiesen und mehrere [Rückrufe URLs](#app-client-terms-callback-urls) definiert. Ihr Benutzerpool leitet Authentifizierungsanfragen an den [Autorisierungsserver](authorization-endpoint.md) an den Standard-Umleitungs-URI weiter, wenn sie keinen `redirect_uri` Parameter enthalten.

1. Ihrem App-Client ist ein [Identitätsanbieter](#app-client-terms-identity-provider) zugewiesen und ein [Callback URLs](#app-client-terms-callback-urls) definiert. In diesem Szenario ist es nicht erforderlich, eine Standard-Callback-URL zu definieren. Anfragen, die keinen `redirect_uri` Parameter enthalten, leiten zu der einen verfügbaren Callback-URL weiter.

**Identitätsanbieter**  
Sie können einige oder alle externen Identitätsanbieter (IdPs) Ihres Benutzerpools auswählen, um Ihre Benutzer zu authentifizieren. Ihr App-Client kann auch nur lokale Benutzer in Ihrem Benutzerpool authentifizieren. Wenn Sie Ihrem App-Client einen IdP hinzufügen, können Sie Autorisierungslinks für den IdP generieren und ihn auf Ihrer verwalteten Anmeldeseite anzeigen. Sie können mehrere zuweisen IdPs, müssen jedoch mindestens einen zuweisen. Weitere Informationen zur Verwendung von Extern IdPs finden Sie unter[Benutzerpool-Anmeldung mit externen Identitätsanbietern](cognito-user-pools-identity-federation.md).

**OpenID-Connect-Bereiche**  
Wählen Sie einen oder mehrere der folgenden `OAuth`-Bereiche aus, um die Zugriffsprivilegien, die für Zugriffs-Token eingestellt werden können, festzulegen.  
+ Der `openid`-Bereich gibt an, dass Sie ein ID-Token und die eindeutige ID eines Benutzers abrufen möchten. Außerdem werden alle oder einige Benutzerattribute angefordert, je nachdem welche zusätzlichen Bereiche in der Anfrage enthalten sind. Amazon Cognito gibt kein ID-Token zurück, es sei denn, Sie fordern den `openid`-Bereich an. Der `openid`-Bereich autorisiert Ansprüche auf strukturelle ID-Tokens wie Ablauf und Schlüssel-ID und bestimmt die Benutzerattribute, die Sie in einer Antwort von [UserInfo-Endpunkt](userinfo-endpoint.md) erhalten.
  + Wenn `openid` der einzige angeforderte Bereich ist, füllt Amazon Cognito das ID-Token mit allen Benutzerattributen, die der aktuelle App-Client lesen kann. Die `userInfo`-Antwort auf ein Zugriffs-Token mit nur diesem Bereich gibt alle Benutzerattribute zurück.
  + Wenn Sie `openid` mit anderen Bereichen wie `phone`, `email` oder `profile` anfordern, geben das ID-Token und `userInfo` die eindeutige ID des Benutzers und die durch die zusätzlichen Bereiche definierten Attribute zurück.
+ Der `phone`-Bereich genehmigt den Zugriff auf `phone_number` und `phone_number_verified`-Anfragen. Dieser Bereich kann ausschließlich mit dem `openid`-Bereich beantragt werden.
+ Der `email`-Bereich genehmigt den Zugriff auf `email` und `email_verified`-Anfragen. Dieser Bereich kann ausschließlich mit dem `openid`-Bereich beantragt werden.
+ Der `aws.cognito.signin.user.admin` Geltungsbereich gewährt Zugriff auf [API-Operationen für Amazon Cognito Cognito-Benutzerpools](authentication-flows-public-server-side.md#user-pools-API-operations), für die Zugriffstoken erforderlich sind, z. B. [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)und [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html).
+ Der `profile`-Bereich gewährt Zugriff auf alle Benutzerattribute, die vom Client gelesen werden können. Dieser Bereich kann ausschließlich mit dem `openid`-Bereich beantragt werden.
Weitere Informationen über Bereiche finden Sie in der Liste der [Standard-OIDC-Bereiche](http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).

**OAuth Arten von Zuschüssen**  
Ein OAuth Grant ist eine Authentifizierungsmethode, mit der Benutzerpool-Token abgerufen werden. Amazon Cognito unterstützt die folgenden Arten von Erteilungen. Um diese OAuth Zuschüsse in Ihre App zu integrieren, müssen Sie Ihrem Benutzerpool eine Domain hinzufügen.  
**Erteilung des Autorisierungscodes**  
Durch die Gewährung des Autorisierungscodes wird ein Code generiert, den Ihre App bei der/beim [Token-Endpunkt](token-endpoint.md) gegen Benutzerpool-Token eintauschen kann. Wenn Sie einen Autorisierungscode austauschen, erhält Ihre App die ID, den Zugriff und die Aktualisierungs-Token. Dieser OAuth Ablauf erfolgt, wie die implizite Gewährung, in den Browsern Ihrer Benutzer. Die Gewährung eines Autorisierungscodes ist die sicherste Art von Erteilung, die Amazon Cognito bietet, da Token in den Sitzungen Ihrer Benutzer nicht sichtbar sind. Stattdessen generiert Ihre App die Anfrage, die Token zurückgibt, und kann sie im geschützten Speicher zwischenspeichern. Weitere Informationen finden Sie unter *Autorisierungscode* in [IETF RFC 6749 \$11.3.1](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1).
Als bewährte Sicherheitsmethode in Apps für öffentliche Clients sollten Sie nur den OAuth Ablauf für die Gewährung von Autorisierungscodes aktivieren und Proof Key for Code Exchange (PKCE) implementieren, um den Token-Austausch einzuschränken. Mit PKCE kann ein Client nur dann einen Autorisierungscode austauschen, wenn er dem Token-Endpunkt denselben geheimen Schlüssel zur Verfügung gestellt hat, das in der ursprünglichen Authentifizierungsanfrage angegeben wurde. Weitere Informationen zu PKCE finden Sie unter [IETF RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636).
**Implizite Erteilung**  
Durch die implizite Erteilung wird der Browsersitzung Ihres Benutzers direkt aus der/dem [Autorisieren des Endpunkts](authorization-endpoint.md) ein Zugriffs- und ID-Token, jedoch kein Aktualisierungstoken, zur Verfügung gestellt. Durch eine implizite Erteilung muss keine separate Anfrage an den Token-Endpunkt mehr gestellt werden. Sie ist jedoch nicht mit PKCE kompatibel und gibt keine Aktualisierungstoken zurück. Diese Art der Erteilung eignet sich für Testszenarien und Anwendungsarchitekturen, bei denen Autorisierungscode-Erteilungen nicht abgeschlossen werden können. Weitere Informationen finden Sie unter *Implizite Erteilung* in [IETF RFC 6749 \$11.3.2](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.2). Sie können die Autorisierungscode-Erteilung und die implizite Codeerteilung in einem App-Client aktivieren und dann beide Erteilungen nach Bedarf verwenden.
**Erteilung von Client-Anmeldeinformationen**  
Die Erteilung von Kundenanmeldedaten ist für (M2M) -Kommunikation vorgesehen. machine-to-machine Autorisierungscode- und implizite Erteilungen geben Token an authentifizierte menschliche Benutzer aus. Kundenanmeldeinformationen gewähren eine bereichsabhängige Autorisierung von einem nicht interaktiven System zu einer API. Ihre App kann Kundenanmeldeinformationen direkt vom Token-Endpunkt anfordern und erhält ein Zugriffstoken. Weitere Informationen finden Sie unter *Client-Anmeldeinformationen* in [IETF RFC 6749 \$11.3.4](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.4). Sie können die Gewährung von Client-Anmeldeinformationen nur in App-Clients aktivieren, die über einen geheimen Client-Schlüssel verfügen und die weder Autorisierungscode- noch implizite Erteilungen unterstützen.
Da Sie den Prozess für Client-Anmeldeinformationen nicht als Benutzer aufrufen, können Sie mit dieser Erteilung nur *benutzerdefinierte* Bereiche zu Zugriffstoken hinzufügen. Ein benutzerdefinierter Bereich ist ein Bereich, den Sie für Ihre eigenen Ressourcenserver definieren. Standardbereiche wie `openid` und `profile` gelten nicht für nichtmenschliche Benutzer.  
Da es sich bei ID-Token um eine Überprüfung von Benutzerattributen handelt, sind sie für die M2M-Kommunikation nicht relevant und werden nicht durch Erteilungen für Kundenanmeldeinformationen ausgestellt. Siehe [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md).
Bei Zuschüssen mit Kundendaten fallen zusätzliche Kosten auf Ihre AWS Rechnung an. Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing).

## Erstellen eines App-Clients
<a name="cognito-user-pools-app-idp-settings-console-create"></a>

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

**So erstellen Sie einen App-Client (Konsole)**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool. Bei beiden Optionen werden Sie aufgefordert, einen App-Client mit anwendungsspezifischen Einstellungen zu konfigurieren.

1. Wählen Sie einen **Anwendungstyp**, der Ihrer Anwendungsarchitektur entspricht.

1. **Benennen Sie Ihre Anwendung** mit einer benutzerfreundlichen Kennung.

1. Geben Sie eine **Rückgabe-URL** ein.

1. Wählen Sie **Create app client**. Sie können erweiterte Optionen ändern, nachdem Sie Ihren App-Client erstellt haben.

1. Amazon Cognito führt Sie zu den App-Client-Details zurück. Um auf den Beispielcode für Ihre Anwendung zuzugreifen, wählen Sie auf der Registerkarte **Kurzanleitung zur Einrichtung** eine Plattform aus.

------
#### [ AWS CLI ]

```
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
```

**Anmerkung**  
Verwenden Sie das JSON-Format für Callback und Logout URLs , um zu verhindern, dass die CLI sie als Remote-Parameterdateien behandelt:  

```
--callback-urls "["https://example.com"]"
--logout-urls "["https://example.com"]"
```

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: [create-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html)

------
#### [ Amazon Cognito user pools API ]

Generieren Sie eine [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)API-Anfrage. Sie müssen einen Wert für alle Parameter angeben, die nicht auf einen Standardwert festgelegt werden sollen.

------

## Aktualisierung eines Benutzerpool-App-Clients (AWS CLI und einer AWS API)
<a name="cognito-user-pools-app-idp-settings-cli-api-update-user-pool-client"></a>

Geben Sie am den AWS CLI folgenden Befehl ein:

```
aws cognito-idp update-user-pool-client --user-pool-id  "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"
```

Wenn der Befehl erfolgreich ist, wird eine Bestätigung AWS CLI zurückgegeben:

```
{
    "UserPoolClient": {
        "ClientId": "MyClientID",
        "SupportedIdentityProviders": [
            "LoginWithAmazon",
            "MySAMLIdP"
        ],
        "CallbackURLs": [
            "https://example.com"
        ],
        "AllowedOAuthScopes": [
            "openid"
        ],
        "ClientName": "Example",
        "AllowedOAuthFlows": [
            "implicit",
            "code"
        ],
        "RefreshTokenValidity": 30,
        "AuthSessionValidity": 3,
        "CreationDate": 1524628110.29,
        "AllowedOAuthFlowsUserPoolClient": true,
        "UserPoolId": "MyUserPoolID",
        "LastModifiedDate": 1530055177.553
    }
}
```

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: [update-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html).

AWS API: [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)

## Informationen über einen Benutzerpool-App-Client (AWS CLI und eine AWS API) abrufen
<a name="cognito-user-pools-app-idp-settings-cli-api-describe-user-pool-client"></a>

```
aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID
```

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: [describe-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/describe-user-pool-client.html).

AWS API: [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html)

## Auflistung aller App-Client-Informationen in einem Benutzerpool (AWS CLI und einer AWS API)
<a name="cognito-user-pools-app-idp-settings-cli-api-list-user-pool-clients"></a>

```
aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3
```

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: [list-user-pool-clients](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/list-user-pool-clients.html).

AWS API: [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html)

## Löschen eines Benutzerpool-App-Clients (AWS CLI und einer AWS API)
<a name="cognito-user-pools-app-idp-settings-cli-api-delete-user-pool-client"></a>

```
aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"
```

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: [delete-user-pool-client](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/delete-user-pool-client.html)

AWS API: [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html)

# Verwendung von Benutzergeräten in Ihrem Benutzerpool
<a name="amazon-cognito-user-pools-device-tracking"></a>

Wenn Sie Benutzer des lokalen Benutzerpools mit der Amazon Cognito Cognito-Benutzerpool-API anmelden, können Sie die Aktivitätsprotokolle Ihrer Benutzer aus dem [Bedrohungsschutz](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-threat-protection.html) jedem ihrer Geräte zuordnen und Ihren Benutzern optional ermöglichen, die Multi-Faktor-Authentifizierung (MFA) zu überspringen, wenn sie sich auf einem vertrauenswürdigen Gerät befinden. Amazon Cognito fügt der Antwort auf jede Anmeldung, die noch keine Geräteinformationen enthält, einen Geräteschlüssel hinzu. Der Geräteschlüssel hat das Format `Region_UUID`. Mit einem Geräteschlüssel, einer Secure Remote Password (SRP)-Bibliothek und einem Benutzerpool, der die Geräteauthentifizierung ermöglicht, können Sie Benutzer in Ihrer App auffordern, dem aktuellen Gerät zu vertrauen, und bei der Anmeldung nicht mehr nach einem MFA-Code fragen.

**Topics**
+ [Einrichten von gespeicherten Geräten](#amazon-cognito-user-pools-setting-up-remembered-devices)
+ [Geräteschlüssel abrufen](#user-pools-remembered-devices-getting-a-device-key)
+ [Anmelden mit einem Gerät](#user-pools-remembered-devices-signing-in-with-a-device)
+ [Geräte anzeigen, aktualisieren und vergessen](#user-pools-remembered-devices-viewing-updating-forgetting)

## Einrichten von gespeicherten Geräten
<a name="amazon-cognito-user-pools-setting-up-remembered-devices"></a>

Mit Amazon Cognito-Benutzerpools können Sie jedes Gerät Ihrer Benutzer mit einer eindeutigen Gerätekennung verknüpfen, also einem Geräteschlüssel. Wenn Sie den Geräteschlüssel vorlegen und die Geräteauthentifizierung bei der Anmeldung durchführen, können Sie Ihre Anwendung mit einem Authentifizierungsablauf für *vertrauenswürdige* Geräte konfigurieren. In diesem Ablauf kann Ihre Anwendung Benutzern die Möglichkeit bieten, sich bis zu einem späteren Zeitpunkt ohne MFA anzumelden, je nach den Sicherheitsanforderungen Ihrer App oder den Präferenzen Ihrer Benutzer. Am Ende dieses Zeitraums muss Ihre Anwendung den Gerätestatus auf *Nicht gespeichert* ändern und der Benutzer muss sich mit MFA anmelden, bis er bestätigt, dass er sich ein Gerät merken möchte. Ihre Anwendung könnte Ihre Benutzer beispielsweise dazu auffordern, einem Gerät 30, 60 oder 90 Tage lang zu vertrauen. Sie können dieses Datum in einem benutzerdefinierten Attribut speichern und an diesem Datum den gespeicherten Status ihres Geräts ändern. Sie müssen Ihren Benutzer dann erneut auffordern, einen MFA-Code einzureichen und das Gerät so einrichten, dass es nach erfolgreicher Authentifizierung wieder gespeichert wird.

1. Gespeicherte Geräte können MFA nur in Benutzerpools mit aktivem MFA überschreiben.

Wenn sich ein Benutzer mit einem gespeicherten Gerät anmeldet, müssen Sie während des Authentifizierungsvorgangs eine zusätzliche Geräteauthentifizierung durchführen. Weitere Informationen finden Sie unter [Anmelden mit einem Gerät](#user-pools-remembered-devices-signing-in-with-a-device).

**Konfigurieren Sie Ihren Benutzerpool im **Anmeldemenü** Ihres Benutzerpools unter Geräteverfolgung so, dass er sich Geräte merkt.** Wenn Sie die Funktionalität der gespeicherten Geräte über die Amazon-Cognito-Konsole einrichten, haben Sie drei Optionen: **Immer**, **Benutzerabonnement** und **Nein**.

**Don’t remember (Nicht speichern)**  
Ihr Benutzerpool fordert Benutzer nicht auf, sich an Geräte zu erinnern, wenn sie sich anmelden.

**Always remember (Immer speichern)**  
Wenn Ihre App das Gerät eines Benutzers bestätigt, erinnert sich Ihr Benutzerpool immer an das Gerät und gibt bei zukünftigen erfolgreichen Geräteanmeldungen keine MFA-Aufforderung zurück.

**User opt-in (Benutzer-Opt-in)**  
Wenn Ihre App das Gerät eines Benutzers bestätigt, unterdrückt Ihr Benutzerpool nicht automatisch eine MFA-Aufforderung. Fordern Sie Ihre Benutzer auf, auszuwählen, ob sie sich an ihr Gerät erinnern möchten.

Wenn Sie **Always remember** oder **User Opt-In** wählen, generiert Amazon Cognito jedes Mal, wenn sich ein Benutzer von einem unbekannten Gerät aus anmeldet, einen Gerätekennungsschlüssel und ein Geheimnis. Der Geräteschlüssel ist die erste Kennung, die Ihre App an Ihren Benutzerpool sendet, wenn Ihr Benutzer die Geräteauthentifizierung durchführt.

Bei jedem bestätigten Benutzergerät, unabhängig davon, ob es automatisch erinnert oder angemeldet wurde, können Sie den Gerätekennungsschlüssel und das Geheimnis verwenden, um ein Gerät bei jeder Benutzeranmeldung zu authentifizieren. 

Sie können die Einstellungen für gespeicherte Geräte auch in einer [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 für Ihren Benutzerpool konfigurieren. Weitere Informationen finden Sie in der [DeviceConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-DeviceConfiguration)Unterkunft.

Die Benutzerpool-API von Amazon Cognito bietet zusätzliche Funktionen für gespeicherte Geräte.

1. [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html)und [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html)gibt eine Liste der Geräteschlüssel und ihrer Metadaten für einen Benutzer zurück.

1. [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html)und [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html)gibt den Geräteschlüssel und die Metadaten für ein einzelnes Gerät zurück.

1. [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html)und [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)legen Sie das Gerät eines Benutzers als gespeichert oder nicht gespeichert fest.

1. [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html)und das bestätigte Gerät eines Benutzers aus seinem Profil [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html)entfernen.

API-Operationen, deren Namen mit `Admin` beginnen, sind für die Verwendung in serverseitigen Apps vorgesehen und müssen mit IAM-Anmeldeinformationen autorisiert werden. Weitere Informationen finden Sie unter [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations).

## Geräteschlüssel abrufen
<a name="user-pools-remembered-devices-getting-a-device-key"></a>

Jedes Mal, wenn sich Ihr Benutzer mit der Benutzerpools-API anmeldet und keinen Geräteschlüssel als `DEVICE_KEY` in die Authentifizierungsparameter einbezieht, gibt Amazon Cognito in der Antwort einen neuen Geräteschlüssel zurück. Platzieren Sie den Geräteschlüssel in Ihrer öffentlichen clientseitigen App im App-Speicher, damit Sie ihn in zukünftige Anfragen aufnehmen können. Legen Sie in Ihrer vertraulichen serverseitigen App ein Browser-Cookie oder ein anderes clientseitiges Token mit dem Geräteschlüssel Ihres Benutzers fest.

Bevor sich Ihr Benutzer mit seinem vertrauenswürdigen Gerät anmelden kann, muss Ihre App den Geräteschlüssel bestätigen und zusätzliche Informationen bereitstellen. Generieren [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)Sie eine Anfrage an Amazon Cognito, die das Gerät Ihres Benutzers mit dem Geräteschlüssel, einem benutzerfreundlichen Namen, einer Kennwortverifizierung und einem Salt bestätigt. Wenn Sie Ihren Benutzerpool für die Opt-in-Geräteauthentifizierung konfiguriert haben, beantwortet Amazon Cognito Ihre `ConfirmDevice`-Anfrage mit der Aufforderung, dass Ihr Benutzer wählen muss, ob das aktuelle Gerät gespeichert werden soll. Antworten Sie in einer Anfrage mit der Auswahl Ihres Benutzers. [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) 

Wenn Sie das Gerät Ihres Benutzers bestätigen, es aber nicht als gespeichert festlegen, speichert Amazon Cognito die Zuordnung, fährt aber mit der geräteunabhängigen Anmeldung fort, wenn Sie den Geräteschlüssel angeben. Geräte können Protokolle generieren, die für die Benutzersicherheit und die Fehlerbehebung nützlich sind. Ein bestätigtes Gerät, das nicht gespeichert wurde, nutzt die Anmeldefunktion nicht, wohl aber die Funktion der Sicherheitsüberwachungsprotokolle. Wenn Sie den Bedrohungsschutz für Ihren App-Client aktivieren und in Ihrer Anfrage einen Gerätefingerabdruck kodieren, ordnet Amazon Cognito Benutzerereignisse dem bestätigten Gerät zu. 

**So rufen Sie einen neuen Geräteschlüssel ab**

1. Starten Sie die Anmeldesitzung Ihres Benutzers mit einer [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Anfrage.

1. Beantworten Sie alle Authentifizierungsherausforderungen so lange, [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)bis Sie JSON-Webtoken (JWTs) erhalten, die die Anmeldesitzung Ihres Benutzers als abgeschlossen kennzeichnen.

1. Notieren Sie in Ihrer App die Werte, die Amazon Cognito in `NewDeviceMetadata` in seiner `RespondToAuthChallenge`- oder `InitiateAuth`-Antwort zurückgibt: `DeviceGroupKey` und `DeviceKey`.

1. Generieren Sie ein neues SRP-Geheimnis für Ihren Benutzer: eine Salt- und eine Passwortverifizierung. Diese Funktion ist in SDKs diesen SRP-Bibliotheken verfügbar.

1. Fordern Sie den Benutzer zur Eingabe eines Gerätenamens auf oder generieren Sie einen anhand der Geräteeigenschaften des Benutzers.

1. Geben Sie das Zugriffstoken, den Geräteschlüssel, den Gerätenamen und das SRP-Geheimnis Ihres Benutzers in einer [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)API-Anfrage an. Wenn in Ihrem Benutzerpool die Option **Always remember** aktiviert ist, ist die Registrierung Ihres Benutzers abgeschlossen.

1. Wenn Amazon Cognito `ConfirmDevice` mit `"UserConfirmationNecessary": true` beantwortet hat, fordern Sie Ihren Benutzer auf, auszuwählen, ob das Gerät gespeichert werden soll. Wenn sie bestätigen, dass sie sich das Gerät merken möchten, generieren Sie eine [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html)API-Anfrage mit dem Zugriffstoken, dem Geräteschlüssel und Ihrem Benutzer. `"DeviceRememberedStatus": "remembered"`

1. Wenn Sie Amazon Cognito angewiesen haben, das Gerät zu speichern, wird der Benutzer bei der nächsten Anmeldung anstelle einer MFA-Anfrage mit einer `DEVICE_SRP_AUTH`-Aufgabe konfrontiert.

## Anmelden mit einem Gerät
<a name="user-pools-remembered-devices-signing-in-with-a-device"></a>

Nachdem Sie das Gerät eines Benutzers so konfiguriert haben, dass es gespeichert wird, verlangt Amazon Cognito nicht mehr, dass er einen MFA-Code übermittelt, wenn er sich mit demselben Geräteschlüssel anmeldet. Die Geräteauthentifizierung ersetzt lediglich die MFA-Authentifizierungsaufgabe durch eine Geräteauthentifizierungsaufgabe. Sie können Ihre Benutzer nicht nur mit Geräteauthentifizierung anmelden. Ihre Benutzer müssen zuerst die Authentifizierung mit ihrem Passwort oder einer benutzerdefinierten Aufgabe abschließen. Im Folgenden wird der Authentifizierungsprozess für einen Benutzer auf einem gespeicherten Gerät beschrieben.

Um die Geräteauthentifizierung in einem Flow durchzuführen, der [Lambda-Trigger für benutzerdefinierte Authentifizierungsherausforderungen](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html) verwendet, übergeben Sie einen `DEVICE_KEY` Parameter in Ihrer [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Anfrage. Nachdem Ihr Benutzer alle Aufgaben erfolgreich gemeistert und die `CUSTOM_CHALLENGE`-Aufgabe den `issueTokens`-Wert `true` zurückgegeben hat, gibt Amazon Cognito eine letzte `DEVICE_SRP_AUTH`-Aufgabe zurück.

**So melden Sie sich mit einem Gerät an**

1. Rufen Sie den Geräteschlüssel Ihres Benutzers aus dem Client-Speicher ab.

1. Starten Sie die Anmeldesitzung Ihres Benutzers mit einer [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Anfrage. Wählen Sie einen `AuthFlow` aus `USER_SRP_AUTH`, `REFRESH_TOKEN_AUTH`, `USER_PASSWORD_AUTH` oder `CUSTOM_AUTH` aus. Fügen Sie in `AuthParameters` den Geräteschlüssel Ihres Benutzers zum `DEVICE_KEY`-Parameter hinzu und ergänzen Sie die anderen erforderlichen Parameter für das ausgewählte Anmeldeverfahren.

   1. Sie können `DEVICE_KEY` auch in den Parametern einer `PASSWORD_VERIFIER`-Antwort an eine Authentifizierungsaufgabe übermitteln.

1. Schließen Sie Aufgaben ab, bis Sie in der Antwort eine `DEVICE_SRP_AUTH`-Aufgabe erhalten.

1. Senden Sie in einer [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API-Anfrage ein `ChallengeName` von `DEVICE_SRP_AUTH` und Parameter für `USERNAME``DEVICE_KEY`, und`SRP_A`.

1. Amazon Cognito reagiert mit einer `DEVICE_PASSWORD_VERIFIER`-Aufgabe. Diese Aufgabenantwort enthält Werte für `SECRET_BLOCK` und `SRP_B`.

1. Generieren Sie mit Ihrer SRP-Bibliothek die Parameter `PASSWORD_CLAIM_SIGNATURE`, `PASSWORD_CLAIM_SECRET_BLOCK`, `TIMESTAMP`, `USERNAME` und `DEVICE_KEY` und übermitteln Sie sie. Versenden Sie sie in einer zusätzlichen `RespondToAuthChallenge`-Anfrage.

1. Schließe zusätzliche Herausforderungen ab, bis du die des Benutzers erhältst JWTs.

Der folgende Pseudocode zeigt, wie Sie Werte für Ihre Antwort auf die `DEVICE_PASSWORD_VERIFIER`-Aufgabe berechnen. Generieren Sie für die SRP-Authentifizierung mit einem Gerät ein *neues* SRP-Geheimnis für Ihren Benutzer: ein neues Passwort mit hoher Entropie`DeviceSecret`, ein Salt und den zugehörigen Passwort-Verifier. Diese Werte unterscheiden sich von Passwort, Salt und Verifier, die für die SRP-Authentifizierung des Benutzers verwendet werden. Sie werden nur für die Geräteauthentifizierung verwendet und nur auf dem Gerät gespeichert. Funktionen zum Generieren der SRP-Geheimnisse für Benutzergeräte sind in verschiedenen [SRP-Bibliotheken](https://github.com/secure-remote-password/implementations) verfügbar. SDKs

```
PASSWORD_CLAIM_SECRET_BLOCK = SECRET_BLOCK
TIMESTAMP = "Tue May 7 00:09:40 UTC 2025"
k = SHA256(N || g) as a non-negative integer in big-endian
u = SHA256(SRP_A || SRP_B) as a non-negative integer in big-endian
x = SHA256(salt || SHA256(DeviceGroupKey || DeviceKey || ":" || DeviceSecret)) as a non-negative integer in big-endian
S_USER = (SRP_B - k * g^x)^(a + u * x) % N
K_USER = HKDF_HMAC_SHA256(salt=u, ikm=S_USER, info="Caldera Derived Key", length=16 bytes)
PASSWORD_CLAIM_SIGNATURE = Base64(HMAC_SHA256(key=K_USER, message=(DeviceGroupKey || DeviceKey || PASSWORD_CLAIM_SECRET_BLOCK || TIMESTAMP)))
```

## Geräte anzeigen, aktualisieren und vergessen
<a name="user-pools-remembered-devices-viewing-updating-forgetting"></a>

Mit der Amazon Cognito-API können Sie die folgenden Funktionen in Ihrer App implementieren.

1. Informationen über das aktuelle Gerät eines Benutzers anzeigen.

1. Eine Liste aller Geräte Ihres Benutzers anzeigen.

1. Ein Gerät verwerfen.

1. Den gespeicherten Status eines Geräts aktualisieren.

Die Zugriffstoken, die die API-Anfragen in den folgenden Beschreibungen autorisieren, müssen den Geltungsbereich `aws.cognito.signin.user.admin` enthalten. Amazon Cognito fügt allen Zugriffstoken, die Sie mit der Benutzerpool-API von Amazon Cognito generieren, einen Antrag für diesen Bereich hinzu. Drittanbieter IdPs müssen Geräte und MFA für ihre Benutzer, die sich bei Amazon Cognito authentifizieren, separat verwalten. Bei der verwalteten Anmeldung können Sie den `aws.cognito.signin.user.admin` Geltungsbereich anfordern, aber die verwaltete Anmeldung fügt automatisch Geräteinformationen zu den Benutzerprotokollen mit erweiterter Sicherheit hinzu und bietet nicht an, sich Geräte zu merken.

**Informationen zu einem Gerät anzeigen**  
Sie können Informationen über das Gerät eines Benutzers abfragen, um festzustellen, ob es derzeit noch verwendet wird. Möglicherweise möchten Sie gespeicherte Geräte deaktivieren, nachdem 90 Tage lang keine Anmeldung stattgefunden hat. 
+ Um die Geräteinformationen Ihres Benutzers in einer öffentlichen Client-App anzuzeigen, reichen Sie den Zugriffs- und Geräteschlüssel Ihres Benutzers in einer [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html)API-Anfrage ein.
+ Um die Geräteinformationen Ihres Benutzers in einer vertraulichen Client-App anzuzeigen, signieren Sie eine [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html)API-Anfrage mit AWS Anmeldeinformationen und geben Sie den Benutzernamen, den Geräteschlüssel und den Benutzerpool Ihres Benutzers ein.

**Eine Liste aller Geräte Ihres Benutzers anzeigen**  
Sie können eine Liste aller Geräte Ihrer Benutzer und ihrer Eigenschaften anzeigen. Möglicherweise möchten Sie beispielsweise überprüfen, ob das aktuelle Gerät mit einem gespeicherten Gerät übereinstimmt. 
+ Reichen Sie in einer öffentlichen Client-App das Zugriffstoken Ihres Benutzers in einer API-Anfrage ein. [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html)
+ Unterschreiben Sie in einer App für vertrauliche Clients eine [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html)API-Anfrage mit AWS Anmeldeinformationen und geben Sie den Benutzernamen und den Benutzerpool Ihres Benutzers ein.

**Ein Gerät verwerfen**  
Sie können den Geräteschlüssel eines Benutzers löschen. Sie sollten dies tun, wenn Sie feststellen, dass Ihr Benutzer ein Gerät nicht mehr verwendet, oder wenn Sie ungewöhnliche Aktivitäten feststellen und einen Benutzer auffordern möchten, die MFA erneut abzuschließen. Um das Gerät später erneut zu registrieren, müssen Sie einen neuen Geräteschlüssel generieren und speichern.
+ Reichen Sie in einer öffentlichen Client-App den Geräteschlüssel und das Zugriffstoken Ihres Benutzers in einer API-Anfrage ein. [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html)
+ Reichen Sie in einer vertraulichen Client-App den Geräteschlüssel und das Zugriffstoken Ihres Benutzers in einer API-Anfrage ein. [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html)

# Verwendung von Amazon Pinpoint für Benutzerpool-Analysen
<a name="cognito-user-pools-pinpoint-integration"></a>

**Anmerkung**  
**Hinweis zum Ende des Supports:** Am 30. Oktober 2026 AWS wird der Support für Amazon Pinpoint eingestellt. Nach dem 30. Oktober 2026 können Sie nicht mehr auf die Amazon-Pinpoint-Konsole oder die Amazon-Pinpoint-Ressourcen (Endpunkte, Segmente, Kampagnen, Journeys und Analytik) zugreifen. Weitere Informationen finden Sie unter [Ende des Amazon-Pinpoint-Supports](https://docs.aws.amazon.com/console/pinpoint/migration-guide). **Hinweis:** APIs In Bezug auf SMS sind Sprach-, mobile Push-, OTP- und Telefonnummernvalidierung von dieser Änderung nicht betroffen und werden von AWS End User Messaging unterstützt.

Amazon-Cognito-Benutzertools sind in Amazon Pinpoint integriert, um Analysen für Amazon-Cognito-Benutzerpools bereitzustellen und die Benutzerdaten für Amazon-Pinpoint-Kampagnen zu ergänzen. Amazon Pinpoint bietet Analysen und gezielte Werbekampagnen, um die Nutzerbindung in mobilen Anwendungen mithilfe von Push-Benachrichtigungen zu unterstützen. Mit der Unterstützung von Amazon Pinpoint Analytics in Amazon Cognito Cognito-Benutzerpools können Sie Benutzerpool-Anmeldungen, Anmeldungen, fehlgeschlagene Authentifizierungen, täglich aktive Benutzer (DAUs) und monatlich aktive Benutzer (MAUs) in der Amazon Pinpoint Pinpoint-Konsole verfolgen. Sie können Daten für unterschiedliche Datenbereiche oder Attribute weiter aufschlüsseln, wie z. B. Geräteplattform, Gerätestandort und App-Version.

Sie können auch benutzerdefinierte Attribute für Ihre App einrichten. Diese können dann verwendet werden, um Ihre Benutzer auf Amazon Pinpoint zu segmentieren und ihnen gezielte Push-Benachrichtigungen zu senden. Wenn Sie in der **Analytics-Konfiguration** für Ihren App-Client im Menü **App-Clients** in der **Amazon Cognito-Konsole Benutzerattributdaten mit Amazon Pinpoint teilen** wählen, erstellt Amazon Pinpoint zusätzliche Endpunkte für Benutzer-E-Mail-Adressen und Telefonnummern.

Wenn Sie Amazon-Pinpoint-Analytics in Ihrem Benutzerpool mit der Amazon-Cognito-Konsole aktivieren, erstellen Sie auch eine [serviceverknüpfte Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions), die Amazon Cognito übernimmt, wenn Amazon Pinpoint eine API-Anfrage für Ihren Benutzerpool stellt. Der IAM-Principal, der Ihre Analytics-Konfiguration hinzufügt, muss über Berechtigungen verfügen. [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) Die mit dem Dienst verknüpfte Rolle ist. [AWSServiceRoleForAmazonCognitoIdp](https://console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/AWSServiceRoleForAmazonCognitoIdp) Weitere Informationen finden Sie unter [Verwendung von serviceverknüpften Rollen für Amazon Cognito](using-service-linked-roles.md).

Wenn Sie in der Amazon-Cognito-API eine `AnalyticsConfiguration` auf Ihren App-Client anwenden, können Sie Amazon Pinpoint eine benutzerdefinierte IAM-Rolle und eine externe ID zuweisen, um die Rolle zu übernehmen. Die Rolle muss dem `cognito-idp`-Service-Prinzipal vertrauen, und wenn die Richtlinie zur Rollenvertraulichkeit eine externe ID erfordert, muss diese mit Ihrer `AnalyticsConfiguration` übereinstimmen. Sie müssen der Rolle `cognito-idp:Describe*`-Berechtigungen und die folgenden Berechtigungen für Ihr **Amazon-Pinpoint-Projekt** gewähren.
+ `mobiletargeting:UpdateEndpoint`
+ `mobiletargeting:PutEvents`

## Verfügbarkeit der Amazon-Cognito- und Amazon-Pinpoint-Regionen
<a name="cognito-user-pools-find-region-mappings"></a>

Die folgende Tabelle zeigt die AWS-Region Zuordnungen zwischen Amazon Cognito und Amazon Pinpoint, die eine der folgenden Bedingungen erfüllen.
+ Sie können nur ein Amazon-Pinpoint-Projekt in der Region USA Ost (Nord-Virginia) (us-east-1) verwenden.
+ Sie können ein Amazon-Pinpoint-Projekt in derselben Region *oder* in der Region USA Ost (Nord-Virginia) (us-east-1) verwenden.

Standardmäßig kann Amazon Cognito Analysen nur an ein Amazon-Pinpoint-Projekt in derselben AWS-Region senden. Ausnahmen von dieser Regel sind die Regionen in der folgenden Tabelle und Regionen, in denen Amazon Pinpoint nicht verfügbar ist.

Amazon Pinpoint ist in den folgenden Regionen verfügbar. Amazon-Cognito-Benutzerpools in diesen Regionen unterstützen keine Analysen.
+ Europa (Milan)
+ Middle East (Bahrain)
+ Asien-Pazifik (Osaka)
+ Israel (Tel Aviv)
+ Afrika (Kapstadt)
+ Asien-Pazifik (Jakarta)
+ Asien-Pazifik (Malaysia)

Die Tabelle zeigt die Beziehung zwischen der Region, in der Sie Ihren Amazon-Cognito-Benutzerpool erstellt haben und die entsprechenden Region in Amazon Pinpoint. Sie müssen Ihr Amazon-Pinpoint-Projekt in einer verfügbaren Region konfigurieren, um es in Amazon Cognito zu integrieren.


| Region mit dem Amazon-Cognito-Benutzerpool | Region für das Amazon-Pinpoint-Projekt | 
| --- | --- | 
|  ap-northeast-1  |  us-east-1  | 
|  ap-northeast-2  |  us-east-1  | 
|  ap-south-1  |  us-east-1, ap-south-1  | 
|  ap-southeast-1  |  us-east-1  | 
|  ap-southeast-2  |  us-east-1, ap-southeast-2  | 
|  ca-central-1  |  us-east-1  | 
|  eu-central-1  |  us-east-1, eu-central-1  | 
|  eu-west-1  |  us-east-1, eu-west-1  | 
|  eu-west-2  |  us-east-1  | 
|  us-east-1  |  us-east-1  | 
|  us-east-2  |  us-east-1  | 
|  us-west-2  |  us-east-1, us-west-2  | 

**Beispiele für Regionsmappings**
+ Wenn Sie einen Benutzerpool in ap-northest-1 erstellen, können Sie Ihr Amazon-Pinpoint-Projekt in us-east-1 erstellen.
+ Wenn Sie einen Benutzerpool in ap-south-1 erstellen, können Sie Ihr Amazon-Pinpoint-Projekt entweder in us-east-1 oder in ap-south-1 erstellen.

**Anmerkung**  
Für alle AWS-Regionen außer denen in der obigen Tabelle kann Amazon Cognito nur ein Amazon Pinpoint Pinpoint-Projekt in derselben Region wie Ihr Benutzerpool verwenden. Wenn Amazon Pinpoint in der Region, in der Sie Ihren Benutzerpool erstellt haben, nicht verfügbar und nicht in der Tabelle aufgeführt ist, unterstützt Amazon Cognito keine Amazon-Pinpoint-Analysen in dieser Region. Ausführliche Informationen zu der AWS-Region finden Sie unter [Amazon-Pinpoint-Endpunkte und -Kontingente](https://docs.aws.amazon.com/general/latest/gr/pinpoint.html).

### Angeben von Amazon-Pinpoint-Analytics-Einstellungen (AWS-Managementkonsole)
<a name="cognito-user-pools-pinpoint-integration-console"></a>

Sie können Ihren Amazon-Cognito-Benutzerpool so konfigurieren, dass Analysedaten an Amazon Pinpoint gesendet werden. Amazon Cognito sendet nur für lokale Benutzer Analysedaten an Amazon Pinpoint. Nachdem Sie Ihren Benutzerpool für die Verknüpfung mit einem Amazon-Pinpoint-Projekt konfiguriert haben, müssen Sie `AnalyticsMetadata` in Ihre API-Anforderungen aufnehmen. Weitere Informationen finden Sie unter [Integrieren Ihrer App in Amazon Pinpoint](#cognito-user-pools-pinpoint-integration-client).

**Einstellung der Analysen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Sie werden möglicherweise aufgefordert, Ihre AWS -Anmeldeinformationen einzugeben.

1. Wählen Sie **User Pools** (Benutzerpools) und dann einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **App-Clients** und wählen Sie den App-Client aus, den Sie aktualisieren möchten.

1. Wählen Sie auf der Registerkarte **Analytics** unter **Pinpoint Analytics** die Option **Aktivieren** aus.

1. Wählen Sie eine **Pinpoint-Region** aus.

1. Wählen Sie ein **Amazon-Pinpoint-Projekt** oder **Create Amazon Pinpoint project** (Amazon-Pinpoint-Projekt erstellen) aus.
**Anmerkung**  
Die Amazon-Pinpoint-Projekt-ID ist eine für Ihr Amazon-Pinpoint-Projekt eindeutige 32 Zeichen lange Zeichenfolge. Sie wird in der Amazon-Pinpoint-Konsole aufgelistet.  
Sie können mehrere Amazon-Cognito-Apps auf ein einziges Amazon-Pinpoint-Projekt abbilden. Jede Amazon-Cognito-App kann jedoch nur auf ein Amazon-Pinpoint-Projekt abgebildet werden.  
In Amazon Pinpoint sollte jedes Projekts eine einzelne Anwendung sein. Wenn ein Spieleentwickler beispielsweise zwei Spiele hat, sollte jedes Spiel ein separates Amazon-Pinpoint-Projekt sein, auch wenn beide Spiele denselben Amazon-Cognito-Benutzerpool verwenden. Weitere Informationen zu Amazon-Pinpoint-Projekten finden Sie unter [Erstellen eines Projekts in Amazon Pinpoint.](https://docs.aws.amazon.com/push-notifications/latest/userguide/mobile-push.html#mobile-push-create-project) 

1. Wählen Sie unter **User data sharing** (Teilen von Benutzerdaten) **Share user data with Amazon Pinpoint** (Benutzerdaten mit Amazon Pinpoint teilen) aus, wenn Amazon Cognito E-Mail-Adressen und Telefonnummern an Amazon Pinpoint senden und zusätzliche Endpunkte für Benutzer erstellen soll. Nachdem Ihre Benutzer die E-Mail-Adresse und Telefonnummer verifiziert haben, teilt Amazon Cognito diese nur mit Amazon Pinpoint, wenn sie für das Benutzerkonto verfügbar sind.
**Anmerkung**  
Ein *Endpunkt* kennzeichnet auf eindeutige Weise ein Benutzergerät, zu dem Sie mit Amazon Pinpoint Push-Benachrichtigungen senden können. Weitere Informationen zu Endpunkten finden Sie unter [Addming endpoints](https://docs.aws.amazon.com/pinpoint/latest/developerguide/endpoints.html) (Hinzufügen von Endpunkten) im *Amazon-Pinpoint-Entwicklerhandbuch*.

1. Wählen Sie **Änderungen speichern ** aus.

### Angeben der Analyseeinstellungen (AWS CLI und der AWS API) von Amazon Pinpoint
<a name="cognito-user-pools-pinpoint-integration-cli-api"></a>

Verwenden Sie die folgenden Befehle für die Einstellungen der Amazon-Pinpoint-Analyse für Ihren Benutzerpool.

**Die Analyse-Einstellungen für die vorhandene Client-App Ihres Benutzerpools beim Erstellen der App festlegen**
+ AWS CLI: `aws cognito-idp create-user-pool-client`
+ AWS API: [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)

**Die Analyse-Einstellungen für die vorhandene Client-App Ihres Benutzerpools aktualisieren**
+ AWS CLI: `aws cognito-idp update-user-pool-client`
+ AWS API: [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)

**Anmerkung**  
Amazon Cognito unterstützt Integrationen in Regionen, wenn Sie `ApplicationArn` verwenden

## Integrieren Ihrer App in Amazon Pinpoint
<a name="cognito-user-pools-pinpoint-integration-client"></a>

Sie können Analysemetadaten in Amazon Pinpoint für *lokale Benutzer* von Amazon Cognito über die *Benutzerpool-API* veröffentlichen.

**Lokale Benutzer**  
Benutzer, die sich für ein Konto angemeldet haben oder in Ihrem Benutzerpool erstellt wurden, anstatt sich über einen externen Identitätsanbieter (IDP) anzumelden.

**Benutzerpool-API**  
Die Operationen, die Sie mithilfe einer App mit einer benutzerdefinierten Benutzeroberfläche (UI) in ein AWS SDK integrieren können. Sie können keine Analyse-Metadaten für föderierte oder lokale Benutzer weitergeben, die sich über eine verwaltete Anmeldung anmelden. Eine Liste der Benutzerpool-API-Vorgänge finden Sie in der [Amazon-Cognito-API-Referenz](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html).

Nachdem Sie Ihren Benutzerpool für die Veröffentlichung in einer Kampagne konfiguriert haben, übergibt Amazon Cognito Metadaten für die folgenden API-Vorgänge an Amazon Pinpoint.
+ `AdminInitiateAuth`
+ `AdminRespondToAuthChallenge`
+ `ConfirmForgotPassword`
+ `ConfirmSignUp`
+ `ForgotPassword`
+ `InitiateAuth`
+ `ResendConfirmationCode`
+ `RespondToAuthChallenge`
+ `SignUp`

Wenn Sie Metadaten über die Sitzung Ihres Benutzers an Ihre Amazon-Pinpoint-Kampagne übergeben möchten, nehmen Sie einen `AnalyticsEndpointId`-Wert in den `AnalyticsMetadata`-Parameter Ihrer API-Anfrage auf. Ein JavaScript Beispiel finden Sie unter [Warum erscheinen meine Amazon Cognito Cognito-Benutzerpool-Analysen nicht auf meinem Amazon Pinpoint Pinpoint-Dashboard](https://aws.amazon.com/premiumsupport/knowledge-center/pinpoint-cognito-user-pool-analytics/)? im *AWS Knowledge* Center.

# E-Mail-Einstellungen für Amazon-Cognito-Benutzerpools
<a name="user-pool-email"></a>

Bestimmte Ereignisse in Ihrer Anwendung können dazu führen, dass Amazon Cognito Ihren Benutzern E-Mails sendet. Wenn Sie beispielsweise Ihren Benutzerpool so konfigurieren, dass eine E-Mail-Verifizierung erforderlich ist, erhält der Benutzer eine E-Mail von Amazon Cognito, wenn er in Ihrer App ein neues Konto für sich anmeldet oder sein Passwort zurücksetzt. Abhängig von der Aktion, die die E-Mail initiiert, enthält die E-Mail einen Verifizierungscode oder ein temporäres Passwort.

Für die E-Mail-Zustellung können Sie eine der folgenden Optionen verwenden:
+ [Die Standard-E-Mail-Konfiguration](#user-pool-email-default), die in den Amazon Cognito-Service integriert ist.
+ [Ihre Amazon Simple Email Service-Konfiguration (Amazon SES)-Konfiguration](#user-pool-email-developer).

Sie können Ihre Zustelloption ändern, nachdem Sie Ihren Benutzerpool erstellt haben.

Amazon Cognito sendet Ihren Benutzern E-Mail-Nachrichten entweder mit einem Code, den sie eingeben können, oder mit einem URL-Link, den sie auswählen können. Die folgende Tabelle zeigt die Ereignisse, die eine E-Mail-Nachricht generieren können.

**Nachrichtenoptionen**


| Aktivität | API-Operation | Zustelloptionen | Formatierungsoptionen | Anpassbar | [Vorlage für eine Nachricht](cognito-user-pool-settings-message-customizations.md) | 
| --- |--- |--- |--- |--- |--- |
| Passwort vergessen | [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html), [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | E-Mail, SMS | Code | Ja | Bestätigungsnachricht | 
| Einladung | [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | E-Mail, SMS | Code | Ja | Einladungsnachricht | 
| Selbstregistrierung | [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html), [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | E-Mail, SMS | Code, Link | Ja | Bestätigungsnachricht | 
| Bestätigung der E-Mail-Adresse oder Telefonnummer | [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html), [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html), [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | E-Mail, SMS | Code | Ja | Bestätigungsnachricht | 
| Multifaktor-Authentifizierung (MFA) | [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | E-Mail¹, SMS, Authentifizierungs-App | Code | Ja² | MFA-Nachricht | 
| Einmalige Passwortauthentifizierung (OTP) | [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | E-Mail¹, SMS | Code | Ja | MFA-Nachricht ³ | 

¹ Erfordert den [Feature-Plan](cognito-sign-in-feature-plans.md) Essentials oder höher und [die E-Mail-Konfiguration von Amazon SES](#user-pool-email-developer). 

² Für SMS- und E-Mail-Nachrichten.

³ Sie können die MFA-Nachrichtenvorlage nur anpassen, wenn MFA in Ihrem Benutzerpool erforderlich oder optional ist. Wenn MFA inaktiv ist, sendet Amazon Cognito Einmalkennwörter mit der Standardvorlage.

Amazon SES berechnet Gebühren für E-Mail-Nachrichten. Weitere Informationen finden Sie unter [Amazon SES – Preise](https://aws.amazon.com/ses/pricing/).

Weitere Informationen zu E-Mail-MFA finden Sie unter[SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md).

Amazon Cognito verhindert möglicherweise die Zustellung zusätzlicher E-Mail- oder SMS-Nachrichten an ein einzelnes Ziel in einem kurzen Zeitraum. Wenn Sie glauben, dass Ihr Benutzerpool betroffen ist, konfigurieren und überprüfen Sie die [Protokolle auf Fehler bei der Nachrichtenzustellung](exporting-quotas-and-usage.md#exporting-quotas-and-usage-messages) und wenden Sie sich dann an Ihr Kundenbetreuungsteam.

## Standard-E-Mail-Konfiguration
<a name="user-pool-email-default"></a>

Amazon Cognito kann seine Standard-E-Mail-Konfiguration verwenden, um E-Mail-Lieferungen für Sie abzuwickeln. Mit der Standardoption begrenzt Amazon Cognito die Anzahl der pro Tag zugestellten E-Mails an Ihren Benutzerpool. Weitere Informationen zu Service Limits finden Sie unter [Kontingente in Amazon Cognito](quotas.md). In den meisten Produktionsumgebungen liegt das Limit der Standard-E-Mail-Funktionalität unter dem erforderlichen Zustellungsvolumen. Wenn Sie das Zustellungsvolumen erhöhen möchten, können Sie Ihre E-Mail-Konfiguration von Amazon SES verwenden.

Wenn Sie die Standardkonfiguration verwenden, verwenden Sie Amazon SES SES-Ressourcen, die von verwaltet werden, AWS um E-Mail-Nachrichten zu senden. Amazon SES fügt E-Mail-Adressen hinzu, die [permanente Unzustellbarkeit](https://docs.aws.amazon.com/ses/latest/dg/send-email-concepts-deliverability.html#send-email-concepts-deliverability-bounce) an eine [Unterdrückungsliste auf Kontoebene](https://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.html) oder eine [globale Unterdrückungsliste](https://docs.aws.amazon.com/ses/latest/dg/send-email-concepts-deliverability.html#send-email-concepts-deliverability-suppression-list) zurückgeben. Wenn eine E-Mail-Adresse, die nicht zugestellt werden kann, später zustellbar wird, können Sie nicht kontrollieren, ob sie aus der Unterdrückungsliste entfernt wird, solange Ihr Benutzerpool so konfiguriert ist, dass er die Standardkonfiguration verwendet. Eine E-Mail-Adresse kann auf unbestimmte Zeit auf der Liste mit AWS verwalteter Sperrung verbleiben. Verwenden Sie zum Verwalten nicht zustellbarer E-Mail-Adressen Ihre Amazon-SES-E-Mail-Konfiguration mit einer Unterdrückungsliste auf Kontoebene, wie im nächsten Abschnitt beschrieben.

Wenn Sie die Standard-E-Mail-Konfiguration verwenden, können Sie als Absenderadresse eine der folgenden E-Mail-Adressen verwenden:
+ Die Standard-E-Mail-Adresse *no-reply@verificationemail.com*.
+ Eine benutzerdefinierte E-Mail-Adresse. Bevor Sie Ihre eigene E-Mail-Adresse verwenden können, müssen Sie sie mit Amazon SES verifizieren und Amazon Cognito die Berechtigung zur Verwendung dieser Adresse erteilen.

## E-Mail-Konfiguration von Amazon SES
<a name="user-pool-email-developer"></a>

Ihre Anwendung erfordert möglicherweise ein höheres Zustellungsvolumen als es die Standardoption zulässt. Um das zulässige Zustellungsvolumen zu erhöhen, verwenden Sie Ihre Amazon SES-Ressourcen mit Ihrem Benutzerpool, um Ihren Benutzern eine E-Mail zu senden. Sie können auch [Ihre E-Mail-Versandaktivitäten überwachen](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html), wenn Sie E-Mail-Nachrichten mit Ihrer eigenen Amazon-SES-Konfiguration senden.

Bevor Sie Ihre Konfiguration für Amazon SES verwenden können, müssen Sie eine oder mehrere E-Mail-Adressen oder eine Domäne mit Amazon SES verifizieren. Verwenden Sie als Absender eine verifizierte E-Mail-Adresse oder eine Adresse aus einer verifizierten Domäne, die Sie Ihrem Benutzerpool zuweisen. Wenn Amazon Cognito E-Mails an einen Benutzer sendet, ruft es Amazon SES für Sie auf und verwendet Ihre E-Mail-Adresse.

Wenn Sie Ihre Amazon-SES-Konfiguration verwenden, gelten die folgenden Bedingungen:
+ Das E-Mail-Zustellungslimit für Ihren Benutzerpool entspricht dem Zustellungslimit Ihrer Amazon-SES-verifizierten E-Mail-Adresse in Ihrem AWS-Konto.
+ Sie können Ihre Nachrichten an nicht zustellbare E-Mail-Adressen mit einer Unterdrückungsliste auf Kontoebene in Amazon SES verwalten, die die [globale Unterdrückungsliste](https://docs.aws.amazon.com/ses/latest/dg/send-email-concepts-deliverability.html#send-email-concepts-deliverability-suppression-list) außer Kraft setzt. Wenn Sie eine Unterdrückungsliste auf Kontoebene verwenden, wirkt sich die Unzustellbarkeit von E-Mail-Nachrichten auf die Reputation Ihres Kontos als Absender aus. Weitere Informationen finden Sie unter [Verwenden der Unterdrückungsliste auf Kontoebene](https://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.html) im Entwicklerhandbuch für Amazon Simple Email Service.

### Regionen für die E-Mail-Konfiguration von Amazon SES
<a name="user-pool-email-developer-region-mapping"></a>

Für den AWS-Region Ort, an dem Sie einen Benutzerpool erstellen, gilt eine von drei Anforderungen für die Konfiguration von E-Mail-Nachrichten mit Amazon SES. Sie können E-Mail-Nachrichten von Amazon SES in derselben Region wie Ihr Benutzerpool, in mehreren Regionen, einschließlich derselben Region, oder in einer oder mehreren abgelegenen Regionen senden. Um eine optimale Leistung zu erzielen, senden Sie E-Mail-Nachrichten mit einer von Amazon SES verifizierten Identität in derselben Region wie Ihr Benutzerpool, sofern Sie die Möglichkeit dazu haben.Kategorien von regionalen Anforderungen für von Amazon SES verifizierte Identitäten

**Nur in der Region**  
Ihre Benutzerpools können genauso AWS-Region wie der Benutzerpool E-Mail-Nachrichten mit verifizierten Identitäten senden. In der Standard-E-Mail-Konfiguration ohne benutzerdefinierte `FROM` E-Mail-Adresse verwendet Amazon Cognito eine `no-reply@verificationemail.com` verifizierte Identität in derselben Region.

**Abwärtskompatibel**  
Ihre Benutzerpools können E-Mail-Nachrichten mit verifizierten Identitäten in derselben AWS-Region oder in einer der folgenden alternativen Regionen senden:   
+ USA Ost (Nord-Virginia)
+ USA West (Oregon)
+ Europa (Irland)
Diese Funktion unterstützt die Kontinuität von Benutzerpool-Ressourcen, die Sie möglicherweise erstellt haben, um den Amazon Cognito Cognito-Anforderungen zu entsprechen, als der Service gestartet wurde. Benutzerpools aus diesem Zeitraum konnten nur E-Mail-Nachrichten mit verifizierten Identitäten in einer begrenzten Anzahl von versenden. AWS-Regionen In der Standard-E-Mail-Konfiguration ohne benutzerdefinierte `FROM` E-Mail-Adresse verwendet Amazon Cognito eine `no-reply@verificationemail.com` verifizierte Identität in derselben Region.

**Alternative Region**  
Ihre Benutzerpools können E-Mail-Nachrichten mit verifizierten Identitäten in einer Alternative versenden AWS-Region , die sich außerhalb der Benutzerpoolregion befindet. Diese Konfiguration tritt auf, wenn Amazon SES in einer Region, in der Amazon Cognito verfügbar ist, nicht verfügbar ist.  
Die Amazon SES SES-Versandautorisierungsrichtlinie für Ihre verifizierte Identität in der alternativen Region muss dem Amazon Cognito-Service Principal der Ursprungsregion vertrauen. Weitere Informationen finden Sie unter [So gewähren Sie Berechtigungen zur Verwendung der Standard-E-Mail-Konfiguration](#user-pool-email-permissions-default).  
In einigen dieser Regionen teilt Amazon Cognito E-Mail-Nachrichten für die Standard-E-Mail-Konfiguration von auf zwei alternative Regionen auf. `COGNITO_DEFAULT` In diesen Fällen muss die Amazon SES-Versandautorisierungsrichtlinie für Ihre verifizierte Identität in jeder alternativen Region dem Amazon Cognito-Service Principal der Ursprungsregion vertrauen, um eine benutzerdefinierte `FROM` E-Mail-Adresse verwenden zu können. Weitere Informationen finden Sie unter [So gewähren Sie Berechtigungen zur Verwendung der Standard-E-Mail-Konfiguration](#user-pool-email-permissions-default). Wenn die Amazon SES SES-E-Mail-Konfiguration `DEVELOPER` in diesen Regionen aktiviert ist, müssen Sie eine verifizierte Identität in der *ersten* aufgelisteten Region verwenden und diese so konfigurieren, dass sie dem Amazon Cognito-Service Principal in der Benutzerpool-Region vertraut. Konfigurieren Sie beispielsweise in einem Benutzerpool im Mittleren Osten (VAE) eine verifizierte Identität in Europa (Frankfurt), die als vertrauenswürdig `cognito-idp.me-central-1.amazonaws.com` eingestuft wird. In der Standard-E-Mail-Konfiguration ohne benutzerdefinierte `FROM` E-Mail-Adresse verwendet Amazon Cognito in jeder Region eine `no-reply@verificationemail.com` verifizierte Identität.

**Anmerkung**  
Unter der folgenden Kombination von Bedingungen müssen Sie den `SourceArn` Parameter von [EmailConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-EmailConfiguration)mit einem Platzhalter im Element Region im Format angeben. `arn:${Partition}:ses:*:${Account}:identity/${IdentityName}` Auf diese Weise kann Ihr Benutzerpool in beiden Fällen E-Mail-Nachrichten mit identischen verifizierten AWS-Konto Identitäten versenden. AWS-Regionen  
Dein EmailSendingAccount ist`COGNITO_DEFAULT`.
Sie möchten eine benutzerdefinierte `FROM` Adresse verwenden.
Ihr Benutzerpool versendet E-Mails in einer **alternativen Region**.
Ihr Benutzerpool hat eine *zweite [1](#cognito-email-alternate-regions-note)***alternative Region**, die in der folgenden Tabelle der von **Amazon SES unterstützten Regionen** angegeben ist.

Wenn Sie einen Benutzerpool programmgesteuert erstellen — mit einem AWS SDK, der Amazon Cognito Cognito-API oder CLI AWS CDK, dem oder AWS CloudFormation— sendet Ihr Benutzerpool E-Mail-Nachrichten mit der Amazon SES SES-Identität, die der `SourceArn` Parameter von für Ihren Benutzerpool angibt. [EmailConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-EmailConfiguration) Die Amazon SES SES-Identität muss einen unterstützten Wert haben AWS-Region. Wenn Ihre `EmailSendingAccount` `COGNITO_DEFAULT` ist und Sie keinen `SourceArn`-Parameter angeben, sendet Amazon Cognito mit den Ressourcen in der Region, in der Sie Ihren Benutzerpool erstellt haben, E-Mail-Nachrichten von `no-reply@verificationemail.com`.

Die folgende Tabelle zeigt, AWS-Regionen wo Sie Amazon SES SES-Identitäten mit Amazon Cognito verwenden können.


| Region des Benutzerpools | Option Region | Von Amazon SES unterstützte Regionen | 
| --- | --- | --- | 
|  USA Ost (Nord-Virginia)  |  Abwärtskompatibel  |  USA West (Oregon), USA Ost (Nord-Virginia), Europa (Irland)  | 
|  USA Ost (Ohio)  |  Abwärtskompatibel  |  USA Ost (Ohio), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  USA West (Nordkalifornien)  |  Nur in der Region  |  USA West (Nordkalifornien)  | 
|  USA West (Oregon)  |  Abwärtskompatibel  |  USA West (Oregon), USA Ost (Nord-Virginia), Europa (Irland)  | 
|  Kanada (Zentral)  |  Abwärtskompatibel  |  Kanada (Zentral), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Kanada West (Calgary)  |  Alternative Region  |  Kanada (Zentral), USA West (Nordkalifornien) [1](#cognito-email-alternate-regions-note)  | 
|  Mexiko (Zentral)  |  Alternative Region  |  USA Ost (Nord-Virginia), USA West (Oregon) [1](#cognito-email-alternate-regions-note)  | 
|  Asien-Pazifik (Tokio)  |  Abwärtskompatibel  |  Asien-Pazifik (Tokio), USA West (Oregon), USA Ost (Nord-Virginia), Europa (Irland)  | 
|  Asien-Pazifik (Hongkong)  |  Alternative Region  |  Asien-Pazifik (Singapur), Asien-Pazifik (Tokio) [1](#cognito-email-alternate-regions-note)  | 
|  Asien-Pazifik (Seoul)  |  Abwärtskompatibel  |  Asien-Pazifik (Tokio), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
| Asien-Pazifik (Malaysia) | Alternative Region | Asien-Pazifik (Sydney), Asien-Pazifik (Singapur) [1](#cognito-email-alternate-regions-note) | 
| Asien-Pazifik (Thailand) | Alternative Region | Asien-Pazifik (Singapur), Asien-Pazifik (Mumbai) [1](#cognito-email-alternate-regions-note) | 
|  Asien-Pazifik (Mumbai)  |  Abwärtskompatibel  |  Asien-Pazifik (Mumbai), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Asien-Pazifik (Hyderabad)  |  Alternative Region  |  Asien-Pazifik (Mumbai), Asien-Pazifik (Singapur) [1](#cognito-email-alternate-regions-note)  | 
|  Asien-Pazifik (Singapur)  |  Abwärtskompatibel  |  Asien-Pazifik (Singapur), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Asien-Pazifik (Sydney)  |  Abwärtskompatibel  |  Asien-Pazifik (Sydney), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Asien-Pazifik (Osaka)  |  Nur in der Region  |  Asien-Pazifik (Osaka)  | 
|  Asien-Pazifik (Jakarta)  |  Nur in der Region  |  Asien-Pazifik (Jakarta)  | 
|  Asien-Pazifik (Melbourne)  |  Alternative Region  |  Asien-Pazifik (Sydney), Asien-Pazifik (Singapur) [1](#cognito-email-alternate-regions-note)  | 
|  Europa (Irland)  |  Abwärtskompatibel  |  USA West (Oregon), USA Ost (Nord-Virginia), Europa (Irland)  | 
|  Europa (London)  |  Abwärtskompatibel  |  Europa (London), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Europa (Paris)  |  Nur in der Region  |  Europa (Paris)  | 
|  Europa (Frankfurt)  |  Abwärtskompatibel  |  Europa (Frankfurt), USA Ost (Nord-Virginia), USA West (Oregon), Europa (Irland)  | 
|  Europa (Zürich)  |  Alternative Region  |  Europa (Frankfurt), Europa (London) [1](#cognito-email-alternate-regions-note)  | 
|  Europa (Stockholm)  |  Nur in der Region  |  Europa (Stockholm)  | 
| Europa (Milan) |  Nur in der Region  | Europa (Milan) | 
| Europa (Spain) |  Alternative Region  | Europa (Paris), Europa (Stockholm) [1](#cognito-email-alternate-regions-note) | 
|  Middle East (Bahrain)  |  Nur in der Region  |  Middle East (Bahrain)  | 
|  Naher Osten (VAE)  |  Alternative Region  |  Europa (Frankfurt), Europa (London) [1](#cognito-email-alternate-regions-note)  | 
|  Südamerika (São Paulo)  |  Nur in der Region  |  Südamerika (São Paulo)  | 
|  Israel (Tel Aviv)  |  Nur in der Region  |  Israel (Tel Aviv)  | 
|  Afrika (Kapstadt)  |  Nur in der Region  |  Afrika (Kapstadt)  | 

1 Wird in Benutzerpools mit der Standard-E-Mail-Konfiguration verwendet. Amazon Cognito verteilt E-Mail-Nachrichten an verifizierte Identitäten mit derselben E-Mail-Adresse in jeder Region. Um eine benutzerdefinierte `FROM` Adresse zu verwenden, konfigurieren Sie sie `EmailConfiguration` mit einem `SourceArn` Parameter im Format. `arn:${Partition}:ses:*:${Account}:identity/${IdentityName}`

## Konfigurieren von E-Mail-Einstellungen für Ihren Benutzerpool
<a name="user-pool-email-configure"></a>

Führen Sie die folgenden Schritte aus, um die E-Mail-Einstellungen für Ihren Benutzerpool zu konfigurieren. Abhängig von den Einstellungen, die Sie verwenden, benötigen Sie möglicherweise IAM-Berechtigungen in Amazon SES, AWS Identity and Access Management (IAM) und Amazon Cognito.

**Anmerkung**  
Sie können die Ressourcen, die Sie in den Schritten in AWS-Konten erstellen, nicht teilen. Sie können beispielsweise keinen Benutzerpool in einem Konto konfigurieren und ihn dann mit einer E-Mail-Adresse für Amazon SES in einem anderen Konto verwenden. Wenn Sie Amazon Cognito in mehreren Konten verwenden, müssen Sie diese Schritte für jedes Konto wiederholen.

### Schritt 1: Verifizieren Ihrer E-Mail-Adresse oder Domäne mit Amazon SES
<a name="user-pool-email-configure-verify-ses"></a>

Bevor Sie Ihren Benutzerpool konfigurieren, müssen Sie in folgenden Fällen eine oder mehrere Domänen oder E-Mail-Adressen mit Amazon SES verifizieren:
+ Sie möchten Ihre eigene E-Mail-Adresse als Absenderadresse verwenden
+ Sie möchten für die E-Mail-Zustellung Ihre Amazon-SES-Konfiguration verwenden

Durch Verifizierung Ihrer E-Mail-Adresse oder Domäne bestätigen Sie, dass diese Ihnen gehört, und verhindern somit eine unbefugte Nutzung.

Informationen zum Verifizieren einer E-Mail-Adresse mit Amazon SES finden Sie unter [Verifizieren einer E-Mail-Adresse](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses-procedure.html) im *Entwicklerhandbuch zu Amazon Simple Email Service*. Weitere Informationen zum Verifizieren einer Domäne mit Amazon SES finden Sie unter [Verifying domains](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html) (Domänen verifizieren).

### Schritt 2: Verschieben Ihres Kontos aus der Amazon-SES-Sandbox
<a name="user-pool-email-configure-sandbox"></a>

Lassen Sie diesen Schritt aus, wenn Sie die standardmäßige E-Mail-Konfiguration von Amazon Cognito verwenden.

Wenn Sie Amazon SES zum ersten Mal in einer beliebigen Region verwenden AWS-Region, wird Ihr System AWS-Konto in der Amazon SES SES-Sandbox für diese Region platziert. Amazon SES verwendet die Sandbox zur Betrugs- und Missbrauchsbekämpfung. Wenn die Amazon-SES-Konfiguration Ihre E-Mail-Zustellung übernimmt, müssen Sie Ihr AWS-Konto aus der Sandbox verschieben. Erst dann kann Amazon Cognito E-Mails an Ihre Benutzer senden.

In der Sandbox werden die Anzahl der E-Mails, die Sie versenden können, sowie die Empfängeradressen durch Amazon SES beschränkt. Sie können E-Mails nur an Adressen und Domänen senden, die Sie mit Amazon SES verifiziert haben, oder an Adressen, die dem Amazon-SES-Postfachsimulator zugeordnet sind. Solange Sie in der Sandbox AWS-Konto bleiben, sollten Sie Ihre Amazon SES SES-Konfiguration nicht für Anwendungen verwenden, die sich in der Produktion befinden. Ansonsten könnte Amazon Cognito keine Nachrichten an die E-Mail-Adressen Ihrer Benutzer senden.

Informationen zum Entfernen AWS-Konto aus der Sandbox finden Sie unter [Verlassen der Amazon SES SES-Sandbox](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html) im *Amazon Simple Email Service Developer Guide*.

### Schritt 3: Erteilen von Berechtigungen für den E-Mail-Versand an Amazon Cognito
<a name="user-pool-email-permissions"></a>

Möglicherweise müssen Sie Amazon Cognito bestimmte Berechtigungen erteilen, bevor es Ihren Benutzern E-Mails senden kann. Die Berechtigungen, die Sie gewähren, und das Verfahren, mit dem Sie sie gewähren, hängen davon ab, ob Sie die Standard-E-Mail-Konfiguration oder Ihre Amazon SES SES-Konfiguration verwenden.

#### So gewähren Sie Berechtigungen zur Verwendung der Standard-E-Mail-Konfiguration
<a name="user-pool-email-permissions-default"></a>

Führen Sie diesen Schritt nur aus, wenn Sie Ihren Benutzerpool auf **E-Mail mit Cognito senden** konfiguriert oder `EmailSendingAccount` auf `COGNITO_DEFAULT` eingestellt haben.

Mit der Standard-E-Mail-Konfiguration kann Ihr Benutzerpool E-Mail-Nachrichten mit einer der folgenden Adressen senden.
+ Die Standardadresse`no-reply@verificationemail.com`.
+ Eine benutzerdefinierte Absenderadresse von Ihren verifizierten E-Mail-Adressen oder Domains in Amazon SES.

Wenn Sie eine benutzerdefinierte Adresse verwenden, benötigt Amazon Cognito zusätzliche Berechtigungen, um Benutzern von dieser Adresse aus E-Mails zu senden. Diese Berechtigungen werden durch eine [Versandautorisierungsrichtlinie](https://docs.aws.amazon.com/ses/latest/dg/sending-authorization.html) für die Adresse oder Domain in Amazon SES gewährt. Wenn Sie die Amazon-Cognito-Konsole verwenden, um eine benutzerdefinierte Adresse zu Ihrem Benutzerpool hinzuzufügen, wird die Richtlinie automatisch an die mit Amazon SES verifizierte E-Mail-Adresse angehängt. Wenn Sie Ihren Benutzerpool jedoch außerhalb der Konsole konfigurieren, z. B. mithilfe der AWS CLI oder der Amazon Cognito Cognito-API, müssen Sie die Richtlinie über die [Amazon SES SES-Konsole](https://console.aws.amazon.com/ses/) oder die [PutIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)API anhängen.

**Anmerkung**  
Sie können eine Absenderadresse in einer verifizierten Domäne nur mit der AWS CLI oder der Amazon-Cognito-API konfigurieren.

Eine Versandautorisierungsrichtlinie ermöglicht oder verweigert den Zugriff basierend auf den Kontoressourcen, die Amazon Cognito zum Aufrufen von Amazon SES verwenden. Weitere Informationen zu ressourcenbasierten Richtlinien finden Sie im [IAM-Benutzerhandbuch](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based). Beispiele für ressourcenbasierte Richtlinien finden Sie auch im [Entwicklerhandbuch zu Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html).

**Example Sendeautorisierungsrichtlinie**  
Das folgende Beispiel für eine Sendeautorisierungsrichtlinie gewährt Amazon Cognito die eingeschränkte Möglichkeit, eine von Amazon SES verifizierte Identität zu verwenden. Amazon Cognito kann nur dann E-Mail-Nachrichten senden, wenn es diese Funktion für den Benutzerpool in der `aws:SourceArn`-Bedingung als auch für das Konto in der `aws:SourceAccount`-Bedingung übernimmt.  
Ihre Versandautorisierungsrichtlinie in der Benutzerpoolregion oder alternativen Region muss es dem Amazon Cognito-Service Principal ermöglichen, E-Mail-Nachrichten zu senden. Weitere Informationen finden Sie [in der Tabelle mit den Regionen](#ses-regions-table). Wenn Ihre **Benutzerpool-Region** mindestens einem Wert in der **Amazon SES SES-Region** entspricht, konfigurieren Sie im folgenden Beispiel Ihre Versandautorisierungsrichtlinie mit dem Global Service Principal.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "stmnt1234567891234",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "email.cognito-idp.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```
Amazon SES ist nicht in allen Opt-ins verfügbar, in AWS-Regionen denen Amazon Cognito verfügbar ist. Der Nahe Osten (VAE) ist ein Beispiel. Dort können nur E-Mails mit verifizierten Identitäten in Europa (Frankfurt) () versendet werden. `eu-central-1` In Benutzerpools mit der Standard-E-Mail-Konfiguration sendet Amazon Cognito auch E-Mail-Nachrichten mit einer verifizierten Identität in jeder von zwei Regionen. Im Fall des Nahen Ostens (VAE) ist die zusätzliche Region Europa (London). Sie müssen die Richtlinien zur Versandautorisierung in beiden Regionen aktualisieren.  
Ihre Versandautorisierungsrichtlinie in jeder der alternativen Regionen muss dem Amazon Cognito-Service Principal in der Benutzerpool-Opt-in-Region das Senden von E-Mail-Nachrichten gestatten. Weitere Informationen finden Sie [in der Tabelle mit den Regionen](#ses-regions-table). Wenn Ihre Region als **Alternative Region** markiert ist, konfigurieren Sie Ihre Richtlinien zur Versandautorisierung mit dem regionalen Service Principal wie im folgenden Beispiel. Ersetzen Sie die *me-central-1* Beispiel-Regionskennung nach Bedarf durch die erforderliche Regions-ID.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cognito-idp.me-central-1.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```
Weitere Informationen zur Richtliniensyntax finden Sie unter [Amazon-SES-Sendeautorisierungsrichtlinien](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html) im *Entwicklerhandbuch für Amazon Simple Email Service*.  
Weitere Beispiele finden Sie unter [Beispiele von Amazon-SES-Sendeautorisierungsrichtlinien](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html) im *Entwicklerhandbuch für Amazon Simple Email Service*.

#### Berechtigungen zur Verwendung Ihrer Amazon-SES-Konfiguration erteilen
<a name="user-pool-email-permissions-developer"></a>

Wenn Sie Ihren Benutzerpool so konfigurieren, dass Ihre Amazon-SES-Konfiguration verwendet wird, benötigt Amazon Cognito eine zusätzliche Berechtigung, um in Ihrem Namen Amazon SES aufzurufen und E-Mails an Ihre Benutzer zu senden. Diese Autorisierung mit dem IAM-Service erteilt.

Wenn Sie Ihren Benutzerpool mit dieser Option konfigurieren, erstellt Amazon Cognito eine *serviceverknüpfte Rolle*. Dabei handelt es sich um eine Art der IAM-Rolle in Ihrem AWS-Konto. Diese Rolle enthält die Berechtigungen, mit denen Amazon Cognito auf Amazon SES zugreifen und E-Mails mit Ihrer Adresse senden kann.

Amazon Cognito erstellt Ihre serviceverknüpfte Rolle mit den AWS Anmeldeinformationen der Benutzersitzung, die die Konfiguration festlegt. Die IAM-Berechtigungen dieser Sitzung müssen die `iam:CreateServiceLinkedRole`-Aktion enthalten. Weitere Informationen zu Berechtigungen in IAM finden Sie unter [Zugriffsverwaltung für AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) im *IAM-Benutzerhandbuch*.

Weitere Informationen zur serviceverknüpften Rolle, die Amazon Cognito erstellt, finden Sie unter [Verwendung von serviceverknüpften Rollen für Amazon Cognito](using-service-linked-roles.md).

### Schritt 4: Konfigurieren des Benutzerpools
<a name="user-pool-email-configure-user-pool"></a>

Führen Sie die folgenden Schritte aus, wenn Sie Ihren Benutzerpool folgendermaßen konfigurieren möchten:
+ Mit einer benutzerdefinierten Absenderadresse, die als solche angezeigt wird
+ Mit einer benutzerdefinierten Antwortadresse, bei der die Nachrichten eingehen, die Ihre Benutzer an die Absenderadresse senden
+ Ihre Amazon-SES-Konfiguration

**Anmerkung**  
Wenn es sich bei Ihrer verifizierten Identität um eine E-Mail-Adresse handelt, legt Amazon Cognito diese E-Mail-Adresse standardmäßig als Absender- und Empfänger-E-Mail-Adresse fest. Wenn es sich bei Ihrer verifizierten Identität jedoch um eine Domäne handelt, müssen Sie einen Wert für die FROM-E-Mail-Adresse angeben.

Lassen Sie dieses Verfahren aus, wenn Sie die standardmäßige E-Mail-Konfiguration und -Adresse von Amazon Cognito verwenden möchten.

**So konfigurieren Sie den Benutzerpool für die Verwendung einer benutzerdefinierten E-Mail-Adresse**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Authentifizierungsmethoden**, suchen Sie nach **E-Mail-Konfiguration** und wählen Sie **Bearbeiten**.

1. Wählen Sie auf der Seite **Edit email configuration** (E-Mail-Konfiguration bearbeiten) **Send email from Amazon SES** (E-Mail von Amazon SES senden) oder **Send email with Amazon Cognito** (E-Mail mit Amazon Cognito senden) aus. Sie können die **SES-Region**, das **Konfigurations-Set** und den **Absendernamen** nur anpassen, wenn Sie **Send email from Amazon SES** (E-Mail von Amazon SES senden) auswählen.

1. Zum Verwenden einer benutzerdefinierten Absenderadresse folgende Schritte ausführen:

   1. Wählen Sie unter **SES-Region** die Region mit Ihrer verifizierten E-Mail-Adresse aus.

   1. Wählen Sie unter **FROM email address** (Absenderadresse) Ihre E-Mail-Adresse aus. Verwenden Sie eine E-Mail-Adresse, die mit Amazon SES verifiziert wurde.

   1. (Optional) Wählen Sie unter **Configuration set** (Konfigurations-Set) ein Konfigurations-Set für die Verwendung mit Amazon SES aus. Wenn Sie diese Änderung vornehmen und speichern, wird eine serviceverknüpfte Rolle erstellt.

   1. (Optional) Geben Sie unter **FROM sender address** (Absenderadresse) eine E-Mail-Adresse ein. Sie können nur eine E-Mail-Adresse oder eine E-Mail-Adresse und einen Namen in folgendem Format angeben: `Jane Doe <janedoe@example.com>`.

   1. (Optional) Geben Sie unter **REPLY-TO email address** (Empfänger-E-Mail-Adresse) die E-Mail-Adresse ein, an die Sie Nachrichten erhalten möchten, die Benutzer an Ihre Absenderadresse senden.

1. Wählen Sie **Save Changes**.

**Verwandte Themen**
+ [Anpassen von Nachrichten zur E-Mail-Verifizierung](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-email-verification-message-customization)
+ [Anpassen von Nachrichten zur Einladung von Benutzern](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-user-invitation-message-customization)

# Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools
<a name="user-pool-sms-settings"></a>

Einige Amazon-Cognito-Ereignisse für Ihren Benutzerpool können dazu führen, dass Amazon Cognito SMS-Textnachrichten an Ihre Benutzer sendet. Wenn Sie beispielsweise Ihren Benutzerpool so konfigurieren, dass eine Telefon-Verifizierung erforderlich ist, erhält der Benutzer eine SMS-Textnachricht von Amazon Cognito, wenn er in Ihrer App ein neues Konto für sich anmeldet oder sein Passwort zurücksetzt. Abhängig von der Aktion, die die SMS-Nachricht initiiert, enthält die Nachricht einen Verifizierungscode, ein temporäres Kennwort oder eine Begrüßungsnachricht.

Amazon Cognito verwendet Amazon Simple Notification Service (Amazon SNS) zur Zustellung von SMS-Nachrichten. Amazon SNS wiederum übergibt SMS-Nachrichten an AWS End User Messaging SMS. Wenn Sie zum ersten Mal eine Textnachricht über Amazon Cognito senden, befinden Sie AWS End User Messaging SMS sich in einer [Sandbox-Umgebung](https://docs.aws.amazon.com/sms-voice/latest/userguide/sandbox.html). In der Sandbox-Umgebung können Sie Ihre Anwendungen auf SMS-Textnachrichten testen. In der Sandbox können Sie nur das Senden von Nachrichten simulieren.

**Anmerkung**  
Im November 2024 AWS wurde Amazon SNS SMS Messaging durch ersetzt. AWS End User Messaging SMS Derzeit bezieht sich die Amazon Cognito Cognito-Konsole auf Amazon SNS SNS-Ressourcen. Benutzerpools initiieren SMS-Nachrichten mit dem Amazon SNS [Publish-Vorgang](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html), bei dem es sich um eine Weiterleitung an handelt. AWS End User Messaging SMS Dementsprechend müssen Sie weiterhin Berechtigungen für `sns:Publish` konfigurieren, nicht. `sms-voice:SendTextMessage`

AWS End User Messaging SMS Gebühren für SMS-Textnachrichten. Weitere Informationen finden Sie unter [AWS End User Messaging SMS Preise](https://aws.amazon.com/end-user-messaging/pricing/).

Amazon Cognito sendet Ihren Benutzern SMS-Nachrichten mit einem Code, den diese eingeben können. Die folgende Tabelle zeigt die Ereignisse, die eine SMS-Nachricht generieren können.

**Nachrichtenoptionen**


| Aktivität | API-Operation | Zustelloptionen | Formatierungsoptionen | Anpassbar | [Vorlage für eine Nachricht](cognito-user-pool-settings-message-customizations.md) | 
| --- |--- |--- |--- |--- |--- |
| Passwort vergessen | [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html), [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | E-Mail, SMS | Code | Ja | Bestätigungsnachricht | 
| Einladung | [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | E-Mail, SMS | Code | Ja | Einladungsnachricht | 
| Selbstregistrierung | [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html), [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | E-Mail, SMS | Code, Link | Ja | Bestätigungsnachricht | 
| Bestätigung der E-Mail-Adresse oder Telefonnummer | [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html), [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html), [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | E-Mail, SMS | Code | Ja | Bestätigungsnachricht | 
| Multifaktor-Authentifizierung (MFA) | [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | E-Mail¹, SMS, Authentifizierungs-App | Code | Ja² | MFA-Nachricht | 
| Einmalige Passwortauthentifizierung (OTP) | [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | E-Mail¹, SMS | Code | Ja | MFA-Nachricht ³ | 

¹ Erfordert den [Feature-Plan](cognito-sign-in-feature-plans.md) Essentials oder höher und [die E-Mail-Konfiguration von Amazon SES](user-pool-email.md#user-pool-email-developer). 

² Für SMS- und E-Mail-Nachrichten.

³ Sie können die MFA-Nachrichtenvorlage nur anpassen, wenn MFA in Ihrem Benutzerpool erforderlich oder optional ist. Wenn MFA inaktiv ist, sendet Amazon Cognito Einmalkennwörter mit der Standardvorlage.

AWS End User Messaging SMS Gebühren für SMS-Nachrichten. Weitere Informationen finden Sie unter [AWS End User Messaging SMS Preise](https://aws.amazon.com/end-user-messaging/pricing/).

Weitere Informationen zu MFA finden Sie unter [SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md).

Amazon Cognito verhindert möglicherweise die Zustellung zusätzlicher E-Mail- oder SMS-Nachrichten an ein einzelnes Ziel in einem kurzen Zeitraum. Wenn Sie glauben, dass Ihr Benutzerpool betroffen ist, konfigurieren und überprüfen Sie die [Protokolle auf Fehler bei der Nachrichtenzustellung](exporting-quotas-and-usage.md#exporting-quotas-and-usage-messages) und wenden Sie sich dann an Ihr Kundenbetreuungsteam.

## Best Practices
<a name="user-pool-sms-settings-best-practices"></a>

Aufgrund des weltweiten Volumens an unaufgefordertem SMS-Verkehr verhängen einige Regierungen Sperren zwischen Absendern und Empfängern von SMS-Nachrichten. Wenn Sie SMS-Nachrichten für MFA und Benutzeraktualisierungen verwenden, müssen Sie zusätzliche Maßnahmen ergreifen, um sicherzustellen, dass Ihre Nachrichten zugestellt werden. Sie müssen auch die SMS-message-related Vorschriften in Ländern, in denen Ihre Benutzer möglicherweise leben, im Auge behalten und Ihre SMS-Nachrichtenkonfiguration auf dem neuesten Stand halten. Weitere Informationen finden Sie im *AWS End User Messaging SMS Benutzerhandbuch* unter [Funktionen und Einschränkungen der jeweiligen Länder für SMS und MMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-support-by-country.html).

Die Verwendung von SMS-Nachrichten zur Authentifizierung und Überprüfung von Benutzern ist kein bewährtes Sicherheitsverfahren. Telefonnummern können den Besitzer wechseln und stellen möglicherweise keinen zuverlässigen *Something You Have*-MFA-Faktor für Ihre Benutzer dar. Implementieren Sie stattdessen TOTP MFA in Ihrer App oder mit Ihrem Drittanbieter-IdP. Es ist auch möglich, zusätzliche benutzerdefinierte Authentifizierungsfaktoren mit [Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen](user-pool-lambda-challenge.md) zu erstellen.

Unter den folgenden Links finden Sie Informationen zur Sicherung Ihrer Architektur für die SMS-Nachrichtenzustellung.
+ [Reduzieren Sie mit Amazon Cognito Cognito-Benutzerpools das Risiko von Benutzeranmeldebetrug und SMS-Pumping](https://aws.amazon.com/blogs/security/reduce-risks-of-user-sign-up-fraud-and-sms-pumping-with-amazon-cognito-user-pools/)
+ [Schutz vor SMS-Pumping: Neue AWS Funktionen zur Bekämpfung von künstlich aufgeblähtem Traffic](https://aws.amazon.com/blogs/messaging-and-targeting/defending-against-sms-pumping-new-aws-features-to-help-combat-artificially-inflated-traffic/)

## Erstmaliges Einrichten von SMS-Nachrichten in Amazon-Cognito-Benutzerpools
<a name="user-pool-sms-settings-first-time"></a>

Amazon Cognito verwendet Amazon SNS und indirekt AWS End User Messaging SMS, um SMS-Nachrichten aus Ihren Benutzerpools zu versenden. Sie können auch einen [Benutzerdefinierter Lambda-Auslöser für SMS-Sender](user-pool-lambda-custom-sms-sender.md) verwenden, um Ihre eigenen Ressourcen zum Senden von SMS-Nachrichten zu verwenden. Wenn Sie SMS-Textnachrichten zum ersten Mal in einer bestimmten Region einrichten AWS-Region, werden Ihre Textnachrichten AWS-Konto in der SMS-Sandbox für diese Region AWS End User Messaging SMS platziert. AWS End User Messaging SMS verwendet die Sandbox, um Betrug und Missbrauch zu verhindern und Compliance-Anforderungen zu erfüllen. [Wenn Sie AWS-Konto sich in der Sandbox befinden, gelten einige AWS End User Messaging SMS Einschränkungen.](https://docs.aws.amazon.com/sms-voice/latest/userguide/sandbox.html#sandbox-sms) Sie können beispielsweise Textnachrichten an maximal 10 verifizierte Zielnummern senden, wenn Sie über eine Absenderidentität verfügen, oder Sie können das Senden von Nachrichten ohne Absenderidentität simulieren. Solange Sie in der Sandbox AWS-Konto bleiben, sollten Sie in der Produktion keine SMS-Nachrichten versenden. Wenn Sie sich in der Sandbox befinden, kann Amazon Cognito keine Nachrichten an die Telefonnummern Ihrer Benutzer senden.

**Topics**
+ [Bereiten Sie eine IAM-Rolle vor, mit der Amazon Cognito SMS-Nachrichten senden kann AWS End User Messaging SMS](#sms-create-a-role)
+ [Wählen Sie AWS-Region für SMS-Nachrichten](#sms-choose-a-region)
+ [Eine Ursprungsidentität zum Senden von SMS-Nachrichten an US-Telefonnummern anfordern](#user-pool-sms-settings-first-time-origination)
+ [Bestätigen Sie, dass Sie sich in der SMS-Sandbox befinden.](#user-pool-sms-settings-first-time-confirm-sandbox)
+ [Verschieben Sie Ihr Konto aus der Sandbox](#user-pool-sms-settings-first-time-out-sandbox)
+ [Verwenden Sie Simulatornummern oder verifizierte Telefonnummern mit AWS End User Messaging SMS](#user-pool-sms-settings-first-time-verify-numbers)
+ [Die Benutzerpool-Einrichtung in Amazon Cognito abschließen](#user-pool-sms-settings-first-time-finish-user-pool)

### Bereiten Sie eine IAM-Rolle vor, mit der Amazon Cognito SMS-Nachrichten senden kann AWS End User Messaging SMS
<a name="sms-create-a-role"></a>

Wenn Sie eine SMS-Nachricht aus Ihrem Benutzerpool senden, übernimmt Amazon Cognito eine IAM-Rolle in Ihrem Konto. Amazon Cognito verwendet die `sns:Publish`-Berechtigung, die dieser Rolle zugewiesen ist, um SMS-Nachrichten an Ihre Benutzer zu senden. In der Amazon Cognito Cognito-Konsole können Sie im Menü **Authentifizierungsmethoden** Ihres Benutzerpools unter **SMS** eine **IAM-Rollenauswahl** festlegen oder diese Auswahl während des Assistenten zur Erstellung des Benutzerpools treffen.

Die folgende IAM-Rollenvertrauensrichtlinie gewährt Benutzerpools von Amazon Cognito eine eingeschränkte Möglichkeit, die Rolle zu übernehmen. Amazon Cognito kann die Rolle nur übernehmen, wenn es die folgenden Bedingungen erfüllt:
+ Der Vorgang „Rolle übernehmen“ erfolgt im Namen des Benutzerpools in dieser Bedingung. `aws:SourceArn`
+ Der Vorgang zur Rollenübernahme erfolgt im Namen eines Benutzerpools, der in der Bedingung AWS-Konto festgelegt ist. `aws:SourceAccount`
+ Der Vorgang „Rolle übernehmen“ schließt die externe ID in die Bedingung ein. `sts:externalId`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "cognito-idp.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-west-2:111122223333:userpool/us-west-2_EXAMPLE"
                }
            }
        }
    ]
}
```

------

Sie können einen genauen [Benutzerpool-ARN](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncognitouserpools.html#amazoncognitouserpools-resources-for-iam-policies) oder ein Platzhalter-ARN im Wert der Bedingung `aws:SourceArn` angeben. Suchen Sie in AWS-Managementkonsole oder mit ARNs einer [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html)API-Anfrage nach Ihren Benutzerpools.

Um SMS-Nachrichten für die [Multi-Faktor-Authentifizierung](user-pool-settings-mfa-sms-email-message.md) zu senden, muss Ihre Vertrauensrichtlinie für IAM-Rollen eine `sts:ExternalId` Bedingung erfüllen. Der Wert dieser Bedingung muss der `ExternalId` Eigenschaft [SmsConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-SmsConfiguration)Ihres Benutzerpools entsprechen. Wenn Sie während der Erstellung des Benutzerpools in der Amazon Cognito-Konsole eine IAM-Rolle erstellen, konfiguriert Amazon Cognito die externe ID für Sie in der Rolle und in den Benutzerpooleinstellungen. Dies ist nicht der Fall, wenn Sie eine vorhandene IAM-Rolle verwenden.

Sie müssen den `ExternalId` Benutzerpoolparameter in einer [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API-Anforderung aktualisieren und die Vertrauensrichtlinie für die IAM-Rolle mit einer `sts:externalId` Bedingung mit demselben Wert aktualisieren. Informationen zur Verwendung der API zur Aktualisierung eines Benutzerpools unter Beibehaltung der ursprünglichen Konfiguration finden Sie unter. [Aktualisierung der Benutzerpool- und App-Client-Konfiguration](cognito-user-pool-updating.md)

Weitere Informationen zu IAM-Rollen und -Vertrauensrichtlinien finden Sie unter [Rollenbegriffe und -Konzepte](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) im *AWS Identity and Access Management -Benutzerhandbuch*.

### Wählen Sie AWS-Region für SMS-Nachrichten
<a name="sms-choose-a-region"></a>

**Anmerkung**  
SMS-Nachrichten in AWS werden jetzt in verwaltet [AWS End User Messaging SMS](https://console.aws.amazon.com/sms-voice/home).

In einigen Fällen können Sie die Region auswählen AWS-Regionen, die die Amazon SNS SNS-Ressourcen enthält, die Sie für Amazon Cognito-SMS-Nachrichten verwenden möchten. In allen Ländern, in AWS-Region denen Amazon Cognito verfügbar ist, außer im asiatisch-pazifischen Raum (Seoul), können Sie Amazon SNS SNS-Ressourcen dort verwenden, AWS-Region wo Sie Ihren Benutzerpool erstellt haben. Um Ihre SMS-Nachrichten schneller und zuverlässiger zu gestalten, wenn Sie zwischen verschiedenen Regionen auswählen können, verwenden Sie Amazon SNS-Ressourcen in derselben Region wie Ihr Benutzerpool.

Wählen Sie eine Region für SMS-Ressourcen im Schritt **Nachrichtenzustellung konfigurieren** des Assistenten für neue Benutzerpools aus. Sie können auch im Menü **Authentifizierungsmethoden** eines vorhandenen Benutzerpools unter **SMS** die Option **Bearbeiten** auswählen.

Bei der Markteinführung sendete Amazon Cognito für einige AWS-Regionen SMS-Nachrichten mit Amazon SNS SNS-Ressourcen in einer anderen Region. Um Ihre bevorzugte Region festzulegen, verwenden Sie den `SnsRegion` Parameter des [SmsConfigurationType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html)Objekts für Ihren Benutzerpool. Wenn Sie eine Amazon-Cognito-Benutzerpool-Ressource in einer **Amazon Cognito Region** (Amazon-Cognito-Region) aus der folgenden Tabelle programmgesteuert erstellen und keinen `SnsRegion`-Parameter angeben, kann Ihr Benutzerpool SMS-Nachrichten mit Amazon-SNS-Ressourcen in einer Legacy-**Amazon SNS Region** (Amazon-SNS-Region) senden.

Amazon Cognito Cognito-Benutzerpools im asiatisch-pazifischen Raum (Seoul) AWS-Region müssen Ihre Amazon SNS SNS-Konfiguration in der Region Asien-Pazifik (Tokio) verwenden.

Amazon SNS (via AWS End User Messaging SMS) legt das Ausgabenkontingent für alle neuen Konten auf 1,00 USD pro Monat fest. Möglicherweise haben Sie Ihr Ausgabenlimit in einer AWS-Region , die Sie mit Amazon Cognito verwenden, erhöht. Bevor Sie die AWS-Region für Amazon SNS SMS-Nachrichten ändern, öffnen Sie im AWS Support Center einen Fall zur Erhöhung des Kontingents, um Ihr Limit in der neuen Region zu erhöhen. *Weitere Informationen finden Sie im Benutzerhandbuch unter [Umstellung von der AWS End User Messaging SMS MMS- und Voice-Sandbox auf die AWS End User Messaging SMS Produktionsumgebung](https://docs.aws.amazon.com/sms-voice/latest/userguide/sandbox.html#sandbox-sms-move-to-production).*

Sie können SMS-Nachrichten für jede **Amazon Cognito Cognito-Region** in der folgenden Tabelle mit AWS End User Messaging SMS Ressourcen in der entsprechenden **SMS-Nachrichtenregion senden**.


| Amazon-Cognito-Region | Region für SMS-Nachrichten | 
| --- | --- | 
|  USA Ost (Ohio)  |  USA Ost (Ohio), USA Ost (Nord-Virginia)  | 
|  USA Ost (Nord-Virginia)  |  USA Ost (Nord-Virginia)  | 
|  USA West (Nordkalifornien)  |  USA West (Nordkalifornien)  | 
|  USA West (Oregon)  |  USA West (Oregon)  | 
|  Kanada (Zentral)  |  Kanada (Zentral), USA Ost (Nord-Virginia)  | 
|  Kanada West (Calgary)  |  Kanada West (Calgary)  | 
|  Mexiko (Zentral)  |  Mexiko (Zentral)  | 
|  Europa (Frankfurt)  |  Europa (Frankfurt), Europa (Irland)  | 
|  Europa (London)  |  Europa (London), Europa (Irland)  | 
|  Europa (Irland)  |  Europa (Irland)  | 
|  Europa (Paris)  |  Europa (Paris)  | 
|  Europa (Stockholm)  |  Europa (Stockholm)  | 
|  Europa (Milan)  |  Europa (Milan)  | 
|  Europa (Spain)  |  Europa (Spain)  | 
|  Europa (Zürich)  |  Europa (Zürich)  | 
| Asien-Pazifik (Malaysia) | Asien-Pazifik (Singapur) | 
|  Asien-Pazifik (Thailand)  |  Asien-Pazifik (Mumbai)  | 
|  Asien-Pazifik (Mumbai)  |  Asien-Pazifik (Mumbai), Asien-Pazifik (Singapur)  | 
|  Asien-Pazifik (Hyderabad)  |  Asien-Pazifik (Hyderabad)  | 
|  Asien-Pazifik (Hongkong)  |  Asien-Pazifik (Singapur)  | 
|  Asia Pacific (Seoul)  |  Asien-Pazifik (Tokio)  | 
|  Asien-Pazifik (Singapur)  |  Asien-Pazifik (Singapur)  | 
|  Asien-Pazifik (Sydney)  |  Asien-Pazifik (Sydney)  | 
|  Asien-Pazifik (Tokio)  |  Asien-Pazifik (Tokio)  | 
|  Asien-Pazifik (Jakarta)  |  Asien-Pazifik (Jakarta)  | 
|  Asien-Pazifik (Osaka)  |  Asien-Pazifik (Osaka)  | 
|  Asien-Pazifik (Melbourne)  |  Asien-Pazifik (Melbourne)  | 
|  Middle East (Bahrain)  |  Middle East (Bahrain)  | 
|  Naher Osten (VAE)  |  Naher Osten (VAE)  | 
|  Südamerika (São Paulo)  |  Südamerika (São Paulo)  | 
|  Israel (Tel Aviv)  |  Israel (Tel Aviv)  | 
|  Afrika (Kapstadt)  |  Afrika (Kapstadt)  | 

### Eine Ursprungsidentität zum Senden von SMS-Nachrichten an US-Telefonnummern anfordern
<a name="user-pool-sms-settings-first-time-origination"></a>

Wenn Sie SMS-Textnachrichten an US-Telefonnummern senden möchten, müssen Sie eine Ursprungsidentität anfordern, unabhängig davon, ob Sie eine SMS-Sandbox-Testumgebung oder eine Produktionsumgebung erstellen.

US-Mobilfunkanbieter benötigen eine Absenderidentität, um Nachrichten an US-Telefonnummern zu senden. Wenn Sie noch keine Ursprungsidentität besitzen, müssen Sie eine anfordern. Informationen dazu, wie Sie eine Absenderidentität erhalten, finden Sie im *AWS End User Messaging SMS Benutzerhandbuch* unter [Telefonnummer anfordern](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request.html).

Wenn Sie mehr als eine Absenderidentität in derselben Datei haben AWS-Region, AWS End User Messaging SMS wählt Sie einen Identitätstyp in der folgenden Prioritätsreihenfolge aus: Kurzcode, 10DLC, gebührenfreie Nummer. Sie können diese Prioritätsreihenfolge nicht ändern. Weitere Informationen finden Sie unter [AWS End User Messaging SMS FAQs](https://aws.amazon.com/end-user-messaging/faqs/).

### Bestätigen Sie, dass Sie sich in der SMS-Sandbox befinden.
<a name="user-pool-sms-settings-first-time-confirm-sandbox"></a>

Gehen Sie wie folgt vor, um zu bestätigen, dass Sie sich in der SMS-Sandbox befinden. Wiederholen Sie den Vorgang für jeden AWS-Region , in dem Sie Amazon Cognito Cognito-Produktions-Benutzerpools haben.

#### Status von SMS-Sandboxen in der Amazon Cognito-Konsole
<a name="check-that-you-are-in-the-sms-sandbox"></a>

**Aktivität in der SMS-Sandbox bestätigen**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Geben Sie bei Aufforderung Ihre AWS -Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus.

1. Wählen Sie das Menü **Authentifizierungsmethoden**.

1. Erweitern Sie im Bereich **SMS configuration** (SMS-Konfiguration) **Move to Amazon SMS production environment** (Wechseln zur Amazon-SNS-Produktionsumgebung). Wenn sich Ihr Konto in der SMS-Sandbox befindet, wird die folgende Nachricht angezeigt:

   **Konfigurieren Sie AWS-Service Abhängigkeiten, um die Einrichtung Ihrer SMS-Nachricht abzuschließen**

   Wenn diese Nachricht nicht angezeigt wird, hat jemand bereits SMS-Nachrichten in Ihrem Konto eingerichtet. Fahren Sie mit [Die Benutzerpool-Einrichtung in Amazon Cognito abschließen](#user-pool-sms-settings-first-time-finish-user-pool) fort.

1. Wählen Sie unter Zur [Amazon SNS-Produktionsumgebung](https://console.aws.amazon.com/sns/home) **wechseln den Link Amazon SNS** aus. Auf diese Weise wird die Amazon-SNS-Konsole in einer neuen Registerkarte geöffnet.

1. Stellen Sie sicher, dass Sie sich in der Sandbox-Umgebung befinden. Die Konsolenmeldung gibt Ihren Sandbox-Status und wie folgt an AWS-Region:

   `This account is in the SMS sandbox in US East (N. Virginia).`

### Verschieben Sie Ihr Konto aus der Sandbox
<a name="user-pool-sms-settings-first-time-out-sandbox"></a>

Um Ihre App in der Produktion zu verwenden, holen Sie Ihr Konto aus der SMS-Sandbox und übergeben Sie es in die Produktion. Nachdem Sie in der eine Originationsidentität konfiguriert haben AWS-Region , die die AWS End User Messaging SMS Ressourcen enthält, die Amazon Cognito verwenden soll, können Sie US-Telefonnummern verifizieren, während Ihre in der AWS-Konto SMS-Sandbox verbleiben. Wenn sich Ihre Umgebung in der Produktionsumgebung befindet, müssen Sie die Telefonnummern der Benutzer nicht verifizieren, bevor Sie SMS-Nachrichten an sie senden.

Sie können eine Anfrage zum Verlassen der Sandbox entweder von der AWS End User Messaging SMS Konsole oder der Amazon SNS SNS-Konsole aus erstellen. *Eine ausführliche Anleitung finden Sie im Benutzerhandbuch unter [Umstieg aus der SMS-Sandbox](https://docs.aws.amazon.com/sms-voice/latest/userguide/sandbox.html#sandbox-sms-move-to-production).AWS End User Messaging SMS *

### Verwenden Sie Simulatornummern oder verifizierte Telefonnummern mit AWS End User Messaging SMS
<a name="user-pool-sms-settings-first-time-verify-numbers"></a>

Wenn Sie Ihr Konto aus der SMS-Sandbox verschoben haben, überspringen Sie diesen Schritt.

Wenn Sie sich in der Sandbox befinden, aber eine Ausgangsnummer eingerichtet haben, können Sie Nachrichten an verifizierte Zielnummern senden. Informationen zum Einrichten verifizierter Ziele finden [Sie im *AWS End User Messaging SMS Benutzerhandbuch* unter Hinzufügen einer verifizierten Zieltelefonnummer](https://docs.aws.amazon.com/sms-voice/latest/userguide/verify-destination-phone-number.html).

Sie können auch Nachrichten mit simulierten Absendern und Zielen senden. Simulatornachrichten erzeugen Protokolle, werden aber nicht über das Carrier-Netzwerk gesendet. Wählen Sie im [Menü Kurzbefehle](https://console.aws.amazon.com/sms-voice/home?#/shortcuts) die Option **SMS-Versand mit SMS-Simulator testen** aus. Weitere Informationen finden Sie im *AWS End User Messaging SMS Benutzerhandbuch* unter [Simulator-Telefonnummern](https://docs.aws.amazon.com/sms-voice/latest/userguide/test-phone-numbers.html).

### Die Benutzerpool-Einrichtung in Amazon Cognito abschließen
<a name="user-pool-sms-settings-first-time-finish-user-pool"></a>

Kehren Sie zur Browser-Registerkarte zurück, auf der Sie Ihren Benutzerpool erstellt oder [bearbeitet](signing-up-users-in-your-app.md#verification-configure) haben. Schließen Sie das Verfahren ab. Wenn Sie Ihrem Benutzerpool erfolgreich eine SMS-Konfiguration hinzugefügt haben, sendet Amazon Cognito eine Testnachricht an eine interne Telefonnummer, um zu überprüfen, ob Ihre Konfiguration funktioniert. Amazon SNS berechnet für jede Test-SMS-Nachricht Gebühren.

# Verwendung der Sicherheitsfunktionen für Amazon-Cognito-Benutzerpools
<a name="managing-security"></a>

Möglicherweise möchten Sie Ihre Anwendung vor Netzwerkangriffen, Kennwortraten, Identitätsmissbrauch und böswilliger Anmeldung und Anmeldung schützen. Ihre Konfiguration der Sicherheitsfunktionen von Amazon Cognito Cognito-Benutzerpools kann eine Schlüsselkomponente in Ihrer Sicherheitsarchitektur sein. Die Sicherheit Ihrer Anwendung liegt in der *Verantwortung des Kunden. „Sicherheit in der Cloud“*, wie im [Modell der AWS gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) beschrieben. Die Tools in diesem Kapitel tragen dazu bei, dass Ihr Anwendungssicherheitsdesign diesen Zielen entspricht.

Eine wichtige Entscheidung, die Sie bei der Konfiguration Ihres Benutzerpools treffen müssen, ist, ob Sie die öffentliche Registrierung und Anmeldung zulassen möchten. Einige Benutzerpool-Optionen wie vertrauliche Clients, administrative Erstellung und Bestätigung von Benutzern und Benutzerpools ohne Domäne sind in geringerem Maße Angriffen über das Internet ausgesetzt. Ein häufiger Anwendungsfall sind jedoch öffentliche Clients, die die Registrierung von jedem Benutzer im Internet akzeptieren und alle Operationen direkt an Ihren Benutzerpool senden. In jeder Konfiguration, insbesondere aber bei diesen öffentlichen Konfigurationen, empfehlen wir, dass Sie Ihren Benutzerpool unter Berücksichtigung der Sicherheitsfunktionen planen und bereitstellen. Ungenügende Sicherheit kann sich auch auf Ihre AWS Rechnung auswirken, wenn durch unerwünschte Quellen neue aktive Benutzer entstehen oder versucht wird, bestehende Benutzer auszunutzen.

MFA und Bedrohungsschutz gelten für [lokale Benutzer](cognito-terms.md#terms-localuser). Drittanbieter IdPs sind für den Sicherheitsstatus [verbundener](cognito-terms.md#terms-federateduser) Benutzer verantwortlich.Sicherheitsfunktionen werden in Benutzerpools zusammengefasst

**Multifaktor-Authentifizierung (MFA)**  
Fordern Sie einen Code an, den Ihr Benutzerpool per E-Mail (mit dem Featureplan Essentials oder Plus) oder SMS-Nachricht oder über eine Authenticator-App sendet, um die Anmeldung für den Benutzerpool zu bestätigen.

**Schutz vor Bedrohungen**  
Überwachen Sie die Anmeldung auf Risikoindikatoren und wenden Sie MFA an oder blockieren Sie die Anmeldung. Fügen Sie benutzerdefinierte Ansprüche und Bereiche für den Zugriff auf Tokens hinzu. Senden Sie MFA-Codes per E-Mail.

**AWS WAF Netz ACLs**  
Untersuchen Sie den eingehenden Datenverkehr zu den [Endpunkten Ihres Benutzerpools und zur Authentifizierungs-API](authentication-flows-public-server-side.md#user-pools-API-operations) auf unerwünschte Aktivitäten auf Netzwerk- und Anwendungsebene.

**Sensitivität zwischen Groß- und Kleinschreibung**  
Verhindern Sie die Erstellung von Benutzern, deren E-Mail-Adresse oder bevorzugter Benutzername mit denen eines anderen Benutzers identisch ist, mit Ausnahme der Groß- und Kleinschreibung.

**Löschschutz**  
Verhindern Sie, dass automatisierte Systeme Ihre Benutzerpools versehentlich löschen. Erfordern Sie eine zusätzliche Bestätigung für das Löschen des Benutzerpools in AWS-Managementkonsole.

**Fehler beim Vorhandensein eines Benutzers**  
Schützen Sie sich vor der Offenlegung vorhandener Benutzernamen und Aliase in Ihrem Benutzerpool. Geben Sie als Antwort auf eine erfolglose Authentifizierung einen generischen Fehler zurück, unabhängig davon, ob der Benutzername gültig ist oder nicht.

**Topics**
+ [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md)
+ [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md)
+ [Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md)
+ [Berücksichtigung der Groß-/Kleinschreibung im Benutzerpool](user-pool-case-sensitivity.md)
+ [Löschschutz für Benutzerpools](user-pool-settings-deletion-protection.md)
+ [Verwalten von Reaktionen auf Fehler bei vorhandenen Benutzern](cognito-user-pool-managing-errors.md)

# Hinzufügen der MFA zu einem Benutzerpool
<a name="user-pool-settings-mfa"></a>

MFA fügt dem anfänglichen *Etwas, das Sie* *wissen*, einen Authentifizierungsfaktor hinzu, bei dem es sich in der Regel um einen Benutzernamen und ein Passwort handelt. Sie können SMS-Textnachrichten, E-Mail-Nachrichten oder zeitbasierte Einmalkennwörter (TOTP) als zusätzliche Faktoren wählen, um Ihre Benutzer anzumelden, deren primärer Authentifizierungsfaktor Kennwörter ist.

Die Multi-Faktor-Authentifizierung (MFA) erhöht die Sicherheit für die [lokalen Benutzer](cognito-terms.md#terms-localuser) in Ihrer Anwendung. Im Fall von [Verbundbenutzern delegiert](cognito-terms.md#terms-federateduser) Amazon Cognito alle Authentifizierungsprozesse an den IdP und bietet ihnen keine zusätzlichen Authentifizierungsfaktoren an.

**Anmerkung**  
Wenn sich ein neuer Benutzer zum ersten Mal bei Ihrer App anmeldet, gibt Amazon Cognito OAuth 2.0-Token aus, auch wenn Ihr Benutzerpool MFA erfordert. Der zweite Authentifizierungsfaktor bei der Erstanmeldung Ihres Benutzer ist die Bestätigung der Verifizierungsnachricht, die Amazon Cognito an ihn sendet. Wenn Ihr Benutzerpool MFA erfordert, fordert Amazon Cognito Ihren Benutzer auf, einen zusätzlichen Anmeldefaktor zu registrieren, der nach der Erstanmeldung bei jedem weiteren Anmeldeversuch verwendet werden soll.

Mit der adaptiven Authentifizierung können Sie Ihren Benutzerpool so konfigurieren, dass als Reaktion auf ein erhöhtes Risikoniveau ein zusätzlicher Authentifizierungsfaktor erforderlich ist. Weitere Informationen darüber, wie Sie Ihrem Benutzerpool eine adaptive Authentifizierung hinzufügen, finden Sie unter [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md).

Wenn Sie die MFA für einen Benutzerpool auf `required` festlegen, müssen alle Benutzer MFA abschließen, um sich anzumelden. Um sich anzumelden, muss jeder Benutzer mindestens einen MFA-Faktor einrichten. Wenn MFA erforderlich ist, müssen Sie das MFA-Setup in das Benutzer-Onboarding einbeziehen, damit Ihr Benutzerpool es ihnen ermöglicht, sich anzumelden.

Die verwaltete Anmeldung fordert Benutzer auf, MFA einzurichten, wenn Sie MFA als erforderlich festlegen. Wenn Sie MFA in Ihrem Benutzerpool als optional festlegen, werden Benutzer bei der verwalteten Anmeldung nicht aufgefordert. Wenn Sie mit optionaler MFA arbeiten möchten, müssen Sie in Ihrer App eine Oberfläche erstellen, die Ihre Benutzer auffordert, auszuwählen, dass sie MFA einrichten möchten, und die sie dann durch die API-Eingaben führt, um ihren zusätzlichen Anmeldefaktor zu verifizieren.

**Topics**
+ [Wissenswertes über den Benutzerpool MFA](#user-pool-settings-mfa-prerequisites)
+ [Benutzer-MFA-Einstellungen](#user-pool-settings-mfa-preferences)
+ [Einzelheiten der MFA-Logik zur Benutzerlaufzeit](#user-pool-settings-mfa-user-outcomes)
+ [Konfigurieren Sie einen Benutzerpool für die Multi-Faktor-Authentifizierung](#user-pool-configuring-mfa)
+ [SMS- und E-Mail-Nachricht MFA](user-pool-settings-mfa-sms-email-message.md)
+ [TOTP-Software-Token-MFA](user-pool-settings-mfa-totp.md)

## Wissenswertes über den Benutzerpool MFA
<a name="user-pool-settings-mfa-prerequisites"></a>

Berücksichtigen Sie Folgendes, bevor Sie MFA einrichten:
+ Benutzer können entweder über MFA verfügen *oder* sich mit kennwortlosen Faktoren anmelden, mit einer Ausnahme: Hauptschlüssel mit Benutzerverifizierung können die MFA-Anforderungen erfüllen, wenn Sie in Ihrem Benutzerpool `FactorConfiguration` auf `MULTI_FACTOR_WITH_USER_VERIFICATION` einstellen. `WebAuthnConfiguration`
  + In Benutzerpools, die [Einmalkennwörter](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) unterstützen, können Sie MFA nicht auf erforderlich setzen.
  + Sie können Ihrem Benutzerpool keine MFA `SMS_OTP` hinzufügen `EMAIL_OTP` oder hinzufügen, `AllowedFirstAuthFactors` wenn MFA erforderlich ist. Sie können hinzufügen`WEB_AUTHN`, wann auf `MULTI_FACTOR_WITH_USER_VERIFICATION` eingestellt `FactorConfiguration` ist.
  + [Wahlbasierte Anmeldung](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) bietet `PASSWORD` und `PASSWORD_SRP` berücksichtigt nur dann alle App-Clients, wenn MFA im Benutzerpool erforderlich ist. **Weitere Informationen zu den Abläufen zwischen Benutzernamen und Passwörtern finden Sie unter [Melden Sie sich mit dauerhaften Passwörtern an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) und [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) im Kapitel Authentifizierung dieses Handbuchs.**
  + In Benutzerpools, in denen MFA optional ist, können sich Benutzer, die einen MFA-Faktor konfiguriert haben, bei der wahlbasierten Anmeldung nur mit Benutzername-Kennwort-Authentifizierungsabläufen anmelden. [Diese Benutzer kommen für alle clientbasierten Anmeldeabläufe in Frage.](authentication-flows-selection-sdk.md#authentication-flows-selection-client)

  In der folgenden Tabelle werden die Auswirkungen der MFA-Einstellungen des Benutzerpools und der Benutzerkonfiguration von MFA-Faktoren auf die Fähigkeit der Benutzer beschrieben, sich mit kennwortlosen Faktoren anzumelden.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/user-pool-settings-mfa.html)
+ Die bevorzugte MFA-Methode eines Benutzers beeinflusst die Methoden, mit denen er sein Passwort wiederherstellen kann. Benutzer, deren bevorzugte MFA per E-Mail-Nachricht erfolgt, können keinen Code zum Zurücksetzen des Passworts per E-Mail erhalten. Benutzer, deren bevorzugte MFA per SMS-Nachricht erfolgt, können keinen Code zum Zurücksetzen des Passworts per SMS erhalten.

  Ihre Einstellungen für die [Kennwortwiederherstellung](managing-users-passwords.md#user-pool-password-reset-and-recovery) müssen eine alternative Option bieten, wenn Benutzer nicht für Ihre bevorzugte Methode zum Zurücksetzen des Passworts in Frage kommen. Beispielsweise könnten Ihre Wiederherstellungsmechanismen E-Mail als erste Priorität haben und E-Mail-MFA könnte eine Option in Ihrem Benutzerpool sein. Fügen Sie in diesem Fall die Kontowiederherstellung per SMS-Nachricht als zweite Option hinzu oder verwenden Sie administrative API-Operationen, um die Passwörter für diese Benutzer zurückzusetzen.

  Amazon Cognito beantwortet Anfragen zum Zurücksetzen von Passwörtern von Benutzern, die keine gültige Wiederherstellungsmethode haben, mit einer Fehlerantwort. `InvalidParameterException`

  Das Beispiel für eine `AccountRecoverySetting` Anfrage [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_Examples)zeigt, wie Benutzer auf die Wiederherstellung per SMS-Nachricht zurückgreifen können, wenn das Zurücksetzen des Kennworts für E-Mail-Nachrichten nicht verfügbar ist.
+ Benutzer können MFA- und Passwort-Reset-Codes nicht an dieselbe E-Mail-Adresse oder Telefonnummer erhalten. Wenn sie Einmalpasswörter (OTPs) aus E-Mail-Nachrichten für MFA verwenden, müssen sie SMS-Nachrichten für die Kontowiederherstellung verwenden. Wenn sie OTPs SMS-Nachrichten für MFA verwenden, müssen sie E-Mail-Nachrichten für die Kontowiederherstellung verwenden. In Benutzerpools mit MFA können Benutzer die Self-Service-Kennwortwiederherstellung möglicherweise nicht abschließen, wenn sie Attribute für ihre E-Mail-Adresse, aber keine Telefonnummer haben, oder ihre Telefonnummer, aber keine E-Mail-Adresse.

  Um zu verhindern, dass Benutzer ihre Passwörter in Benutzerpools mit dieser Konfiguration nicht zurücksetzen können, legen Sie die `phone_number` [Attribute `email` und nach Bedarf](user-pool-settings-attributes.md) fest. Als Alternative können Sie Prozesse einrichten, bei denen diese Attribute immer erfasst und festgelegt werden, wenn sich Benutzer registrieren oder wenn Ihre Administratoren Benutzerprofile erstellen. Wenn Benutzer über beide Attribute verfügen, sendet Amazon Cognito automatisch Codes zum Zurücksetzen des Passworts an das Ziel, das *nicht* dem MFA-Faktor des Benutzers entspricht.
+ Wenn Sie MFA in Ihrem Benutzerpool aktivieren und **SMS-Nachricht oder **E-Mail-Nachricht**** als zweiten Faktor wählen, können Sie Nachrichten an eine Telefonnummer oder ein E-Mail-Attribut senden, das Sie in Amazon Cognito nicht verifiziert haben. Nachdem Ihr Benutzer MFA abgeschlossen hat, setzt Amazon Cognito sein `phone_number_verified` oder `email_verified` Attribut auf. `true`
+ Nach fünf erfolglosen Versuchen, einen MFA-Code zu präsentieren, beginnt Amazon Cognito mit dem unter [Sperrverhalten bei fehlgeschlagenen Anmeldeversuchen](authentication.md#authentication-flow-lockout-behavior) beschriebenen exponentiellen Timeout-Kontosperrungsprozess.
+ Wenn sich Ihr Konto in der SMS-Sandbox befindet AWS-Region , die die Amazon Simple Notification Service (Amazon SNS) -Ressourcen für Ihren Benutzerpool enthält, müssen Sie die Telefonnummern in Amazon SNS überprüfen, bevor Sie eine SMS-Nachricht senden können. Weitere Informationen finden Sie unter [Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools](user-pool-sms-settings.md).
+ Um den MFA-Status von Benutzern als Reaktion auf erkannte Ereignisse mit Bedrohungsschutz zu ändern, aktivieren Sie MFA und legen Sie ihn in der Amazon Cognito Cognito-Benutzerpool-Konsole als optional fest. Weitere Informationen finden Sie unter [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md).
+ E-Mail- und SMS-Nachrichten setzen voraus, dass Ihre Benutzer über E-Mail-Adressen- und Telefonnummernattribute verfügen. Sie können die Attribute `email` oder nach `phone_number` Bedarf in Ihrem Benutzerpool festlegen. In diesem Fall können Benutzer die Registrierung nur abschließen, wenn sie eine Telefonnummer angeben. Wenn Sie diese Attribute nicht wie erforderlich festlegen, aber MFA für E-Mail- oder SMS-Nachrichten verwenden möchten, fordern Sie Benutzer bei der Registrierung zur Eingabe ihrer E-Mail-Adresse oder Telefonnummer auf. Es hat sich bewährt, Ihren Benutzerpool so zu konfigurieren, dass Benutzer automatisch Nachrichten erhalten, um [diese Attribute zu überprüfen](signing-up-users-in-your-app.md).

  Amazon Cognito zählt eine Telefonnummer oder E-Mail-Adresse als verifiziert, wenn ein Benutzer erfolgreich einen temporären Code per SMS oder E-Mail-Nachricht erhalten und diesen Code in einer [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)API-Anfrage zurückgegeben hat. Als Alternative kann Ihr Team Telefonnummern festlegen und diese mit einer Verwaltungsanwendung, die [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API-Anfragen ausführt, als verifiziert markieren.
+ Wenn Sie MFA als erforderlich festgelegt und mehr als einen Authentifizierungsfaktor aktiviert haben, fordert Amazon Cognito neue Benutzer auf, einen MFA-Faktor auszuwählen, den sie verwenden möchten. Benutzer benötigen eine Telefonnummer, um SMS-Nachrichten-MFA einzurichten, und eine E-Mail-Adresse, um E-Mail-Nachrichten-MFA einzurichten. Wenn ein Benutzer das Attribut nicht für eine verfügbare nachrichtenbasierte MFA definiert hat, fordert Amazon Cognito ihn auf, TOTP-MFA einzurichten. Die Aufforderung, einen MFA-Faktor (`SELECT_MFA_TYPE`) auszuwählen und einen ausgewählten Faktor (`MFA_SETUP`) einzurichten, erfolgt als Challenge-Antwort auf [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API-Operationen.

## Benutzer-MFA-Einstellungen
<a name="user-pool-settings-mfa-preferences"></a>

Benutzer können mehrere MFA-Faktoren einrichten. Nur einer kann aktiv sein. Sie können die effektive MFA-Präferenz für Ihre Benutzer in den Benutzerpooleinstellungen oder in Benutzeraufforderungen auswählen. Ein Benutzerpool fordert einen Benutzer zur Eingabe von MFA-Codes auf, wenn die Benutzerpooleinstellungen und ihre eigenen Einstellungen auf Benutzerebene die folgenden Bedingungen erfüllen:

1. Sie setzen MFA in Ihrem Benutzerpool auf optional oder erforderlich.

1. Der Benutzer hat ein gültiges `email` oder `phone_number` -Attribut oder hat eine Authenticator-App für TOTP eingerichtet.

1. Mindestens ein MFA-Faktor ist aktiv.

1. Ein MFA-Faktor ist als bevorzugt festgelegt.

### Vermeiden Sie die Verwendung desselben Faktors für Anmeldung und MFA
<a name="user-pool-settings-mfa-preferences-same-factor"></a>

Es ist möglich, Ihren Benutzerpool so zu konfigurieren, dass ein Anmeldefaktor die einzig verfügbare Anmelde- und MFA-Option für einige oder alle Benutzer ist. Dieses Ergebnis kann eintreten, wenn Ihr primärer Anwendungsfall Einmalpasswörter für E-Mail-Nachrichten oder SMS-Nachrichten sind (). OTPs Die bevorzugte MFA eines Benutzers kann unter den folgenden Bedingungen dieselbe Art von Faktor sein wie seine Anmeldung:
+ MFA ist im Benutzerpool erforderlich.
+ E-Mail- und SMS-OTP sind im Benutzerpool verfügbare Anmelde *- und* MFA-Optionen.
+ Der Benutzer meldet sich mit OTP für E-Mail- oder SMS-Nachrichten an.
+ Sie haben ein E-Mail-Adressattribut, aber kein Telefonnummernattribut, oder ein Telefonnummernattribut, aber kein E-Mail-Adressattribut.

In diesem Szenario kann sich der Benutzer mit einem E-Mail-OTP anmelden und MFA mit einem E-Mail-OTP abschließen. Diese Option macht die grundlegende Funktion von MFA zunichte. Benutzer, die sich mit Einmalpasswörtern anmelden, müssen in der Lage sein, für die Anmeldung andere Übermittlungsmethoden als für MFA zu verwenden. Wenn Benutzer sowohl SMS- als auch E-Mail-Optionen haben, weist Amazon Cognito automatisch einen anderen Faktor zu. Wenn sich ein Benutzer beispielsweise mit E-Mail-OTP anmeldet, ist sein bevorzugtes MFA SMS-OTP.

Gehen Sie wie folgt vor, um die Authentifizierung mit demselben Faktor zu behandeln, wenn Ihr Benutzerpool die OTP-Authentifizierung sowohl für die Anmeldung als auch für die MFA unterstützt.

1. Aktivieren Sie sowohl E-Mail- als auch SMS-OTP als Anmeldefaktoren.

1. Aktivieren Sie sowohl E-Mail- als auch SMS-OTP als MFA-Faktoren.

1. Erfassen

### Benutzerpool-Einstellungen und ihre Auswirkung auf MFA-Optionen
<a name="user-pool-settings-mfa-preferences-things-to-know"></a>

Die Konfiguration Ihres Benutzerpools beeinflusst die MFA-Methoden, die Benutzer wählen können. Im Folgenden sind einige Benutzerpooleinstellungen aufgeführt, die Einfluss darauf haben, ob Benutzer MFA einrichten können.
+ In der Konfiguration der **Multi-Faktor-Authentifizierung** im **Anmelde-Menü** der Amazon Cognito Cognito-Konsole können Sie MFA auf optional oder erforderlich setzen oder deaktivieren. Das API-Äquivalent dieser Einstellung ist der [MfaConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-MfaConfiguration)Parameter von`CreateUserPool`, und. `UpdateUserPool` `SetUserPoolMfaConfig`

  Auch in der Konfiguration für die **Multi-Faktor-Authentifizierung** bestimmt die Einstellung der **MFA-Methoden** die MFA-Faktoren, die Benutzer einrichten können. Das API-Äquivalent dieser Einstellung ist der Vorgang. [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) 
+ Im **Anmeldemenü** können Sie unter **Benutzerkontenwiederherstellung** konfigurieren, wie Ihr Benutzerpool Nachrichten an Benutzer sendet, die ihr Passwort vergessen haben. Die MFA-Methode eines Benutzers kann nicht dieselbe MFA-Übermittlungsmethode haben wie die Benutzerpool-Übermittlungsmethode für Codes mit vergessenen Passwörtern. Der API-Parameter für die Übermittlungsmethode „Passwort vergessen“ ist der Parameter von und. [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting)`CreateUserPool``UpdateUserPool`

  Beispielsweise können Benutzer E-Mail-MFA nicht einrichten, wenn Ihre Wiederherstellungsoption **Nur E-Mail** ist. Dies liegt daran, dass Sie E-Mail-MFA nicht aktivieren und die Wiederherstellungsoption auf **Nur E-Mail** im selben Benutzerpool festlegen können. Wenn Sie diese Option auf **E-Mail, falls verfügbar, setzen, andernfalls auf SMS**, ist E-Mail die bevorzugte Wiederherstellungsoption, aber Ihr Benutzerpool kann auf SMS-Nachrichten zurückgreifen, wenn ein Benutzer nicht für die Wiederherstellung von E-Mail-Nachrichten berechtigt ist. In diesem Szenario können Benutzer E-Mail-MFA als bevorzugt festlegen und nur dann eine SMS-Nachricht erhalten, wenn sie versuchen, ihr Passwort zurückzusetzen.
+ Wenn Sie nur eine MFA-Methode als verfügbar festlegen, müssen Sie die Benutzer-MFA-Einstellungen nicht verwalten.
+ Eine aktive SMS-Konfiguration macht SMS-Nachrichten automatisch zu einer verfügbaren MFA-Methode in Ihrem Benutzerpool.

  Eine aktive [E-Mail-Konfiguration](user-pool-email.md) mit Ihren eigenen Amazon SES SES-Ressourcen in einem Benutzerpool und dem Feature-Plan Essentials oder Plus macht E-Mail-Nachrichten automatisch zu einer verfügbaren MFA-Methode in Ihrem Benutzerpool.
+ Wenn Sie MFA in einem Benutzerpool auf erforderlich setzen, können Benutzer keine MFA-Methoden aktivieren oder deaktivieren. Sie können nur eine bevorzugte Methode festlegen.
+ Wenn Sie MFA in einem Benutzerpool auf optional setzen, werden Benutzer bei der verwalteten Anmeldung nicht aufgefordert, MFA einzurichten, sondern Benutzer werden aufgefordert, einen MFA-Code einzugeben, wenn sie eine bevorzugte MFA-Methode haben.
+ Wenn Sie den [Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md) aktivieren und Antworten mit adaptiver Authentifizierung im Vollfunktionsmodus konfigurieren, muss MFA in Ihrem Benutzerpool optional sein. Eine der Antwortoptionen bei der adaptiven Authentifizierung besteht darin, MFA für einen Benutzer vorzuschreiben, dessen Anmeldeversuch daraufhin bewertet wird, ob er ein gewisses Risiko eindämmt.

  Die Einstellung **Erforderliche Attribute** im **Anmeldemenü** der Konsole bestimmt, ob Benutzer eine E-Mail-Adresse oder Telefonnummer angeben müssen, um sich in Ihrer Anwendung zu registrieren. E-Mail- und SMS-Nachrichten werden zu geeigneten MFA-Faktoren, wenn ein Benutzer über das entsprechende Attribut verfügt. Der [Schema-Parameter](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) von `CreateUserPool` legt die Attribute nach Bedarf fest.
+ Wenn Sie MFA in einem Benutzerpool auf erforderlich setzen und sich ein Benutzer mit verwalteter Anmeldung anmeldet, fordert Amazon Cognito ihn auf, eine MFA-Methode aus den verfügbaren Methoden für Ihren Benutzerpool auszuwählen. Managed Login kümmert sich um die Erfassung einer E-Mail-Adresse oder Telefonnummer und die Einrichtung von TOTP. Das folgende Diagramm zeigt die Logik hinter den Optionen, die Amazon Cognito Benutzern bietet.

### MFA-Einstellungen für Benutzer konfigurieren
<a name="user-pool-settings-mfa-preferences-configure"></a>

Sie können MFA-Einstellungen für Benutzer in einem Self-Service-Modell mit Zugriffstoken-Autorisierung oder in einem vom Administrator verwalteten Modell mit administrativen API-Vorgängen konfigurieren. Diese Operationen aktivieren oder deaktivieren MFA-Methoden und legen eine von mehreren Methoden als bevorzugte Option fest. Nachdem Ihr Benutzer eine MFA-Einstellung festgelegt hat, fordert Amazon Cognito ihn bei der Anmeldung auf, einen Code für seine bevorzugte MFA-Methode einzugeben. Benutzer, die keine Präferenz festgelegt haben, werden aufgefordert, in einer Challenge eine bevorzugte Methode auszuwählen. `SELECT_MFA_TYPE`
+ Legt in einem Benutzer-Self-Service-Modell oder einer öffentlichen Anwendung [SetUserMfaPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html), autorisiert mit dem Zugriffstoken eines angemeldeten Benutzers, die MFA-Konfiguration fest.
+ Legt in einer vom Administrator verwalteten oder vertraulichen Anwendung, die mit AWS Administratoranmeldedaten autorisiert ist [AdminSetUserPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html), die MFA-Konfiguration fest.

Sie können die Benutzer-MFA-Einstellungen auch über das **Benutzermenü** der Amazon Cognito Cognito-Konsole festlegen. Weitere Informationen zu den öffentlichen und vertraulichen Authentifizierungsmodellen in der Amazon Cognito Cognito-Benutzerpools-API finden Sie unter[Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations).

## Einzelheiten der MFA-Logik zur Benutzerlaufzeit
<a name="user-pool-settings-mfa-user-outcomes"></a>

Um die Schritte zu bestimmen, die bei der Anmeldung von Benutzern zu ergreifen sind, bewertet Ihr Benutzerpool Benutzer-MFA-Einstellungen, [Benutzerattribute](user-pool-settings-attributes.md), die [MFA-Einstellung des Benutzerpools](#user-pool-configuring-mfa), Maßnahmen zum [Schutz vor Bedrohungen](cognito-user-pool-settings-adaptive-authentication.md) und Einstellungen für die [Self-Service-Kontowiederherstellung](managing-users-passwords.md#user-pool-password-reset-and-recovery). Anschließend werden Benutzer angemeldet, aufgefordert, eine MFA-Methode auszuwählen, sie werden aufgefordert, eine MFA-Methode einzurichten, oder sie werden zur Eingabe von MFA aufgefordert. Um eine MFA-Methode einzurichten, müssen Benutzer eine [E-Mail-Adresse oder Telefonnummer angeben oder](user-pool-settings-mfa-sms-email-message.md) [einen TOTP-Authentifikator registrieren](user-pool-settings-mfa-totp.md#totp-mfa-set-up-api). Sie können auch MFA-Optionen einrichten und [eine bevorzugte Option im Voraus registrieren](#user-pool-settings-mfa-preferences-configure). In der folgenden Abbildung sind die detaillierten Auswirkungen der Konfiguration des Benutzerpools auf Anmeldeversuche unmittelbar nach der ersten Anmeldung aufgeführt.

Die hier dargestellte Logik gilt für SDK-basierte Anwendungen und die [verwaltete Anmeldung](cognito-user-pools-managed-login.md), ist aber bei verwalteter Anmeldung weniger sichtbar. Gehen Sie bei der Fehlerbehebung für MFA von den Ergebnissen Ihrer Benutzer zurück zu den Benutzerprofil- und Benutzerpoolkonfigurationen, die zu der Entscheidung beigetragen haben.

![\[Ein Diagramm des Entscheidungsprozesses von Amazon Cognito Cognito-Benutzerpools für die MFA-Auswahl durch Endbenutzer.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-mfa-decision-tree.png)


Die folgende Liste entspricht der Nummerierung im Entscheidungslogikdiagramm und beschreibt jeden Schritt im Detail. A ![\[checkmark\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png) steht für eine erfolgreiche Authentifizierung und den Abschluss des Datenflusses. A ![\[error\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/error.png) weist auf eine erfolglose Authentifizierung hin.

1. Ein Benutzer zeigt seinen Benutzernamen oder seinen Benutzernamen und sein Passwort auf Ihrem Anmeldebildschirm an. Wenn er keine gültigen Anmeldeinformationen vorlegt, wird seine Anmeldeanfrage abgelehnt. 

1. Wenn die Benutzername-Passwort-Authentifizierung erfolgreich ist, stellen Sie fest, ob MFA erforderlich, optional oder deaktiviert ist. Wenn die Option deaktiviert ist, führen der richtige Benutzername und das richtige Passwort zu einer erfolgreichen Authentifizierung. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Wenn MFA optional ist, stellen Sie fest, ob der Benutzer zuvor einen TOTP-Authentifikator eingerichtet hat. Wenn sie TOTP eingerichtet haben, fordern Sie TOTP MFA an. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Stellen Sie fest, ob der Benutzer aufgrund der adaptiven Authentifizierungsfunktion des Bedrohungsschutzes MFA einrichten musste. Wenn kein MFA zugewiesen wurde, ist der Benutzer angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

1. Wenn MFA erforderlich ist oder die adaptive Authentifizierung MFA zugewiesen hat, stellen Sie fest, ob der Benutzer einen MFA-Faktor als aktiviert und bevorzugt festgelegt hat. Falls ja, fordern Sie MFA mit diesem Faktor an. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

1. Wenn der Benutzer keine MFA-Präferenz festgelegt hat, stellen Sie fest, ob der Benutzer einen TOTP-Authentifikator registriert hat.

   1. Wenn der Benutzer einen TOTP-Authentifikator registriert hat, stellen Sie fest, ob TOTP-MFA im Benutzerpool verfügbar ist (TOTP-MFA kann deaktiviert werden, nachdem Benutzer zuvor Authentifikatoren eingerichtet haben).

   1. Stellen Sie fest, ob MFA für E-Mail-Nachrichten oder SMS-Nachrichten auch im Benutzerpool verfügbar ist.

   1.  Wenn weder E-Mail- noch SMS-MFA verfügbar ist, fordern Sie den Benutzer zur Eingabe von TOTP-MFA auf. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Wenn E-Mail- oder SMS-MFA verfügbar sind, stellen Sie fest, ob der Benutzer über das entsprechende `email` `phone_number` OR-Attribut verfügt. Wenn ja, stehen ihnen alle Attribute zur Verfügung, die nicht die primäre Methode für die Self-Service-Kontowiederherstellung sind und für MFA aktiviert sind.

   1. Stellen Sie den Benutzer `SELECT_MFA_TYPE` vor eine Herausforderung mit `MFAS_CAN_SELECT` Optionen, die TOTP und die verfügbaren MFA-Faktoren für SMS oder E-Mail beinhalten.

   1.  Fordert den Benutzer zur Eingabe des Faktors auf, den er als Antwort auf die `SELECT_MFA_TYPE` Aufforderung ausgewählt hat. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

1. Wenn der Benutzer keinen TOTP-Authentifikator registriert hat oder wenn er einen registriert hat, TOTP MFA jedoch derzeit deaktiviert ist, stellen Sie fest, ob der Benutzer über ein Oder-Attribut verfügt. `email` `phone_number`

1.  Wenn der Benutzer nur eine E-Mail-Adresse oder nur eine Telefonnummer hat, stellen Sie fest, ob dieses Attribut auch die Methode ist, die der Benutzerpool implementiert, um Nachrichten zur Kontowiederherstellung zum Zurücksetzen des Kennworts zu senden. Wenn der Wert wahr ist, können sie die Anmeldung nicht abschließen, wenn MFA erforderlich ist, und Amazon Cognito gibt einen Fehler zurück. Um die Anmeldung für diesen Benutzer zu aktivieren, müssen Sie ein Attribut hinzufügen, das nicht wiederhergestellt werden kann, oder einen TOTP-Authentifikator für ihn registrieren. ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/error.png)

   1. Wenn sie über eine verfügbare E-Mail-Adresse oder Telefonnummer verfügen, die nicht wiederhergestellt werden kann, stellen Sie fest, ob der entsprechende E-Mail- oder SMS-MFA-Faktor aktiviert ist.

   1. Wenn sie über ein E-Mail-Adressattribut verfügen, das nicht wiederhergestellt werden kann und E-Mail-MFA aktiviert ist, fordern Sie sie auf, sie herauszufordern. `EMAIL_OTP` Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Wenn sie ein Telefonnummernattribut haben, das nicht wiederhergestellt werden kann und SMS-MFA aktiviert ist, fordern Sie sie zur Aufforderung auf. `SMS_MFA` Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Wenn sie kein Attribut haben, das für einen aktivierten E-Mail- oder SMS-MFA-Faktor in Frage kommt, stellen Sie fest, ob TOTP-MFA aktiviert ist. Wenn TOTP MFA deaktiviert ist, können sie die Anmeldung nicht abschließen, wenn MFA erforderlich ist, und Amazon Cognito gibt einen Fehler zurück. Um die Anmeldung für diesen Benutzer zu aktivieren, müssen Sie ein Attribut hinzufügen, das nicht wiederhergestellt werden kann, oder einen TOTP-Authentifikator für ihn registrieren. ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/error.png)
**Anmerkung**  
Dieser Schritt wurde bereits als **Nein** bewertet, wenn der Benutzer über einen TOTP-Authentifikator verfügt, TOTP MFA jedoch deaktiviert ist.

   1. Wenn TOTP MFA aktiviert ist, stellen Sie den Benutzer `SOFTWARE_TOKEN_MFA` in den `MFAS_CAN_SETUP` Optionen `MFA_SETUP` vor eine Herausforderung. Um diese Aufforderung abzuschließen, müssen Sie separat einen TOTP-Authentifikator für den Benutzer registrieren und mit antworten. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]}"`

   1. Nachdem der Benutzer auf die Aufforderung mit dem `MFA_SETUP` Sitzungstoken aus einer [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)Anfrage geantwortet hat, fordern Sie ihn zu einer `SOFTWARE_TOKEN_MFA` Aufforderung auf. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

1. Wenn der Benutzer sowohl eine E-Mail-Adresse als auch eine Telefonnummer hat, bestimmen Sie, welches Attribut, falls vorhanden, die primäre Methode für Kontowiederherstellungsnachrichten zum Zurücksetzen des Kennworts ist.

   1. Wenn die Self-Service-Kontowiederherstellung deaktiviert ist, kann jedes der Attribute für MFA verwendet werden. Stellen Sie fest, ob einer oder beide der E-Mail- und SMS-MFA-Faktoren aktiviert sind.

   1. Wenn beide Attribute als MFA-Faktor aktiviert sind, `SELECT_MFA_TYPE` fordern Sie den Benutzer mit den `MFAS_CAN_SELECT` Optionen `SMS_MFA` und `EMAIL_OTP` auf.

   1. Fordert sie zur Eingabe des Faktors auf, den sie als Antwort auf die `SELECT_MFA_TYPE` Aufforderung ausgewählt haben. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

   1. Wenn nur ein Attribut als MFA-Faktor in Frage kommt, fordern Sie sie auf, den verbleibenden Faktor herauszufordern. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

      Dieses Ergebnis tritt in den folgenden Szenarien auf.

      1. Wenn sie über `phone_number` Attribute verfügen`email`, sind SMS und E-Mail-MFA aktiviert, und die primäre Methode zur Kontowiederherstellung erfolgt per E-Mail oder SMS-Nachricht.

      1. Wenn sie über `phone_number` Attribute verfügen`email`, ist nur SMS-MFA oder E-Mail-MFA aktiviert und die Self-Service-Kontowiederherstellung ist deaktiviert.

1. Wenn der Benutzer keinen TOTP-Authentifikator registriert hat und auch kein `email` `phone_number` NOR-Attribut besitzt, fordern Sie ihn auf, ihn herauszufordern. `MFA_SETUP` Die Liste `MFAS_CAN_SETUP` enthält alle aktivierten MFA-Faktoren im Benutzerpool, die nicht die primäre Option für die Kontowiederherstellung sind. Sie können auf diese Herausforderung per E-Mail oder TOTP-MFA reagieren. `ChallengeResponses` Um SMS-MFA einzurichten, fügen Sie separat ein Telefonnummernattribut hinzu und starten Sie die Authentifizierung erneut.

   Für TOTP MFA antworten Sie mit. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]"}`

   Wenn Sie MFA per E-Mail erhalten möchten, antworten Sie mit`"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "email": "[user's email address]"}`.

   1. Fragen Sie sie nach dem Faktor, den sie als Antwort auf die `SELECT_MFA_TYPE` Herausforderung ausgewählt haben. Wenn sie die MFA erfolgreich beantworten, sind sie angemeldet. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/checkmark.png)

## Konfigurieren Sie einen Benutzerpool für die Multi-Faktor-Authentifizierung
<a name="user-pool-configuring-mfa"></a>

Sie können MFA in der Amazon Cognito Cognito-Konsole oder mit den [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)API-Operations- und SDK-Methoden konfigurieren.

**Konfigurieren der MFA in der Amazon-Cognito-Konsole**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. 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 **Anmelde-Menü**. **Suchen Sie nach **Multi-Faktor-Authentifizierung** und wählen Sie Bearbeiten.**

1. Wählen Sie die Methode **MFA enforcement** (Durchsetzung von MFA), die Sie für Ihren Benutzerpool verwenden möchten.  
![\[Ein Screenshot von der Amazon Cognito Cognito-Konsole mit MFA-Optionen.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-mfa.png)

   1. **MFA erforderlich**. Alle Benutzer in Ihrem Benutzerpool müssen sich mit einer zusätzlichen SMS, E-Mail oder einem zeitbasierten Einmalkennwort (TOTP) als zusätzlichem Authentifizierungsfaktor anmelden.

   1. **Optionaler MFA**. Sie können Ihren Benutzern die Möglichkeit geben, einen zusätzlichen Anmeldefaktor zu registrieren, aber dennoch Benutzern, die MFA nicht konfiguriert haben, die Anmeldung gestatten. Wählen Sie diese Option, wenn Sie die adaptive Authentifizierung verwenden. Weitere Informationen zur adaptiven Authentifizierung finden Sie unter [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md).

   1. **Kein MFA**. Ihre Benutzer können keinen zusätzlichen Anmeldefaktor registrieren.

1. Wählen Sie die **MFA-Methoden** aus, die Sie in Ihrer App unterstützen. Sie können **E-Mail-Nachrichten, **SMS-Nachrichten**** oder TOTP-generierende **Authenticator-Apps** als zweiten Faktor festlegen.

1. Wenn Sie SMS-Nachrichten als zweiten Faktor verwenden und Sie keine IAM-Rolle für die Verwendung mit Amazon Simple Notification Service (Amazon SNS) für SMS-Nachrichten konfiguriert haben, können Sie eine in der Konsole erstellen. **Suchen Sie im Menü **Authentifizierungsmethoden** für Ihren Benutzerpool nach **SMS** und wählen Sie Bearbeiten.** Sie können auch eine vorhandene Rolle verwenden, mit der Amazon Cognito SMS-Nachrichten für Sie an Ihre Benutzer senden kann. Weitere Informationen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

   Wenn Sie E-Mail-Nachrichten als zweiten Faktor verwenden und keine ursprüngliche Identität für die Verwendung mit Amazon Simple Email Service (Amazon SES) für E-Mail-Nachrichten konfiguriert haben, erstellen Sie eine in der Konsole. Sie müssen die Option **E-Mail mit SES senden** auswählen. Suchen Sie im Menü **Authentifizierungsmethoden** für Ihren Benutzerpool nach **E-Mail** und wählen Sie **Bearbeiten** aus. Wählen Sie eine **ABSENDER-E-Mail-Adresse aus** den verfügbaren verifizierten Identitäten in der Liste aus. Wenn Sie beispielsweise eine verifizierte Domain wählen`example.com`, müssen Sie auch einen **FROM-Absendernamen** in der verifizierten Domain konfigurieren. `admin-noreply@example.com`

1. Wählen Sie **Änderungen speichern ** aus.

# SMS- und E-Mail-Nachricht MFA
<a name="user-pool-settings-mfa-sms-email-message"></a>

SMS- und E-Mail-MFA-Nachrichten bestätigen, dass Benutzer Zugriff auf ein Nachrichtenziel haben, bevor sie sich anmelden können. Sie bestätigen, dass sie nicht nur Zugriff auf ein Passwort haben, sondern auch auf die SMS-Nachrichten oder den E-Mail-Posteingang des ursprünglichen Benutzers. Amazon Cognito fordert Benutzer auf, einen Kurzcode anzugeben, den Ihr Benutzerpool gesendet hat, nachdem sie erfolgreich einen Benutzernamen und ein Passwort eingegeben haben.

MFA für SMS und E-Mail-Nachrichten erfordert keine zusätzliche Konfiguration, nachdem Ihr Benutzer seinem Profil eine E-Mail-Adresse oder Telefonnummer hinzugefügt hat. Amazon Cognito kann Nachrichten an nicht verifizierte E-Mail-Adressen und Telefonnummern senden. Wenn ein Benutzer sein erstes MFA abschließt, markiert Amazon Cognito seine E-Mail-Adresse oder Telefonnummer als verifiziert.

Die MFA-Authentifizierung beginnt, wenn ein Benutzer mit MFA seinen Benutzernamen und sein Passwort in Ihre Anwendung eingibt. Ihre Anwendung übermittelt diese Anfangsparameter in einer SDK-Methode, die eine oder API-Anfrage aufruft. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Die `ChallengeParameters` API-Antwort enthält einen `CODE_DELIVERY_DESTINATION` Wert, der angibt, wohin der Autorisierungscode gesendet wurde. Zeigen Sie in Ihrer Anwendung ein Formular an, das den Benutzer auffordert, sein Telefon zu überprüfen, und das ein Eingabeelement für den Code enthält. Wenn sie ihren Code eingeben, reichen Sie ihn in einer Challenge-Response-API-Anfrage ein, um den Anmeldevorgang abzuschließen.

Nachdem sich ein Benutzer mit MFA auf den [verwalteten Anmeldeseiten](cognito-user-pools-managed-login.md) mit Benutzername und Passwort angemeldet hat, wird er automatisch zur Eingabe des MFA-Code aufgefordert.

Benutzerpools senden SMS-Nachrichten für MFA und andere Amazon Cognito Cognito-Benachrichtigungen mit Amazon Simple Notification Service (Amazon SNS) -Ressourcen in Ihrem. AWS-Konto In ähnlicher Weise senden Benutzerpools E-Mail-Nachrichten mit Amazon Simple Email Service (Amazon SES) -Ressourcen in Ihrem Konto. Für diese verknüpften Dienste fallen eigene Kosten für die Nachrichtenzustellung auf Ihrer AWS Rechnung an. Sie haben auch zusätzliche Anforderungen für den Versand von Nachrichten in Produktionsmengen. Weitere Informationen finden Sie unter den folgenden Links:
+ [Einstellungen für SMS-Nachrichten für Amazon-Cognito-Benutzerpools](user-pool-sms-settings.md)
+ [Weltweite SMS-Preise](https://aws.amazon.com/sns/sms-pricing/)
+ [E-Mail-Einstellungen für Amazon-Cognito-Benutzerpools](user-pool-email.md)
+ [Amazon SES SES-Preise](https://aws.amazon.com/ses/pricing)

## Überlegungen zur MFA für SMS- und E-Mail-Nachrichten
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ Damit sich Benutzer mit E-Mail-MFA anmelden können, muss Ihr Benutzerpool über die folgenden Konfigurationsoptionen verfügen:

  1. Sie haben den Plus- oder Essentials-Funktionsplan in Ihrem Benutzerpool. Weitere Informationen finden Sie unter [Funktionspläne für Benutzerpools](cognito-sign-in-feature-plans.md).

  1. Ihr Benutzerpool sendet E-Mail-Nachrichten mit Ihren eigenen Amazon SES SES-Ressourcen. Weitere Informationen finden Sie unter [E-Mail-Konfiguration von Amazon SES](user-pool-email.md#user-pool-email-developer).
+ Der MFA-Code ist für die **Dauer der Authentifizierungsflusssitzung** gültig, die Sie für Ihren App-Client festgelegt haben.

  Legen Sie die Dauer einer Authentifizierungsflow-Sitzung in der Amazon Cognito Cognito-Konsole im Menü **App-Clients** fest, wenn Sie Ihren App-Client **bearbeiten**. Sie können die Dauer der Authentifizierungsablaufsitzung auch in einer `CreateUserPoolClient`- oder `UpdateUserPoolClient`-API-Anforderung festlegen. Weitere Informationen finden Sie unter [Ein Beispiel für eine Authentifizierungssitzung](authentication.md#amazon-cognito-user-pools-authentication-flow).
+ Wenn ein Benutzer erfolgreich einen Code aus einer SMS oder E-Mail-Nachricht eingibt, die Amazon Cognito an eine nicht verifizierte Telefonnummer oder E-Mail-Adresse gesendet hat, markiert Amazon Cognito das entsprechende Attribut als verifiziert.
+ Damit ein Benutzer eine Self-Service-Änderung am Wert einer Telefonnummer oder E-Mail-Adresse vornehmen kann, die mit MFA verknüpft ist, muss er sich anmelden und die Anfrage mit einem Zugriffstoken autorisieren. Wenn sie nicht auf ihre aktuelle Telefonnummer oder E-Mail-Adresse zugreifen können, können sie sich nicht anmelden. Ihr Team muss diese Werte mit AWS Administratoranmeldedaten in [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API-Anfragen ändern.
+ Nachdem Sie [SMS in Ihrem Benutzerpool konfiguriert](user-pool-sms-settings.md) haben, können Sie SMS-Nachrichten nicht mehr als verfügbaren MFA-Faktor deaktivieren.

# TOTP-Software-Token-MFA
<a name="user-pool-settings-mfa-totp"></a>

Wenn Sie das TOTP-Software-Token-MFA in Ihrem Benutzerpool einrichten, meldet sich Ihr Benutzer mit einem Benutzernamen und einem Kennwort an und schließt die Authentifizierung dann mit einem TOTP ab. Nachdem Ihr Benutzer einen Benutzernamen und ein Passwort festgelegt und verifiziert hat, kann er ein TOTP-Software-Token für MFA aktivieren. Wenn Ihre App die von Amazon Cognito verwaltete Anmeldung verwendet, um Benutzer anzumelden, gibt Ihr Benutzer seinen Benutzernamen und sein Passwort ein und gibt dann das TOTP-Passwort auf einer zusätzlichen Anmeldeseite ein.

Sie können TOTP-MFA für Ihren Benutzerpool in der Amazon-Cognito-Konsole aktivieren oder die Amazon-Cognito-API-Operationen verwenden. Auf Benutzerpoolebene können Sie aufrufen, um MFA [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)zu konfigurieren und TOTP MFA zu aktivieren.

**Anmerkung**  
Wenn Sie die TOTP-Software-Token-MFA für den Benutzerpool nicht aktiviert haben, kann Amazon Cognito das Token nicht verwenden, um Benutzer zuzuordnen und zu verifizieren. In diesem Fall erhalten Benutzer eine `SoftwareTokenMFANotFoundException` Ausnahme mit der Beschreibung `Software Token MFA has not been enabled by the userPool`. Wenn Sie das Software-Token-MFA später für den Benutzerpool deaktivieren, können Benutzer, die zuvor ein TOTP-Token zugeordnet und verifiziert haben, es weiterhin für MFA verwenden.

TOTP wird für Benutzer in mehreren Schritten konfiguriert. Der Benutzer erhält dabei einen geheimen Code, den er durch Eingabe eines einmaligen Passworts bestätigt. Danach können Sie TOTP-MFA für den Benutzer aktivieren oder TOTP als bevorzugte MFA-Methode für den Benutzer festlegen.

Wenn Sie Ihren Benutzerpool so konfigurieren, dass TOTP MFA erforderlich ist, und sich Ihre Benutzer über die verwaltete Anmeldung für Ihre App registrieren, automatisiert Amazon Cognito den Benutzerprozess. Amazon Cognito fordert Ihre Benutzer auf, eine MFA-Methode auszuwählen, zeigt einen QR-Code an, um ihre Authentifizierungs-App einzurichten, und überprüft ihre MFA-Registrierung. In Benutzerpools, in denen Sie Benutzern erlaubt haben, zwischen SMS- und TOTP-MFA zu wählen, bietet Amazon Cognito Ihren Benutzern verschiedene Methoden zur Auswahl an.

**Wichtig**  
Wenn Sie eine AWS WAF Web-ACL mit einem Benutzerpool verknüpft haben und eine Regel in Ihrer Web-ACL ein CAPTCHA enthält, kann dies zu einem nicht behebbaren Fehler bei der TOTP-Registrierung mit verwalteter Anmeldung führen. Informationen zum Erstellen einer Regel mit einer CAPTCHA-Aktion, die sich nicht auf das TOTP für verwaltete Logins auswirkt, finden Sie unter. [Konfiguration Ihrer AWS WAF Web-ACL für die verwaltete Anmeldung TOTP MFA](#totp-waf) Weitere Informationen zu AWS WAF Web ACLs und Amazon Cognito finden Sie unter[Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md).

Informationen zur Implementierung von TOTP MFA in einer maßgeschneiderten Benutzeroberfläche mit einem AWS SDK und der [Amazon Cognito Cognito-Benutzerpools-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) finden Sie unter. [Konfiguration von TOTP MFA für einen Benutzer](#totp-mfa-set-up-api)

Informationen darüber, wie Sie Ihrem Benutzerpool eine MFA hinzufügen, finden Sie unter [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md).

**TOTP MFA Überlegungen und Einschränkungen**

1. Amazon Cognito unterstützt Softwaretoken-MFA über eine Authentifizierungs-App, die TOTP-Codes generiert. Amazon Cognito unterstützt kein hardwarebasiertes MFA.

1. Wenn Ihr Benutzerpool TOTP für einen Benutzer benötigt, der ihn nicht konfiguriert hat, erhält Ihr Benutzer ein einmaliges Zugriffstoken, mit dem Ihre App TOTP MFA für den Benutzer aktivieren kann. Nachfolgende Anmeldeversuche schlagen fehl, bis Ihr Benutzer einen zusätzlichen TOTP-Anmeldefaktor registriert hat.
   + Ein Benutzer, der sich mit dem `SignUp` API-Vorgang oder über die verwaltete Anmeldung in Ihrem Benutzerpool anmeldet, erhält Einmal-Token, wenn der Benutzer die Registrierung abgeschlossen hat.
   + Nachdem Sie einen Benutzer erstellt haben und der Benutzer sein erstes Passwort festgelegt hat, gibt Amazon Cognito Einmal-Token von der verwalteten Anmeldung an den Benutzer aus. Wenn Sie ein dauerhaftes Passwort für den Benutzer festlegen, gibt Amazon Cognito bei der erstmaligen Anmeldung des Benutzers einmalige Token aus.
   + Amazon Cognito gibt keine einmaligen Token an einen vom Administrator erstellten Benutzer aus, der sich mit den [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)oder API-Vorgängen anmeldet. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Nachdem es Ihrem Benutzer in der Aufforderung gelungen ist, ein Anfangspasswort festzulegen, oder wenn Sie ein dauerhaftes Passwort für den Benutzer festlegen, fordert Amazon Cognito den Benutzer sofort auf, MFA einzurichten.

1. Wenn ein Benutzer in einem Benutzerpool, der MFA benötigt, bereits ein einmaliges Zugriffstoken erhalten hat, aber TOTP MFA nicht eingerichtet hat, kann sich der Benutzer erst mit verwalteter Anmeldung anmelden, wenn er MFA eingerichtet hat. Anstelle des Zugriffstokens können Sie den `session` Antwortwert einer Anfrage [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)oder [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)in einer `MFA_SETUP` Anfrage verwenden. [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)

1. Wenn Ihre Benutzer TOTP eingerichtet haben, können sie es auch dann für MFA verwenden, wenn Sie TOTP für den Benutzerpool später deaktivieren.

1. Amazon Cognito akzeptiert nur Apps TOTPs von Authenticator, die Codes mit der HMAC-Hash-Funktion generieren. SHA1 Mit SHA-256-Hashing generierte Codes geben einen `Code mismatch`-Fehler zurück.

## Konfiguration von TOTP MFA für einen Benutzer
<a name="totp-mfa-set-up-api"></a>

Wenn sich ein Benutzer zum ersten Mal anmeldet, verwendet Ihre App das einmalige Zugriffstoken zur Generierung des privaten TOTP-Schlüssels und präsentiert ihn Ihrem Benutzer in Text- oder QR-Codeformat. Ihr Benutzer konfiguriert seine Authentifizierungs-App und stellt ein TOTP für nachfolgende Anmeldeversuche bereit. Ihre App oder Ihre verwaltete Anmeldung präsentiert Amazon Cognito das TOTP in den Antworten auf MFA-Challenge-Antworten.

Unter bestimmten Umständen werden neue Benutzer bei der verwalteten Anmeldung aufgefordert, einen TOTP-Authentifikator einzurichten. Weitere Informationen finden Sie unter. [Einzelheiten der MFA-Logik zur Benutzerlaufzeit](user-pool-settings-mfa.md#user-pool-settings-mfa-user-outcomes)

**Topics**
+ [Zuordnen des TOTP-Software-Tokens](#user-pool-settings-mfa-totp-associate-token)
+ [Bestätigen des TOTP-Tokens](#user-pool-settings-mfa-totp-verification)
+ [Melden Sie sich mit TOTP-MFA an](#user-pool-settings-mfa-totp-sign-in)
+ [Entfernen des TOTP-Tokens](#user-pool-settings-mfa-totp-remove)

### Zuordnen des TOTP-Software-Tokens
<a name="user-pool-settings-mfa-totp-associate-token"></a>

Um das TOTP-Token zu verknüpfen, senden Sie dem Benutzer einen geheimen Code, den er mit einem einmaligen Passwort validieren muss. Token werden in drei Schritten verknüpft.

1. Wenn Ihr Benutzer das TOTP-Softwaretoken MFA auswählt, rufen Sie an, [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)um einen eindeutigen generierten gemeinsamen geheimen Schlüsselcode für das Benutzerkonto zurückzugeben. Sie können die Autorisierung entweder AssociateSoftwareToken mit einem Zugriffstoken oder einer Sitzungszeichenfolge durchführen. 

1. Ihre App präsentiert dem Benutzer den privaten Schlüssel oder einen QR-Code, den Sie anhand des privaten Schlüssels generieren. Ihr Nutzer muss den Schlüssel in eine TOTP-generierende App wie Google Authenticator eingeben, indem er entweder den QR-Code scannt, den Ihre Anwendung anhand des privaten Schlüssels generiert, oder indem er den Schlüssel manuell eingibt.

1. Ihr Benutzer gibt den Schlüssel ein oder scannt den QR-Code in eine Authentifizierungs-App wie Google Authenticator. Daraufhin beginnt die App mit der Generierung von Codes.

### Bestätigen des TOTP-Tokens
<a name="user-pool-settings-mfa-totp-verification"></a>

Als Nächstes bestätigen Sie das TOTP-Token. Fordern Sie Beispielcodes von Ihrem Benutzer an und stellen Sie sie dem Amazon Cognito-Service zur Verfügung, um zu bestätigen, dass der Benutzer wie folgt erfolgreich TOTP-Codes generiert.

1. Ihre App fordert Ihren Benutzer zur Eingabe eines Codes auf, um zu zeigen, dass er seine Authentifizierungs-App ordnungsgemäß eingerichtet hat.

1. Die Authentifizierungs-App des Benutzers zeigt ein temporäres Passwort an. Die Authentifizierungs-App erstellt das Passwort auf Basis des geheimen Schlüssels, den Sie dem Benutzer zur Verfügung gestellt haben.

1. Ihr Benutzer gibt sein temporäres Passwort ein. Ihre App übergibt das temporäre Passwort an Amazon Cognito in einer `[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)`-API-Anforderung.

1.  Amazon Cognito hat den mit dem Benutzer verknüpften geheimen Schlüssel beibehalten, und generiert ein TOTP und vergleicht ihn mit dem von Ihrem Benutzer bereitgestellten TOTP. Wenn sie übereinstimmen, gibt `VerifySoftwareToken` eine `SUCCESS`-Antwort zurück.

1. Amazon Cognito verknüpft den TOTP-Faktor mit dem Benutzer.

1. Wenn die `VerifySoftwareToken`-Vorgang eine `ERROR` Antwort ausgibt, stellen Sie sicher, dass die Uhr des Benutzers richtig eingestellt ist und dass er die maximale Zahl erneuter Versuche nicht überschritten hat. Amazon Cognito akzeptiert TOTP-Token innerhalb von 30 Sekunden vor oder nach dem Versuch, um kleinere Taktversätze zu berücksichtigen. Wenn Sie das Problem behoben haben, versuchen Sie den VerifySoftwareToken Vorgang erneut.

### Melden Sie sich mit TOTP-MFA an
<a name="user-pool-settings-mfa-totp-sign-in"></a>

Zu diesem Zeitpunkt meldet sich Ihr Benutzer mit dem zeitbasierten Einmalpasswort an. Der Prozess läuft folgendermaßen ab:

1. Benutzer geben ihren Benutzernamen und ihr Passwort ein, um sich bei Ihrer Client-App anzumelden.

1. Die TOTP-MFA-Eingabe wird angezeigt und der Benutzer wird von der Anwendung aufgefordert, ein temporäres Passwort einzugeben.

1. Der Benutzer erhält ein temporäres Passwort von einer zugeordneten TOTP-Generierung-App.

1. Der Benutzer gibt den TOTP-Code in der Client-App ein. Die Anwendung sendet eine Bestätigungsanforderung an den Amazon-Cognito-Service. Bei jeder Anmeldung [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)sollte aufgerufen werden, um eine Antwort auf die neue TOTP-Authentifizierungsherausforderung zu erhalten.

1. Wenn das Token von Amazon Cognito bestätigt wird, ist die Anmeldung erfolgreich abgeschlossen und der Benutzer fährt mit dem Authentifizierungsablauf fort. 

### Entfernen des TOTP-Tokens
<a name="user-pool-settings-mfa-totp-remove"></a>

Schließlich sollte Ihre App dem Benutzer erlauben, die TOTP-Konfiguration zu deaktivieren. Derzeit können Sie das TOTP-Softwaretoken eines Benutzers nicht löschen. Wenn Sie das Softwaretoken Ihres Benutzers ersetzen möchten, verknüpfen und verifizieren Sie ein neues Softwaretoken. Um TOTP-MFA für einen Benutzer zu deaktivieren, rufen Sie an, um Ihren Benutzer so [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)zu ändern, dass er kein MFA oder nur SMS-MFA verwendet.

1. Erstellen Sie in Ihrer App eine Schnittstelle für Benutzer, die die MFA zurücksetzen möchten. Fordern Sie einen Benutzer in dieser Schnittstelle zur Eingabe des Passworts auf.

1. Wenn Amazon Cognito eine TOTP-MFA-Anfrage zurückgibt, aktualisieren Sie die MFA-Präferenz Ihres Benutzers mit. [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)

1. Teilen Sie dem Benutzer in Ihrer App mit, dass MFA deaktiviert wurde, und fordern Sie ihn auf, sich erneut anzumelden.

## Konfiguration Ihrer AWS WAF Web-ACL für die verwaltete Anmeldung TOTP MFA
<a name="totp-waf"></a>

Wenn einem Benutzerpool eine AWS WAF Web-ACL zugeordnet ist und eine Regel in Ihrer Web-ACL ein CAPTCHA enthält, kann dies zu einem nicht behebbaren Fehler bei der TOTP-Registrierung mit verwalteter Anmeldung führen. AWS WAF CAPTCHA-Regeln haben diesen Effekt *nur* auf TOTP MFA in der verwalteten Anmeldung und in der klassischen gehosteten Benutzeroberfläche. Die SMS-MFA ist nicht betroffen.

Amazon Cognito zeigt den folgenden Fehler an, wenn Ihre CAPTCHA-Regel es einem Benutzer nicht erlaubt, die TOTP-MFA-Einrichtung abzuschließen. 

Anfrage aufgrund des WAF-Captchas nicht zulässig.

Dieser Fehler tritt auf, wenn AWS WAF Sie als Antwort auf [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)API-Anfragen, die Ihr Benutzerpool im Hintergrund stellt, zur [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)Eingabe eines CAPTCHA aufgefordert werden. Um eine Regel mit einer CAPTCHA-Aktion zu erstellen, die sich nicht auf TOTP auf verwalteten Anmeldeseiten auswirkt, schließen Sie die `x-amzn-cognito-operation-name` Header-Werte von `AssociateSoftwareToken` und `VerifySoftwareToken` aus der CAPTCHA-Aktion in Ihrer Regel aus.

Der folgende Screenshot zeigt eine AWS WAF Beispielregel, die eine CAPTCHA-Aktion auf alle Anfragen anwendet, die keinen Header-Wert von oder haben. `x-amzn-cognito-operation-name` `AssociateSoftwareToken` `VerifySoftwareToken`

![\[Ein Screenshot einer AWS WAF Regel, die eine CAPTCHA-Aktion auf alle Anfragen anwendet, die keinen x-amzn-cognito-operation-name Header-Wert von oder haben. AssociateSoftwareToken VerifySoftwareToken\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-WAF-rule-TOTP.png)


Weitere Informationen zu AWS WAF Web ACLs und Amazon Cognito finden Sie unter[Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md).

# Erweiterte Sicherheit mit Bedrohungsschutz
<a name="cognito-user-pool-settings-threat-protection"></a>

Nachdem Sie Ihren Benutzerpool erstellt haben, haben Sie im Navigationsmenü der Amazon Cognito Cognito-Konsole Zugriff auf **Bedrohungsschutz**. Sie können die Funktionen zum Schutz vor Bedrohungen aktivieren und die Maßnahmen anpassen, die als Reaktion auf verschiedene Risiken ergriffen werden. Sie können auch den Prüfmodus verwenden, um Metriken zu erkannten Risiken zu erfassen, ohne Sicherheitsminderungen anzuwenden. Im Auditmodus veröffentlicht Threat Protection Kennzahlen an Amazon CloudWatch. Sie können Metriken sehen, nachdem Amazon Cognito sein erstes Ereignis generiert hat. Siehe [Metriken zum Schutz vor Bedrohungen anzeigen](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Der Bedrohungsschutz, früher als *erweiterte Sicherheitsfunktionen* bezeichnet, besteht aus einer Reihe von Tools zur Überwachung unerwünschter Aktivitäten in Ihrem Benutzerpool sowie aus Konfigurationstools zur automatischen Abschaltung potenziell bösartiger Aktivitäten. Der Bedrohungsschutz bietet verschiedene Konfigurationsoptionen für standardmäßige und benutzerdefinierte Authentifizierungsvorgänge. Möglicherweise möchten Sie beispielsweise eine Benachrichtigung an einen Benutzer mit einer verdächtigen benutzerdefinierten Authentifizierung senden, für den Sie zusätzliche Sicherheitsfaktoren eingerichtet haben, aber einen Benutzer mit derselben Risikostufe mit einfacher Benutzername/Kennwortauthentifizierung blockieren.

Der Bedrohungsschutz ist im Plus-Funktionsplan verfügbar. Weitere Informationen finden Sie unter [Funktionspläne für Benutzerpools](cognito-sign-in-feature-plans.md).

Die folgenden Benutzerpool-Optionen sind die Komponenten des Bedrohungsschutzes.

**Kompromittierte Anmeldeinformationen**  
Benutzer verwenden Passwörter für mehrere Benutzerkonten erneut. Die Funktion für kompromittierte Anmeldeinformationen von Amazon Cognito kompiliert Daten aus öffentlich zugänglichen Benutzernamen und Passwörtern und vergleicht die Anmeldeinformationen Ihrer Benutzer mit Listen von offengelegten Anmeldeinformationen. Die Erkennung kompromittierter Anmeldeinformationen sucht auch nach häufig erratenen Passwörtern. Sie können in username-and-password Standardauthentifizierungsabläufen in Benutzerpools nach kompromittierten Anmeldeinformationen suchen. Amazon Cognito erkennt keine kompromittierten Anmeldeinformationen in Secure Remote Password (SRP) oder benutzerdefinierter Authentifizierung.  
Sie können die Benutzeraktionen auswählen, die eine Überprüfung auf kompromittierte Anmeldeinformationen veranlassen, sowie die Aktion, die Amazon Cognito als Reaktion darauf durchführen soll. Bei Anmelde-, Registrierungs- und Kennwortänderungsereignissen kann Amazon Cognito die Anmeldung **blockieren** oder die Anmeldung **zulassen**. In beiden Fällen generiert Amazon Cognito ein Benutzeraktivitätsprotokoll, in dem Sie weitere Informationen zu dem Ereignis finden.  
**Weitere Informationen**  
[Arbeiten mit der Erkennung kompromittierter Anmeldeinformationen](cognito-user-pool-settings-compromised-credentials.md)

**Adaptive Authentifizierung**  
Amazon Cognito kann Standort- und Geräteinformationen aus Anmeldeanfragen Ihrer Benutzer überprüfen und automatisch reagieren, um die Benutzerkonten in Ihrem Benutzerpool vor verdächtigen Aktivitäten zu schützen. Sie können die Benutzeraktivitäten überwachen und die Reaktion auf erkannte Risikostufen bei Benutzername/Passwort und SRP sowie bei der benutzerdefinierten Authentifizierung automatisieren.  
Wenn Sie den Bedrohungsschutz aktivieren, weist Amazon Cognito der Benutzeraktivität eine Risikobewertung zu. Sie können eine automatische Reaktion auf verdächtige Aktivitäten zuweisen: Sie können **MFA verlangen**, die **Anmeldung blockieren** oder lediglich die Aktivitätsdetails und die Risikobewertung protokollieren. Sie können Ihren Benutzer auch automatisch per E-Mail über die verdächtige Aktivität informieren, so dass er sein Passwort zurücksetzen oder andere selbstgesteuerte Maßnahmen ergreifen kann.  
**Weitere Informationen**  
[Arbeiten Sie mit adaptiver Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md)

**Liste der zugelassenen und verweigerten IP-Adressen**  
Mit dem Bedrohungsschutz von Amazon Cognito im **Vollfunktionsmodus** können Sie IP-Adressen erstellen: **Immer blockieren** und Ausnahmen **immer zulassen**. Einer Sitzung von einer IP-Adresse auf der Ausnahmeliste **Immer blockieren** wird durch adaptive Authentifizierung keine Risikostufe zugewiesen und kann sich nicht bei Ihrem Benutzerpool anmelden.  

**Wissenswertes über Zulassungs- und Blocklisten für IP-Adressen**
+ Sie müssen **Always block** und **Always allow** im CIDR-Format angeben`192.0.2.0/24`, z. B. eine 24-Bit-Maske oder `192.0.2.252/32` eine einzelne IP-Adresse.
+  Geräte mit IP-Adressen im IP-Bereich „**Immer blockieren**“ können sich nicht mit SDK-basierten oder verwalteten Anmeldeanwendungen registrieren oder anmelden, sie können sich jedoch mit Drittanbieteranwendungen anmelden. IdPs 
+ Die Listen „**Immer zulassen**“ und „**Immer blockieren**“ wirken sich nicht auf die Token-Aktualisierung aus.
+ Amazon Cognito wendet keine MFA-Regeln für die adaptive Authentifizierung auf Geräte aus dem IP-Bereich „**Immer zulassen**“ an, wendet jedoch Regeln für kompromittierte Anmeldeinformationen an.

**Export von Protokollen**  
Der Bedrohungsschutz protokolliert detaillierte Details der Authentifizierungsanfragen der Benutzer in Ihrem Benutzerpool. Diese Protokolle enthalten Bedrohungsbeurteilungen, Benutzerinformationen und Sitzungsmetadaten wie Standort und Gerät. Sie können externe Archive dieser Protokolle zur Aufbewahrung und Analyse erstellen. Amazon Cognito Cognito-Benutzerpools exportieren Bedrohungsschutzprotokolle nach Amazon S3, CloudWatch Logs und Amazon Data Firehose. Weitere Informationen finden Sie unter [Benutzerereignisverlauf anzeigen und exportieren](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).  
**Weitere Informationen**  
[Exportieren von Benutzeraktivitätsprotokollen zum Schutz gegen Bedrohungen](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity)

**Topics**
+ [Überlegungen und Einschränkungen beim Schutz vor Bedrohungen](#cognito-user-pool-threat-protection-considerations)
+ [Den Bedrohungsschutz in Benutzerpools aktivieren](#cognito-user-pool-threat-protection-activating)
+ [Konzepte zur Durchsetzung des Bedrohungsschutzes](#cognito-user-pool-settings-threat-protection-threat-protection-enforcement)
+ [Bedrohungsschutz für Standardauthentifizierung und benutzerdefinierte Authentifizierung](#cognito-user-pool-settings-threat-protection-threat-protection-types)
+ [Voraussetzungen für den Schutz vor Bedrohungen](#cognito-user-pool-threat-protection-prerequisites)
+ [Schutz vor Bedrohungen einrichten](#cognito-user-pool-settings-configure-threat-protection)
+ [Arbeiten mit der Erkennung kompromittierter Anmeldeinformationen](cognito-user-pool-settings-compromised-credentials.md)
+ [Arbeiten Sie mit adaptiver Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md)
+ [Erfassung von Daten für den Schutz vor Bedrohungen in Anwendungen](user-pool-settings-viewing-threat-protection-app.md)

## Überlegungen und Einschränkungen beim Schutz vor Bedrohungen
<a name="cognito-user-pool-threat-protection-considerations"></a>

**Die Optionen zum Schutz vor Bedrohungen unterscheiden sich je nach Authentifizierungsablauf**  
Amazon Cognito unterstützt sowohl die adaptive Authentifizierung als auch die Erkennung kompromittierter Anmeldeinformationen mit den Authentifizierungsabläufen und. `USER_PASSWORD_AUTH` `ADMIN_USER_PASSWORD_AUTH` Sie können nur die adaptive Authentifizierung für aktivieren. `USER_SRP_AUTH` Sie können den Bedrohungsschutz nicht mit föderierter Anmeldung verwenden.

**Beiträge zur Anforderung von Kontingenten immer blockieren IPs**  
Blockierte Anfragen von IP-Adressen auf einer Ausnahmeliste **Immer blockieren** in Ihrem Benutzerpool trägt zu den [Anforderungsratenkontingenten](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#category_operations) für Ihre Benutzerpools bei.

**Beim Bedrohungsschutz gibt es keine Ratenbegrenzungen**  
Ein Teil des bösartigen Datenverkehrs zeichnet sich durch eine hohe Anzahl von Anfragen aus, wie z. B. Distributed-Denial-of-Service-Angriffe (DDoS). Die Risikoeinstufungen, die Amazon Cognito auf eingehenden Datenverkehr anwendet, gelten pro Anfrage und berücksichtigen nicht das Anforderungsvolumen. Einzelne Anfragen in einem Ereignis mit hohem Volumen können aus Gründen auf Anwendungsebene, die nichts mit ihrer Rolle bei einem volumetrischen Angriff zu tun haben, mit einer Risikobewertung und einer automatisierten Antwort versehen werden. Um Schutzmaßnahmen gegen volumetrische Angriffe in Ihren Benutzerpools zu implementieren, fügen Sie Web hinzu. AWS WAF ACLs Weitere Informationen finden Sie unter [Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md).

**Der Bedrohungsschutz wirkt sich nicht auf M2M-Anfragen aus**  
Die Gewährung von Kundenanmeldedaten ist für die machine-to-machine (M2M-) Autorisierung ohne Verbindung zu Benutzerkonten vorgesehen. Der Bedrohungsschutz überwacht nur Benutzerkonten und Passwörter in Ihrem Benutzerpool. Um Sicherheitsfunktionen in Ihre M2M-Aktivitäten zu integrieren, sollten Sie die Funktionen AWS WAF zur Überwachung von Anforderungsraten und Inhalten in Betracht ziehen. Weitere Informationen finden Sie unter [Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu](user-pool-waf.md).

## Den Bedrohungsschutz in Benutzerpools aktivieren
<a name="cognito-user-pool-threat-protection-activating"></a>

------
#### [ Amazon Cognito user pools console ]

**Um den Bedrohungsschutz für einen Benutzerpool zu aktivieren**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. 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. Falls Sie dies noch nicht getan haben, aktivieren Sie den Plus-Funktionsplan im Menü **Einstellungen**.

1. Wählen Sie das Menü **Bedrohungsschutz** und dann **Aktivieren** aus.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ API ]

Stellen Sie Ihren Funktionsplan in einer [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 auf Plus ein. Im folgenden Teil des Anfragetextes wird der Bedrohungsschutz auf den Vollfunktionsmodus gesetzt. Ein vollständiges Beispiel für eine Anfrage finden Sie unter [Beispiele](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples).

```
"UserPoolAddOns": { 
      "AdvancedSecurityMode": "ENFORCED"
   }
```

------

Bedrohungsschutz ist der Sammelbegriff für Funktionen, die Benutzervorgänge auf Anzeichen einer Kontoübernahme hin überwachen und automatisch auf sichere betroffene Benutzerkonten reagieren. Sie können Einstellungen für den Bedrohungsschutz auf Benutzer anwenden, wenn sie sich mit standardmäßigen und benutzerdefinierten Authentifizierungsabläufen anmelden.

Der Bedrohungsschutz [generiert Protokolle](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history), in denen die An- und Abmeldung der Benutzer sowie andere Aktivitäten detailliert beschrieben werden. Sie können diese Protokolle auf ein System eines Drittanbieters exportieren. Weitere Informationen finden Sie unter [Benutzerereignisverlauf anzeigen und exportieren](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).

## Konzepte zur Durchsetzung des Bedrohungsschutzes
<a name="cognito-user-pool-settings-threat-protection-threat-protection-enforcement"></a>

Der Bedrohungsschutz beginnt mit einem *reinen Auditmodus*, in dem Ihr Benutzerpool die Benutzeraktivitäten überwacht, Risikostufen zuweist und Protokolle generiert. *Es hat sich bewährt, zwei Wochen oder länger den Modus nur für Audits zu verwenden, bevor Sie den Vollfunktionsmodus aktivieren.* Der Vollfunktionsmodus umfasst eine Reihe von automatischen Reaktionen auf erkannte riskante Aktivitäten und kompromittierte Passwörter. Im Modus „Nur Audit“ können Sie die Bedrohungsbeurteilungen überwachen, die Amazon Cognito durchführt. Sie können auch [Feedback geben](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-feedback), um die Funktion anhand falscher positiver und negativer Ergebnisse zu schulen.

Sie können die Durchsetzung des Bedrohungsschutzes auf Benutzerpoolebene so konfigurieren, dass sie alle App-Clients im Benutzerpool abdeckt, und auf Ebene einzelner App-Clients. Konfigurationen zum Schutz vor Bedrohungen durch App-Clients haben Vorrang vor der Konfiguration des Benutzerpools. Um den Bedrohungsschutz für einen App-Client zu konfigurieren, navigieren Sie im App-Client-Menü Ihres Benutzerpools in der Amazon Cognito Cognito-Konsole zu den **App-Client-Einstellungen**. Dort können Sie **Einstellungen auf Client-Ebene verwenden** und die Erzwingung ausschließlich für den App-Client konfigurieren.

Darüber hinaus können Sie den Bedrohungsschutz für standardmäßige und benutzerdefinierte Authentifizierungstypen separat konfigurieren.

## Bedrohungsschutz für Standardauthentifizierung und benutzerdefinierte Authentifizierung
<a name="cognito-user-pool-settings-threat-protection-threat-protection-types"></a>

Wie Sie den Bedrohungsschutz konfigurieren können, hängt von der Art der Authentifizierung ab, die Sie in Ihrem Benutzerpool und Ihren App-Clients vornehmen. Jede der folgenden Authentifizierungstypen kann ihren eigenen Erzwingungsmodus und ihre eigenen automatisierten Antworten haben.

**Standardauthentifizierung**  
Die *Standardauthentifizierung* umfasst Benutzeranmeldung, Abmeldung und Passwortverwaltung mit Benutzername-Passwort-Flows und bei verwalteter Anmeldung. Amazon Cognito Threat Protection überwacht Operationen auf Risikoindikatoren, wenn sie sich mit verwaltetem Login anmelden oder die folgenden `AuthFlow` API-Parameter verwenden:    
**[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)**  
`USER_PASSWORD_AUTH`,`USER_SRP_AUTH`. Die Funktion für kompromittierte Anmeldeinformationen hat bei der `USER_SRP_AUTH` Anmeldung keinen Zugriff auf Passwörter und überwacht und reagiert auch nicht auf Ereignisse mit diesem Ablauf.  
**[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)**  
`ADMIN_USER_PASSWORD_AUTH`,. `USER_SRP_AUTH` Die Funktion für kompromittierte Anmeldeinformationen hat bei der `USER_SRP_AUTH` Anmeldung keinen Zugriff auf Passwörter und überwacht und reagiert auch nicht auf Ereignisse mit diesem Ablauf.
Sie können den **Erzwingungsmodus** für die Standardauthentifizierung auf **Nur Prüfung** oder **Vollzugriff** festlegen. Um die Bedrohungsüberwachung für die Standardauthentifizierung zu deaktivieren, setzen Sie den Bedrohungsschutz auf **Keine Durchsetzung**.

**Benutzerdefinierte Authentifizierung**  
Bei der *benutzerdefinierten Authentifizierung* handelt es sich um eine Benutzeranmeldung mit [benutzerdefinierten Challenge-Lambda-Triggern.](user-pool-lambda-challenge.md) Bei der verwalteten Anmeldung können Sie keine benutzerdefinierte Authentifizierung durchführen. Amazon Cognito Threat Protection überwacht Operationen auf Risikoindikatoren, wenn sie sich mit dem `AuthFlow` API-Parameter `CUSTOM_AUTH` `InitiateAuth` und `AdminInitiateAuth` anmelden.  
Sie können den **Erzwingungsmodus** für die benutzerdefinierte Authentifizierung auf „**Nur Prüfung**“, „**Vollständige Funktion**“ oder „**Keine Durchsetzung**“ festlegen. Die Option **Keine Durchsetzung** deaktiviert die Bedrohungsüberwachung für die benutzerdefinierte Authentifizierung, ohne dass andere Funktionen zum Schutz vor Bedrohungen beeinträchtigt werden.

## Voraussetzungen für den Schutz vor Bedrohungen
<a name="cognito-user-pool-threat-protection-prerequisites"></a>

Bevor Sie beginnen, muss Folgendes sichergestellt sein:
+ Einen Benutzerpool mit einem App-Client. Weitere Informationen finden Sie unter [Erste Schritte mit Benutzerpools](getting-started-user-pools.md).
+ Setzen Sie die Multi-Faktor-Authentifizierung (MFA) in der Amazon-Cognito-Konsole auf **Optional**, um die risikobasierte adaptive Authentifizierung zu verwenden. Weitere Informationen finden Sie unter [Hinzufügen der MFA zu einem Benutzerpool](user-pool-settings-mfa.md).
+ Wenn Sie E-Mail-Benachrichtigungen verwenden, öffnen Sie die [Amazon-SES-Konsole](https://console.aws.amazon.com/ses/home), um die E-Mail-Adresse oder Domäne zu konfigurieren und zu verifizieren, die für Ihre E-Mail-Nachrichten verwendet werden soll. Weitere Informationen über Amazon SES finden Sie unter [Verifizieren von Identitäten in Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).

## Schutz vor Bedrohungen einrichten
<a name="cognito-user-pool-settings-configure-threat-protection"></a>

Folgen Sie diesen Anweisungen, um den Bedrohungsschutz für den Benutzerpool einzurichten.

**Anmerkung**  
Um eine andere Bedrohungsschutzkonfiguration für einen App-Client in der Amazon Cognito-Benutzerpools-Konsole einzurichten, wählen Sie den App-Client im Menü **App-Clients** aus und wählen Sie Einstellungen **auf Client-Ebene verwenden**.

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

**Um den Bedrohungsschutz für einen Benutzerpool zu konfigurieren**

1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. 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ü **Bedrohungsschutz** und dann **Aktivieren** aus.

1. Wählen Sie die Methode zum Schutz vor Bedrohungen, die Sie konfigurieren möchten: **Standardauthentifizierung und benutzerdefinierte Authentifizierung**. Sie können verschiedene Erzwingungsmodi für die benutzerdefinierte und die Standardauthentifizierung festlegen, aber im **Vollfunktionsmodus** gilt dieselbe Konfiguration für automatische Antworten.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie einen **Erzwingungsmodus**. Um sofort auf erkannte Risiken zu reagieren, wählen Sie **Vollständige Funktionalität** und konfigurieren Sie die automatischen Reaktionen auf kompromittierte Anmeldeinformationen und die adaptive Authentifizierung. Um Informationen in Logs und Logs auf Benutzerebene zu sammeln CloudWatch, wählen Sie Nur **Audit** aus.

   Wir empfehlen, den Bedrohungsschutz zwei Wochen lang im Überwachungsmodus zu lassen, bevor Sie Aktionen aktivieren. Während dieser Zeit kann Amazon Cognito die Nutzungsmuster Ihrer App-Benutzer kennenlernen und Sie können Feedback zu Ereignissen geben, um die Antworten anzupassen.

1. Wenn Sie **Audit only** (Nur prüfen) ausgewählt haben, wählen Sie **Save changes** (Änderungen speichern) aus. Wenn Sie **Full function** (Vollständige Funktion) ausgewählt haben:

   1. Wählen Sie aus, ob Sie eine **benutzerdefinierte** Aktion ausführen oder **Cognito-Standardfunktionen** verwenden möchten, um auf möglicherweise **kompromittierte Anmeldeinformationen** zu reagieren. **Cognito-Standardfunktionen**:

      1. Erkennen kompromittierter Anmeldeinformationen bei **Anmeldung**, **Registrierung** und **Passwortänderung**.

      1. Reagieren Sie auf kompromittierte Anmeldeinformationen mit der Aktion **Block sign-in** (Anmeldung blockieren).

   1. Wenn Sie **Custom** (benutzerdefinierte) Aktionen für **Compromised credentials** (kompromittierte Anmeldeinformationen) ausgewählt haben, wählen Sie die Benutzerpool-Aktionen aus, die Amazon Cognito für die **Event detection** (Ereigniserkennung) verwendet, sowie die **Compromised credentials responses** (Antworten auf kompromittierte Anmeldeinformationen), die Amazon Cognito auslösen soll. Sie können bei möglicherweise kompromittierten Anmeldeinformationen entweder die **Anmeldung blockieren** oder die **Anmeldung zulassen**.

   1. Wählen Sie unter **Adaptive authentication** (Adaptive Authentifizierung) aus, wie Sie auf schädliche Anmeldeversuche reagieren möchten. Wählen Sie aus, ob Sie eine **benutzerdefinierte** Aktion ausführen oder **Cognito-Standardfunktionen** verwenden möchten, um auf verdächtige schädliche Aktivitäten zu reagieren. Wenn Sie ** Cognito defaults** (Cognito-Standardfunktionen) auswählen, blockiert Amazon Cognito die Anmeldung auf allen Risikostufen und benachrichtigt den Benutzer nicht.

   1. Wenn Sie **benutzerdefinierte** Aktionen für **Adaptive authentication** (Adaptive Authentifizierung) ausgewählt haben, wählen Sie die Aktion **Automatic risk repsonse** (Automatische Reaktion auf Risiken) aus. Amazon Cognito wird diese verwenden, um je nach Schweregrad auf erkannte Risiken zu reagieren. Wenn Sie einer Risikostufe eine Reaktion zuweisen, können Sie einem höheren Risiko keine weniger restriktive Reaktion zuweisen. Sie können den Risikostufen folgende Reaktionen zuweisen:

      1. **Allow sign-in** (Anmeldung zulassen) – Ergreifen Sie keine vorbeugenden Maßnahmen.

      1. **Optional MFA** (Optionale MFA) – Wenn der Benutzer MFA konfiguriert hat, verlangt Amazon Cognito, dass der Benutzer bei der Anmeldung immer einen zusätzlichen SMS- oder zeitgesteuerten Einmalpasswort (TOTP)-Faktor bereitstellt. Wenn der Benutzer keine MFA konfiguriert hat, kann er sich weiterhin normal anmelden.

      1. **Optionale MFA** – Wenn der Benutzer MFA konfiguriert hat, verlangt Amazon Cognito, dass der Benutzer bei der Anmeldung immer einen zusätzlichen SMS- oder TOTP-Faktor bereitstellt. Wenn der Benutzer keine MFA konfiguriert hat, fordert Amazon Cognito ihn auf, MFA einzurichten. Bevor Sie automatisch MFA für Ihre Benutzer anfordern, konfigurieren Sie in Ihrer App einen Mechanismus, um Telefonnummern für SMS-MFA zu erfassen oder Authentifizierungs-Apps für TOTP MFA zu registrieren.

      1. **Block sign-in** (Anmeldung blockieren) – Verhindern Sie, dass sich der Benutzer anmeldet.

      1. **Notify user** (Benutzer benachrichtigen) – Senden Sie dem Benutzer eine E-Mail-Nachricht mit Informationen über das Risiko, das Amazon Cognito festgestellt hat, und Ihre Reaktion auf das Risiko. Sie können E-Mail-Nachrichtenvorlagen für von Ihnen gesendete Nachrichten anpassen.

1. Wenn Sie im vorherigen Schritt **Notify user** (Benutzer benachrichtigen) ausgewählt haben, können Sie Ihre Einstellungen für die E-Mail-Zustellung und E-Mail-Nachrichtenvorlagen für die adaptive Authentifizierung anpassen.

   1. Wählen Sie unter **Email configuration** (E-Mail-Konfiguration) die **SES Region** (SES-Region), die **FROM email address** (Absender-E-Mail-Adresse), die **FROM sender name** (Absendernamen) und die **REPLY-TO email address** (Empfänger-E-Mail-Adresse) aus, die Sie für die adaptive Authentifizierung verwenden möchten. Weitere Informationen zur Integration Ihrer Benutzerpool-E-Mail-Nachrichten in Amazon Simple Email Service finden Sie unter [Email settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html) (E-Mail-Einstellungen für Amazon-Cognito-Benutzerpools).  
![\[Ereignisverlauf des Benutzers\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-advanced-security-ses-notification.png)

   1. Wählen Sie **Email templates** (E-Mail-Vorlagen) aus, um Benachrichtigungen der adaptiven Authentifizierung für HTML- und Klartext-Versionen von E-Mail-Nachrichten anzupassen. Weitere Informationen über E-Mail-Nachrichtenvorlagen finden Sie unter [Nachrichtenvorlagen](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

1. Erweitern Sie **IP-Adressausnahmen**, um eine Liste mit den **Optionen „Immer zulassen**“ oder „**Immer blockieren**“ mit IPv6 Adressbereichen zu erstellen, die unabhängig von der IPv4 Risikobewertung für den Bedrohungsschutz immer zugelassen oder blockiert werden. Geben Sie die IP-Adressbereiche in [CIDR-Notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) an (z. B. 192.168.100.0/24).

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ API (user pool) ]

Um die Konfiguration des Bedrohungsschutzes für einen Benutzerpool festzulegen, senden Sie eine [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API-Anfrage, die einen `UserPoolId` Parameter, aber keinen Parameter enthält. `ClientId` Im Folgenden finden Sie ein Beispiel für einen Anfragetext für einen Benutzerpool. Diese Risikokonfiguration sieht je nach Schwere des Risikos eine Reihe von Maßnahmen vor und benachrichtigt Benutzer aller Risikostufen. Bei Anmeldevorgängen wird der Zugriff auf kompromittierte Anmeldeinformationen gesperrt.

Um diese Konfiguration zu erzwingen, müssen Sie dies `ENFORCED` in einer separaten [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)Anfrage `AdvancedSecurityMode` oder einer API-Anfrage festlegen. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) Weitere Informationen zu den Platzhaltervorlagen wie `{username}` in diesem Beispiel finden Sie unter[Konfiguration von MFA-, Authentifizierungs-, Überprüfungs- und Einladungsnachrichten](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_IF_CONFIGURED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ],
      "SkippedIPRangeList": [ "203.0.113.0/24" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ API (app client) ]

Um die Bedrohungsschutzkonfiguration für einen App-Client festzulegen, senden Sie eine [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API-Anfrage, die einen `UserPoolId` Parameter und einen `ClientId` Parameter enthält. Im Folgenden finden Sie ein Beispiel für einen Anfragetext für einen App-Client. Diese Risikokonfiguration ist schwerwiegender als die Benutzerpoolkonfiguration und blockiert Einträge mit hohem Risiko. Außerdem werden bei der Registrierung und Anmeldung sowie beim Zurücksetzen des Kennworts Sperren kompromittierter Anmeldeinformationen blockiert.

Um diese Konfiguration zu erzwingen, müssen Sie in einer separaten Anfrage oder einer API-Anfrage auf festlegen`AdvancedSecurityMode`. `ENFORCED` [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) Weitere Informationen zu den Platzhaltervorlagen wie `{username}` in diesem Beispiel finden Sie unter[Konfiguration von MFA-, Authentifizierungs-, Überprüfungs- und Einladungsnachrichten](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "BLOCK",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "ClientId": "1example23456789",
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ],
      "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

# Arbeiten mit der Erkennung kompromittierter Anmeldeinformationen
<a name="cognito-user-pool-settings-compromised-credentials"></a>

Amazon Cognito kann erkennen, wenn Benutzername und Passwort eines Benutzers an anderer Stelle kompromittiert wurden. Dies kann der Fall sein, wenn Benutzer Anmeldeinformationen auf mehr als einer Website verwenden, oder wenn sie einfach zu erratende Passwörter auswählen. Amazon Cognito überprüft [lokale Benutzer](cognito-terms.md#terms-localuser), die sich mit Benutzername und Passwort, mit verwalteter Anmeldung und mit der Amazon Cognito Cognito-API anmelden.

Im **Bedrohungsschutz-Menü** der Amazon Cognito Cognito-Konsole können Sie **kompromittierte Anmeldeinformationen** konfigurieren. Konfigurieren Sie **Event detection** (Ereigniserkennung), um die Benutzerereignisse auszuwählen, die Sie auf kompromittierte Anmeldeinformationen überwachen möchten. Konfigurieren Sie **Compromised credentials responses** (Antworten auf kompromittierte Anmeldeinformationen), um zu entscheiden, ob der Benutzer bei Erkennung kompromittierter Anmeldeinformationen zugelassen oder blockiert werden soll. Amazon Cognito kann bei der Registrierung, Anmeldung und bei Passwortänderungen auf kompromittierte Anmeldeinformationen prüfen.

Wenn Sie **Anmeldung zulassen** wählen, können Sie Amazon CloudWatch Logs überprüfen, um die Bewertungen zu überwachen, die Amazon Cognito zu Benutzerereignissen vornimmt. Weitere Informationen finden Sie unter [Metriken zum Schutz vor Bedrohungen anzeigen](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics). Wenn Sie **Block sign-in** (Anmeldung blockieren) auswählen, verhindert Amazon Cognito die Anmeldung von Benutzern, die kompromittierte Anmeldeinformationen verwenden. Wenn Amazon Cognito die Anmeldung für einen Benutzer blockiert, wird der [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html) des Benutzers auf `RESET_REQUIRED` festgelegt. Ein Benutzer mit dem Status `RESET_REQUIRED` muss sein Passwort ändern, bevor er sich erneut anmelden kann.

Durch kompromittierte Anmeldeinformationen können Passwörter für die folgenden Benutzeraktivitäten überprüft werden.

**Registrieren**  
Ihr Benutzerpool überprüft die Passwörter, die Benutzer während des [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)Vorgangs und auf der Anmeldeseite des verwalteten Logins übertragen, auf Anzeichen für kompromittierte Zugriffe.

**Anmelden**  
Ihr Benutzerpool überprüft Passwörter, die Benutzer bei der kennwortbasierten Anmeldung eingeben, auf Anzeichen für eine Gefährdung. Amazon Cognito kann den `ADMIN_USER_PASSWORD_AUTH` Flow-In [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), den `USER_PASSWORD_AUTH` Flow-In [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und die `PASSWORD` `USER_AUTH` Flow-Option in beiden Fällen überprüfen.  
Derzeit führt Amazon Cognito bei der Anmeldung mit SRP (Secure Remote Password) keine Prüfung auf kompromittierte Anmeldeinformationen durch. SRP sendet bei der Anmeldung einen Hash-Passwortnachweis. Amazon Cognito hat keinen internen Zugriff auf Passwörter und kann daher nur ein Passwort auswerten, das Ihr Kunde ihm im Klartext übergibt.

**Zurücksetzen des Passworts**  
Ihr Benutzerpool sucht bei Vorgängen, bei denen neue Benutzerkennwörter mit dem [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)Self-Service-Vorgang zum Zurücksetzen von Passwörtern festgelegt werden, nach Anzeichen für eine Kompromittierung. Der Code, der für diesen Vorgang erforderlich ist, wird von [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)und [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)generiert.  
Bei kompromittierten Anmeldeinformationen werden temporäre oder permanente, vom Administrator festgelegte Passwörter, die mit eingerichtet wurden, nicht überprüft. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Bei temporären Kennwörtern überprüft Ihr Benutzerpool jedoch die Passwörter anhand der Antworten auf die `NEW_PASSWORD_REQUIRED` Abfrage in und. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)

Weitere Informationen darüber, wie Sie Ihrem Benutzerpool einen Schutz gegen nicht mehr zuverlässige Anmeldeinformationen hinzufügen, finden Sie unter [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md).

# Arbeiten Sie mit adaptiver Authentifizierung
<a name="cognito-user-pool-settings-adaptive-authentication"></a>

Mit der adaptiven Authentifizierung können Sie Ihren Benutzerpool so konfigurieren, dass verdächtige Anmeldungen blockiert werden, oder dass ein zweiter Faktor gefordert wird, wenn ein erhöhtes Risiko besteht. Bei jedem Anmeldeversuch generiert Amazon Cognito eine Risikobewertung, die angibt, wie wahrscheinlich es ist, dass die Anmeldeanforderung von einer kompromittierten Quelle stammt. Diese Risikobewertung basiert auf Geräte- und Benutzerfaktoren, die Ihre Anwendung bereitstellt, und anderen Faktoren, die Amazon Cognito aus der Anfrage ableitet. Einige Faktoren, die zur Risikobewertung durch Amazon Cognito beitragen, sind die IP-Adresse, der Benutzeragent und die geografische Entfernung zu anderen Anmeldeversuchen. Die adaptive Authentifizierung kann die Multi-Faktor-Authentifizierung (MFA) für einen Benutzer in Ihrem Benutzerpool aktivieren oder erfordern, wenn Amazon Cognito ein Risiko in einer Benutzersitzung erkennt und der Benutzer noch keine MFA-Methode ausgewählt hat. Wenn Sie MFA für einen Benutzer aktivieren, wird dieser immer aufgefordert, während der Authentifizierung einen zweiten Faktor bereitzustellen oder einzurichten, unabhängig davon, wie Sie die adaptive Authentifizierung konfiguriert haben. Aus Sicht Ihrer Benutzer bietet Ihre App Unterstützung bei der Einrichtung von MFA, und optional verhindert Amazon Cognito, dass sie sich erneut anmelden, bevor sie einen zusätzlichen Faktor konfiguriert haben.

Amazon Cognito veröffentlicht Kennzahlen zu Anmeldeversuchen, deren Risikoniveau und fehlgeschlagenen Anfragen an Amazon. CloudWatch Weitere Informationen finden Sie unter [Metriken zum Schutz vor Bedrohungen anzeigen](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Weitere Informationen darüber, wie Sie Ihrem Benutzerpool eine adaptive Authentifizierung hinzufügen, finden Sie unter [Erweiterte Sicherheit mit Bedrohungsschutz](cognito-user-pool-settings-threat-protection.md).

**Topics**
+ [Übersicht über die adaptive Authentifizierung](#security-cognito-user-pool-settings-adaptive-authentication-overview)
+ [Hinzufügen von Benutzergeräte- und Sitzungsdaten zu API-Anforderungen](#user-pool-settings-adaptive-authentication-device-fingerprint)
+ [Benutzerereignisverlauf anzeigen und exportieren](#user-pool-settings-adaptive-authentication-event-user-history)
+ [Bereitstellung von Ereignisfeedback](#user-pool-settings-adaptive-authentication-feedback)
+ [Senden von Benachrichtigungsmeldungen](#user-pool-settings-adaptive-authentication-messages)

## Übersicht über die adaptive Authentifizierung
<a name="security-cognito-user-pool-settings-adaptive-authentication-overview"></a>

Im Menü **Bedrohungsschutz** in der Amazon Cognito Cognito-Konsole können Sie Einstellungen für die adaptive Authentifizierung auswählen, einschließlich der Maßnahmen, die bei verschiedenen Risikostufen ergriffen werden sollen, und der Anpassung der Benachrichtigungen an Benutzer. Sie können allen Ihren App-Clients eine globale Konfiguration für den Schutz vor Bedrohungen zuweisen, aber auf einzelne App-Clients eine Konfiguration auf Client-Ebene anwenden.

Die adaptive Authentifizierung von Amazon Cognito weist jeder Benutzersitzung eine der folgenden Risikostufen zu: **Hoch**, **Mittel**, **Niedrig** oder **Kein Risiko**.

Wägen Sie Ihre Optionen sorgfältig ab, wenn Sie Ihre **Enforcement method** (Durchsetzungsmethode) von **Audit-only** (Nur Audit) zu **Full-fuction** (Vollfunktionsfähig) ändern. Die automatischen Antworten, die Sie auf Risikoniveaus anwenden, beeinflussen das Risikoniveau, das Amazon Cognito nachfolgenden Benutzersitzungen mit denselben Merkmalen zuweist. Wenn Sie sich beispielsweise dafür entschieden haben, keine Maßnahme zu ergreifen oder **Allow** (Zulassen) für Nutzersitzungen zu wählen, die Amazon Cognito zunächst als risikoreich einstuft, geht Amazon Cognito davon aus, dass ähnliche Sitzungen ebenfalls ein geringeres Risiko aufweisen.


**Sie können für jede Risikoebene folgende Optionen festlegen:**  

|  Option  |  Action  | 
| --- | --- | 
| Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf | Benutzer können sich ohne zusätzlichen Faktor anmelden. | 
| Optionale MFA | Benutzer mit einem konfigurierten zweiten Faktor müssen eine zweite Faktoraufforderung abschließen, um sich anmelden zu können. Als zweite Faktoren stehen eine Telefonnummer für SMS und ein TOTP-Softwaretoken zur Verfügung. Benutzer ohne einen zweiten konfigurierten Faktor können sich mit nur einem Satz von Anmeldeinformationen anmelden. | 
| MFA erforderlich | Benutzer mit einem konfigurierten zweiten Faktor müssen eine zweite Faktoraufforderung abschließen, um sich anmelden zu können. Amazon Cognito blockiert die Anmeldung für Benutzer, die keinen zweiten Faktor konfiguriert haben. | 
| Blockieren | Amazon Cognito blockiert alle Anmeldeversuche auf der festgelegten Risikoebene. | 

**Anmerkung**  
Sie müssen Telefonnummern nicht verifizieren, um sie für SMS als zweiter Authentifizierungsfaktor verwenden zu können.

## Hinzufügen von Benutzergeräte- und Sitzungsdaten zu API-Anforderungen
<a name="user-pool-settings-adaptive-authentication-device-fingerprint"></a>

Sie können Informationen über die Sitzung Ihres Benutzers sammeln und an Amazon Cognito Threat Protection weitergeben, wenn Sie ihn mit der API registrieren, anmelden und sein Passwort zurücksetzen. Zu diesen Informationen gehören die IP-Adresse des Benutzers und eine eindeutige Gerätekennung.

Möglicherweise verfügen Sie über ein zwischengelagertes Netzwerkgerät zwischen Ihren Benutzern und Amazon Cognito, wie einen Proxy-Service oder einen Anwendungsserver. Sie können die Kontextdaten der Benutzer sammeln und an Amazon Cognito weitergeben, damit die adaptive Authentifizierung Ihr Risiko basierend auf den Eigenschaften des Benutzerendpunkts anstelle Ihres Servers oder Proxys berechnet. Wenn Ihre clientseitige App API-Operationen von Amazon Cognito direkt aufruft, zeichnet die adaptive Authentifizierung automatisch die Quell-IP-Adresse auf. Es werden jedoch keine anderen Geräteinformationen wie `user-agent` aufgezeichnet, es sei denn, Sie erfassen auch eine Geräteidentifikation.

Generieren Sie diese Daten mit der Amazon Cognito Context-Datenerfassungsbibliothek und senden Sie sie mit den Parametern [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ContextDataType.html)und [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)an Amazon Cognito Threat Protection. Die Bibliothek zur Erfassung von Kontextdaten ist in der enthalten. AWS SDKs Weitere Informationen finden Sie unter [Integration der Amazon-Cognito-Authentifizierung und -Autorisierung mit Web- und mobilen Apps](cognito-integrate-apps.md). Sie können einreichen`ContextData`, wenn Sie über den Plus-Funktionsplan verfügen. Weitere Informationen finden Sie unter [Schutz vor Bedrohungen einrichten](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-configure-threat-protection).

Wenn Sie die folgenden von Amazon Cognito authentifizierten API-Operationen von Ihrem Anwendungsserver aus aufrufen, übergeben Sie die IP des Geräts des Benutzers im Parameter `ContextData`. Übergeben Sie außerdem Ihren Servernamen, Serverpfad und verschlüsselte Geräteidentifikationsdaten.
+ [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ [AdminRespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

Wenn Sie Amazon Cognito Unauthenticated API Operations aufrufen, können Sie sich `UserContextData` an Amazon Cognito Threat Protection wenden. Diese Daten enthalten eine Geräteidentifikation im Parameter `EncodedData`. Sie können auch einen Parameter `IpAddress` in den `UserContextData` übergeben, wenn Sie die folgenden Bedingungen erfüllen:
+ Ihr Benutzerpool ist im Plus-Funktionsplan enthalten. Weitere Informationen finden Sie unter [Funktionspläne für Benutzerpools](cognito-sign-in-feature-plans.md).
+ Ihr App-Client verfügt über einen Client-Schlüssel. Weitere Informationen finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).
+ Sie haben **Accept additional user context data** (Zusätzliche Benutzerkontextdaten akzeptieren) in Ihrem App-Client aktiviert. Weitere Informationen finden Sie unter [Akzeptieren zusätzlicher Benutzerkontextdaten (AWS-Managementkonsole)](#user-pool-settings-adaptive-authentication-accept-user-context-data).

Ihre App kann den Parameter `UserContextData` mit verschlüsselten Geräteidentifikationsdaten und der IP-Adresse des Geräts des Benutzers in den folgenden nicht authentifizierten API-Operationen von Amazon Cognito auffüllen.
+ [InitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ [RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)
+ [SignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+ [ConfirmSignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [ForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [ConfirmForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [ResendConfirmationCode ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)

### Akzeptieren zusätzlicher Benutzerkontextdaten (AWS-Managementkonsole)
<a name="user-pool-settings-adaptive-authentication-accept-user-context-data"></a>

Ihr Benutzerpool akzeptiert eine IP-Adresse in einem Parameter `UserContextData` nach dem Aktivieren der Funktion **Accept additional user context data** (Zusätzliche Benutzerkontextdaten akzeptieren). Sie müssen diese Funktion in folgenden Fällen nicht aktivieren:
+ Ihre Benutzer melden sich nur mit authentifizierten API-Vorgängen wie an [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), und Sie verwenden den `ContextData` Parameter.
+ Sie möchten nur, dass Ihre nicht authentifizierten API-Operationen einen Gerätefingerabdruck, aber keine IP-Adresse an den Amazon Cognito Cognito-Bedrohungsschutz senden.

Aktualisieren Sie Ihren App-Client wie folgt in der Amazon-Cognito-Konsole, um ihn um Unterstützung für zusätzliche Benutzerkontextdaten zu erweitern.

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. Wählen Sie im Navigationsbereich erst **Manage your User Pools (Eigene Benutzerpools verwalten)** aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie das Menü **App-Clients**.

1. Wählen oder erstellen Sie einen App-Client. Weitere Informationen finden Sie unter [ Konfigurieren eines Benutzerpool-App-Clients](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html).

1. Wählen Sie **Edit** (Bearbeiten) aus dem Container **App client information** (App-Client-Informationen) aus.

1. Wählen Sie in **Advanced authentication settings** (Erweiterte Authentifizierungseinstellungen) für Ihren App-Client **Accept additional user context data** (Zusätzliche Benutzerkontextdaten akzeptieren) aus.

1. Wählen Sie **Änderungen speichern ** aus.

Um Ihren App-Client so zu konfigurieren, dass er Benutzerkontextdaten in der Amazon Cognito Cognito-API akzeptiert, setzen Sie `EnablePropagateAdditionalUserContextData` ihn `true` in einer [CreateUserPoolClient[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)Oder-Anfrage auf. Informationen darüber, wie Sie mit dem Bedrohungsschutz in Ihrer Web- oder Mobil-App arbeiten können, finden Sie unter[Erfassung von Daten für den Schutz vor Bedrohungen in Anwendungen](user-pool-settings-viewing-threat-protection-app.md). Erfassen Sie Benutzerkontextdaten von der Client-Seite, wenn Ihre App Amazon Cognito von Ihrem Server aufruft. Im Folgenden finden Sie ein Beispiel, das die JavaScript SDK-Methode verwendet`getData`.

```
var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);
```

Wenn Sie Ihre App zur Verwendung der adaptiven Authentifizierung entwerfen, empfehlen wir Ihnen, das neueste Amazon Cognito SDK in Ihre App zu integrieren. Die neueste Version des SDK sammelt Daten zur Geräteidentifizierung wie Geräte-ID, Modell und Zeitzone. Weitere Informationen zu Amazon Cognito SDKs finden [Sie unter Installieren eines Benutzerpool-SDK](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sdk-links.html). Amazon Cognito Threat Protection speichert nur Ereignisse und weist ihnen eine Risikobewertung zu, die Ihre App im richtigen Format übermittelt. Wenn Amazon Cognito eine Fehlerantwort zurückgibt, überprüfen Sie, ob Ihre Anfrage einen gültigen geheimen Hash enthält und IPv4 ob der `IPaddress` Parameter eine gültige IPv6 Oder-Adresse ist.

**`ContextData`- und `UserContextData`-Ressourcen**
+ AWS Amplify SDK for Android: [GetUserContextData](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserPool.java#L626)
+ AWS Amplify SDK for iOS: [userContextData](https://github.com/aws-amplify/aws-sdk-ios/blob/d3cd4fa0086b526f2f5c9c6c58880c9da7004c66/AWSCognitoIdentityProviderASF/AWSCognitoIdentityProviderASF.m#L21)
+ JavaScript: [amazon-cognito-advanced-security-data.min.js](https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js)

## Benutzerereignisverlauf anzeigen und exportieren
<a name="user-pool-settings-adaptive-authentication-event-user-history"></a>

Amazon Cognito generiert ein Protokoll für jedes Authentifizierungsereignis eines Benutzers, wenn Sie den Bedrohungsschutz aktivieren. Standardmäßig können Sie Benutzerprotokolle im **Benutzermenü** in der Amazon Cognito Cognito-Konsole oder mit der [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)API-Operation anzeigen. Sie können diese Ereignisse auch in ein externes System wie CloudWatch Logs, Amazon S3 oder Amazon Data Firehose exportieren. Mit der Exportfunktion können Sicherheitsinformationen über Benutzeraktivitäten in Ihrer Anwendung für Ihre eigenen Sicherheitsanalysesysteme leichter zugänglich gemacht werden.

**Topics**
+ [Den Verlauf der Benutzerereignisse anzeigen ()AWS-Managementkonsole](#user-pool-settings-adaptive-authentication-event-user-history-console)
+ [Benutzerereignisverlauf anzeigen (API/CLI)](#user-pool-settings-adaptive-authentication-event-user-history-api-cli)
+ [Benutzerauthentifizierungsereignisse exportieren](#user-pool-settings-adaptive-authentication-event-user-history-exporting)

### Den Verlauf der Benutzerereignisse anzeigen ()AWS-Managementkonsole
<a name="user-pool-settings-adaptive-authentication-event-user-history-console"></a>

**Um den Anmeldeverlauf eines Benutzers zu sehen, können Sie den Benutzer aus dem Benutzermenü in der Amazon Cognito Cognito-Konsole auswählen.** Der Ereignisverlauf für Benutzer wird von Amazon Cognito für zwei Jahre aufbewahrt.

![\[Ereignisverlauf des Benutzers\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-advanced-security-event-history.png)


Jedes Anmeldeereignis hat eine Ereignis-ID. Das Ereignis enthält auch entsprechende Kontextdaten wie dem Standort, Gerätdetails sowie den Risikoerkennungsergebnissen.

Sie können die Ereignis-ID auch mit dem Token abgleichen, das Amazon Cognito zum Zeitpunkt der Aufzeichnung des Ereignisses ausgegeben hat. Die ID- und Zugriffstoken enthalten diese Ereignis-ID in ihrer Nutzlast. Außerdem gleicht Amazon Cognito die Verwendung von Aktualisierungstoken mit der ursprünglichen Ereignis-ID ab. Sie können die ursprüngliche Ereignis-ID bis zur Ereignis-ID des Anmeldeereignisses zurückverfolgen, das zur Ausgabe des Amazon-Cognito-Tokens führte. Sie können die Nutzung eines Tokens in Ihrem System auf ein bestimmtes Authentifizierungsereignis zurückführen. Weitere Informationen finden Sie unter [JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

### Benutzerereignisverlauf anzeigen (API/CLI)
<a name="user-pool-settings-adaptive-authentication-event-user-history-api-cli"></a>

Sie können den Benutzerereignisverlauf mit der Amazon Cognito Cognito-API-Operation [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)oder mit AWS Command Line Interface (AWS CLI) mit [admin-list-user-auth-events](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-list-user-auth-events.html) abfragen.

------
#### [ AdminListUserAuthEvents request ]

Der folgende Anfragetext für `AdminListUserAuthEvents` gibt das neueste Aktivitätsprotokoll für einen Benutzer zurück.

```
{
  "UserPoolId": "us-west-2_EXAMPLE", 
  "Username": "myexampleuser", 
  "MaxResults": 1
}
```

------
#### [ admin-list-user-auth-events request ]

Die folgende Anfrage für `admin-list-user-auth-events` gibt das neueste Aktivitätsprotokoll für einen Benutzer zurück.

```
aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
```

------
#### [ Response ]

Amazon Cognito gibt auf beide Anfragen denselben JSON-Antworttext zurück. Im Folgenden finden Sie eine Beispielantwort für ein verwaltetes Anmeldeereignis, bei dem keine Risikofaktoren festgestellt wurden:

```
{
    "AuthEvents": [
        {
            "EventId": "[event ID]",
            "EventType": "SignIn",
            "CreationDate": "[Timestamp]",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.168.2.1",
                "DeviceName": "Chrome 125, Windows 10",
                "Timezone": "-07:00",
                "City": "Bellevue",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "[event ID]#[Timestamp]"
}
```

------

### Benutzerauthentifizierungsereignisse exportieren
<a name="user-pool-settings-adaptive-authentication-event-user-history-exporting"></a>

Konfigurieren Sie Ihren Benutzerpool so, dass Benutzerereignisse aus dem Bedrohungsschutz in ein externes System exportiert werden. Die unterstützten externen Systeme — Amazon S3, CloudWatch Logs und Amazon Data Firehose — können Ihre AWS Rechnung mit Kosten für Daten, die Sie senden oder abrufen, belasten. Weitere Informationen finden Sie unter [Exportieren von Benutzeraktivitätsprotokollen zum Schutz gegen Bedrohungen](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity).

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

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. 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ü Log-Streaming.** Wählen Sie **Bearbeiten** aus.

1. Markieren Sie unter **Protokollierungsstatus** das Kontrollkästchen neben **Export von Benutzeraktivitätsprotokollen aktivieren**.

1. Wählen Sie unter **Logging-Ziel** AWS-Service das aus, für das Sie Ihre Logs verwalten möchten: **CloudWatch Log-Gruppe**, **Amazon Data Firehose-Stream** oder **S3-Bucket**.

1. Ihre Auswahl füllt die Ressourcenauswahl mit dem entsprechenden Ressourcentyp. Wählen Sie eine Protokollgruppe, einen Stream oder einen Bucket aus der Liste aus. Sie können auch auf die Schaltfläche **Erstellen** klicken, um AWS-Managementkonsole zum ausgewählten Service zu navigieren und eine neue Ressource zu erstellen.

1. Wählen Sie **Änderungen speichern** aus.

------
#### [ API ]

Wählen Sie einen Zieltyp für Ihre Benutzeraktivitätsprotokolle.

Im Folgenden finden Sie ein Beispiel für einen `SetLogDeliveryConfiguration` Anforderungstext, der einen Firehose-Stream als Protokollziel festlegt.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Im Folgenden finden Sie ein Beispiel für einen `SetLogDeliveryConfiguration` Anfragetext, der einen Amazon S3 S3-Bucket als Protokollziel festlegt.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Im Folgenden finden Sie ein Beispiel für einen `SetLogDeliveryConfiguration` Anfragetext, der eine CloudWatch Protokollgruppe als Protokollziel festlegt.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Bereitstellung von Ereignisfeedback
<a name="user-pool-settings-adaptive-authentication-feedback"></a>

Ereignisfeedback wirkt sich in Echtzeit auf die Risikobewertung aus und verbessert langfristig den Risikobewertungsalgorithmus. Sie können Feedback zur Gültigkeit von Anmeldeversuchen über die Amazon-Cognito-Konsole und -API-Operationen bereitstellen. 

**Anmerkung**  
Ihr Ereignisfeedback beeinflusst das Risikoniveau, das Amazon Cognito nachfolgenden Benutzersitzungen mit denselben Merkmalen zuweist.

Wählen Sie in der Amazon Cognito Cognito-Konsole im Benutzermenü einen **Benutzer** aus und wählen Sie **Event-Feedback geben** aus. Sie können die Veranstaltungsdetails überprüfen und **Set as valid** (Als gültig festlegen) oder **Set as invalid** (Als ungültig festlegen).

Die Konsole listet den Anmeldeverlauf in den Benutzerdetails im **Benutzermenü** auf. Wenn Sie einen Eintrag auswählen, können Sie das Ereignis als gültig oder ungültig markieren. Sie können Feedback auch über die API-Operation [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html)für den Benutzerpool und über den AWS CLI Befehl [admin-update-auth-event-feedback](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-auth-event-feedback.html) geben. 

Wenn Sie in der Amazon-Cognito-Konsole die Option **Set as valid** (Als gültig festlegen) auswählen oder für `valid` in der API einen Wert von `FeedbackValue` angeben, teilen Sie Amazon Cognito mit, dass Sie einer Benutzersitzung vertrauen, für die Amazon Cognito ein gewisses Risiko bewertet hat. Wenn Sie in der Amazon-Cognito-Konsole die Option **Set as invalid** (Als ungültig festlegen) auswählen oder für `invalid` in der API einen Wert von `FeedbackValue` angeben, teilen Sie Amazon Cognito mit, dass Sie einer Benutzersitzung nicht vertrauen, oder dass Sie nicht glauben, dass Amazon Cognito ein ausreichend hohes Risikoniveau bewertet hat.

## Senden von Benachrichtigungsmeldungen
<a name="user-pool-settings-adaptive-authentication-messages"></a>

Mit dem Bedrohungsschutz kann Amazon Cognito Ihre Benutzer über riskante Anmeldeversuche informieren. Amazon Cognito kann Benutzer auch zur Auswahl von Links auffordern, um anzugeben, ob die Anmeldung gültig oder ungültig war. Amazon Cognito verwendet dieses Feedback, um die Genauigkeit der Risikoerkennung für Ihren Benutzerpool zu verbessern. 

**Anmerkung**  
Amazon Cognito sendet nur dann Benachrichtigungen an Benutzer, wenn ihre Aktion eine automatisierte Risikoreaktion generiert: Anmeldung blockieren, Anmeldung zulassen, MFA auf optional setzen oder MFA verlangen. Einigen Anfragen wird möglicherweise eine Risikostufe zugewiesen, sie generieren jedoch keine automatisierten Risikoantworten mit adaptiver Authentifizierung. Bei diesen Anfragen sendet Ihr Benutzerpool keine Benachrichtigungen. Beispielsweise können falsche Passwörter mit einer Risikoeinstufung protokolliert werden, aber die Antwort von Amazon Cognito besteht darin, die Anmeldung fehlzuschlagen und keine adaptive Authentifizierungsregel anzuwenden.

Wählen Sie im Abschnitt **Automatic risk response** (Automatische Reaktion auf Risiken) die Option **Notify Users** (Benutzer benachrichtigen) für die Fälle mit niedrigem, mittlerem und hohem Risiko.

![\[Benachrichtigen von Benutzern\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-adaptive-auth.png)


Amazon Cognito sendet E-Mail-Benachrichtigungen an Ihre Benutzer, unabhängig davon, ob sie ihre E-Mail-Adresse bestätigt haben.

Sie können E-Mail-Benachrichtigungen anpassen und sowohl Klartextversionen als auch HTML-Versionen bereitstellen. Um Ihre E-Mail-Benachrichtigungen anzupassen, öffnen Sie **E-Mail-Vorlagen unter** **Nachrichten mit adaptiver Authentifizierung** in Ihrer Bedrohungsschutzkonfiguration. Weitere Informationen über E-Mail-Vorlagen finden Sie unter [Nachrichtenvorlagen](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

# Erfassung von Daten für den Schutz vor Bedrohungen in Anwendungen
<a name="user-pool-settings-viewing-threat-protection-app"></a>

Die [adaptive Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md) von Amazon Cognito bewertet die Risikostufen für versuchte Kontoübernahmen anhand von Kontextdetails der Anmeldeversuche von Benutzern. Ihre Anwendung muss den API-Anfragen *Kontextdaten* hinzufügen, damit Amazon Cognito Threat Protection das Risiko genauer einschätzen kann. Kontextdaten sind Informationen wie IP-Adresse, Browser-Agent, Geräteinformationen und Anforderungsheader, die kontextbezogene Informationen darüber liefern, wie ein Benutzer mit Ihrem Benutzerpool verbunden ist.

Die zentrale Verantwortung einer Anwendung, die diesen Kontext an Amazon Cognito übermittelt, ist ein `EncodedData` Parameter in Authentifizierungsanfragen an Benutzerpools. Um diese Daten zu Ihren Anfragen hinzuzufügen, können Sie Amazon Cognito mit einem SDK implementieren, das diese Informationen automatisch für Sie generiert, oder Sie können ein Modul für JavaScript iOS oder Android implementieren, das diese Daten sammelt. Anwendungen, die *nur für Kunden* bestimmt sind und direkte Anfragen an Amazon Cognito stellen, müssen implementiert werden. AWS Amplify SDKs *Client-Server-Anwendungen*, die über einen Zwischenserver oder eine API-Komponente verfügen, müssen ein separates SDK-Modul implementieren.

In den folgenden Szenarien verwaltet Ihr Authentifizierungs-Frontend die Erfassung von Benutzerkontextdaten ohne zusätzliche Konfiguration:
+ Managed Login sammelt automatisch Kontextdaten und leitet sie an den Bedrohungsschutz weiter.
+ Alle AWS Amplify Bibliotheken haben die Erfassung von Kontextdaten in ihre Authentifizierungsmethoden integriert.

## Senden von Benutzerkontextdaten in reinen Client-Anwendungen mit Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Ein Überblick über die Datenerfassung zum Schutz vor Bedrohungen in einer Amplify-Anwendung.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


Amplify SDKs unterstützt mobile Clients, die sich direkt bei Amazon Cognito authentifizieren. Kunden dieser Art stellen direkte API-Anfragen an öffentliche API-Operationen von Amazon Cognito. Amplify-Clients sammeln standardmäßig automatisch Kontextdaten zum Schutz vor Bedrohungen.

Amplify-Anwendungen mit JavaScript sind eine Ausnahme. Sie erfordern das Hinzufügen eines [JavaScript Moduls](#user-pool-settings-viewing-threat-protection-app-additional-resources-js), das Benutzerkontextdaten sammelt.

In der Regel verwendet eine Anwendung in dieser Konfiguration nicht authentifizierte API-Operationen wie [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) Das [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)Objekt hilft dabei, die Risiken für diese Operationen genauer einzuschätzen. Das Amplify SDKs fügt Geräte- und Sitzungsinformationen zu einem `EncodedData` Parameter von `UserContextData` hinzu.

## Sammeln von Kontextdaten in Client-Server-Anwendungen
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

Einige Anwendungen haben eine Front-End-Stufe, die Benutzerauthentifizierungsdaten sammelt, und eine Anwendungs-Back-End-Stufe, die Authentifizierungsanfragen an Amazon Cognito sendet. Dies ist eine gängige Architektur für Webserver und Anwendungen, die durch Microservices unterstützt werden. In diesen Anwendungen müssen Sie eine öffentliche Bibliothek zur Erfassung von Kontextdaten importieren.

![\[Ein Überblick über die serverseitige Authentifizierung mit Kontextdaten zum Bedrohungsschutz in. JavaScript\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


In der Regel verwendet ein Anwendungsserver in dieser Konfiguration authentifizierte API-Operationen wie [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)und. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) Das [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)Objekt hilft Amazon Cognito dabei, Risiken für diese Operationen genauer einzuschätzen. Der Inhalt von besteht aus `ContextData` den codierten Daten, die Ihr Front-End an Ihren Server weitergegeben hat, und zusätzlichen Details aus der HTTP-Anfrage des Benutzers an Ihren Server. Diese zusätzlichen Kontextdetails, wie die HTTP-Header und die IP-Adresse, liefern Ihrem Anwendungsserver die Merkmale der Benutzerumgebung.

Ihr Anwendungsserver kann sich auch mit nicht authentifizierten API-Operationen wie und anmelden. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Das [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)Objekt dient als Grundlage für die Risikoanalyse des Bedrohungsschutzes bei diesen Vorgängen. Die Operationen in den verfügbaren Bibliotheken für die Datenerfassung im öffentlichen Kontext fügen dem `EncodedData` Parameter in Authentifizierungsanforderungen Sicherheitsinformationen hinzu. Konfigurieren Sie Ihren Benutzerpool außerdem so, dass er zusätzliche Kontextdaten akzeptiert, und fügen Sie dem `IpAddress` Parameter von die Quell-IP des Benutzers hinzu`UserContextData`.

**Um Kontextdaten zu Client-Server-Anwendungen hinzuzufügen**

1. Erfassen Sie in Ihrer Front-End-Anwendung codierte Kontextdaten vom Client mit einem [iOS-, Android- oder JavaScript Modul](#user-pool-settings-viewing-threat-protection-app-additional-resources).

1. Übergeben Sie die codierten Daten und die Details der Authentifizierungsanfrage an Ihren Anwendungsserver.

1. Extrahieren Sie auf Ihrem Anwendungsserver die IP-Adresse des Benutzers, die relevanten HTTP-Header, den angeforderten Servernamen und den angeforderten Pfad aus der HTTP-Anfrage. Füllen Sie diese Werte in den [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)Parameter Ihrer API-Anfrage an Amazon Cognito ein.

1. Füllen Sie den `EncodedData` Parameter von `ContextData` in Ihrer API-Anfrage mit den codierten Gerätedaten aus, die Ihr SDK-Modul gesammelt hat. Fügen Sie diese Kontextdaten zur Authentifizierungsanfrage hinzu.

## Kontextdatenbibliotheken für Client-Server-Anwendungen
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

Das `amazon-cognito-advanced-security-data.min.js` Modul sammelt Daten`EncodedData`, die Sie an Ihren Anwendungsserver übergeben können.

Fügen Sie das `amazon-cognito-advanced-security-data.min.js` Modul zu Ihrer JavaScript Konfiguration hinzu. `<region>`Ersetzen Sie es durch einen AWS-Region aus der folgenden Liste: `us-east-1``us-east-2`,`us-west-2`,`eu-west-1`,`eu-west-2`, oder`eu-central-1`.

```
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
```

Um ein `encodedContextData` Objekt zu generieren, das Sie im `EncodedData` Parameter verwenden können, fügen Sie Ihrer JavaScript Anwendungsquelle Folgendes hinzu:

```
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
```

### iOS/Swift
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Um Kontextdaten zu generieren, können iOS-Anwendungen das [Mobile SDK for iOS iOS-Modul AWSCognito](https://github.com/aws-amplify/aws-sdk-ios/tree/main) [IdentityProviderASF](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) integrieren.

Um verschlüsselte Kontextdaten zum Schutz vor Bedrohungen zu sammeln, fügen Sie Ihrer Anwendung den folgenden Codeausschnitt hinzu:

```
import AWSCognitoIdentityProviderASF

let deviceId = getDeviceId()
let encodedContextData = AWSCognitoIdentityProviderASF.userContextData(
                            userPoolId, 
                            username: username, 
                            deviceId: deviceId, 
                            userPoolClientId: userPoolClientId)
                                
/**
 * Reuse DeviceId from keychain or generate one for the first time.
 */
func getDeviceId() -> String {
    let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId")
    
   if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) {
        return existingDeviceId
    }

    let newDeviceId = UUID().uuidString
    self.keychain.setString(newDeviceId, forKey: deviceIdKey)
    return newDeviceId
}

/**
 * Get a namespaced keychain key given a namespace and key
 */    
func getKeyChainKey(namespace: String, key: String) -> String {
    return "\(namespace).\(key)"
}
```

### Android
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Um Kontextdaten zu generieren, können Android-Anwendungen das [Mobile SDK for Android aws-android-sdk-cognitoidentityprovider](https://github.com/aws-amplify/aws-sdk-android/tree/main) [-Modul -asf](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf) integrieren.

Um verschlüsselte Kontextdaten zum Schutz vor Bedrohungen zu sammeln, fügen Sie Ihrer Anwendung den folgenden Ausschnitt hinzu:

```
UserContextDataProvider provider = UserContextDataProvider.getInstance();
// context here is android application context.
String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);
```

# Ordnen Sie einem AWS WAF Benutzerpool eine Web-ACL zu
<a name="user-pool-waf"></a>

AWS WAF ist eine Firewall für Webanwendungen. Mit einer AWS WAF Web-Zugriffskontrollliste (Web ACL) können Sie Ihren Benutzerpool vor unerwünschten Anfragen an Ihre klassische gehostete Benutzeroberfläche, verwaltete Anmeldung und Amazon Cognito API-Serviceendpunkte schützen. Eine Web-ACL ermöglicht eine differenziertere Kontrolle aller HTTPS-Webanforderungen, auf die Ihr Benutzerpool reagiert. Weitere Informationen zum AWS WAF Web ACLs finden Sie unter [Verwaltung und Verwendung einer Web-Zugriffskontrollliste (Web-ACL)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) im *AWS WAF Entwicklerhandbuch*.

Wenn Sie eine AWS WAF Web-ACL mit einem Benutzerpool verknüpft haben, leitet Amazon Cognito ausgewählte nicht vertrauliche Header und Inhalte von Anfragen Ihrer Benutzer an weiter. AWS WAF AWS WAF untersucht den Inhalt der Anfrage, vergleicht sie mit den Regeln, die Sie in Ihrer Web-ACL angegeben haben, und gibt eine Antwort an Amazon Cognito zurück.

## Wissenswertes über AWS WAF Web ACLs und Amazon Cognito
<a name="user-pool-waf-things-to-know"></a>
+ Sie können Web-ACL-Regeln nicht so konfigurieren, dass sie mit personenbezogenen Daten (PII) in Benutzerpoolanfragen übereinstimmen, z. B. Benutzernamen, Passwörter, Telefonnummern oder E-Mail-Adressen. Diese Daten werden nicht verfügbar sein für. AWS WAF Konfigurieren Sie stattdessen Ihre Web-ACL-Regeln so, dass sie mit den Sitzungsdaten in den Headern, Pfaden und Textteilen wie IP-Adressen, Browser-Agenten und angeforderten API-Vorgängen übereinstimmen.
+ Web-ACL-Regelbedingungen können nur benutzerdefinierte Blockantworten auf die **erste** Anfrage eines Benutzers an eine benutzerinteraktive verwaltete Anmeldeseite zurückgeben. Wenn nachfolgende Verbindungen einer benutzerdefinierten Blockantwortbedingung entsprechen, geben sie Ihren benutzerdefinierten Statuscode, Ihre Header- und Umleitungsantworten zurück, jedoch eine standardmäßige Blocknachricht.
+ Anfragen, die von blockiert wurden, werden für AWS WAF keinen Anfragetyp auf das Kontingent für die Anforderungsrate angerechnet. Der AWS WAF Handler wird vor den Drosselungsprozeduren auf API-Ebene aufgerufen.
+ Wenn Sie eine Web-ACL erstellen, dauert es ein wenig, bis die Web-ACL vollständig weitergegeben wurde und für Amazon Cognito verfügbar ist. Die Übertragungszeit kann zwischen einigen Sekunden und mehreren Minuten liegen. AWS WAF gibt a zurück [https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors), wenn Sie versuchen, eine Web-ACL zuzuordnen, bevor sie vollständig weitergegeben wurde.
+ Sie können jedem Benutzerpool eine Web-ACL zuordnen.
+ Ihre Anfrage könnte zu einer Nutzlast führen, die die Grenzwerte für das übersteigt, was AWS WAF überprüfen kann. Unter Behandlung [übergroßer Anforderungskomponenten](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) im *AWS WAF Entwicklerhandbuch* erfahren Sie, wie Sie konfigurieren können, wie mit übergroßen Anfragen von Amazon Cognito AWS WAF umgegangen wird.
+ Sie können eine Web-ACL, die AWS WAF [Fraud Control Account Takeover Prevention (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) verwendet, nicht mit einem Amazon Cognito Cognito-Benutzerpool verknüpfen. Die ATP-Funktion befindet sich in der `AWS-AWSManagedRulesATPRuleSet` verwalteten Regelgruppe. Bevor Sie eine Web-ACL einem Benutzerpool zuordnen, stellen Sie sicher, dass dieser diese verwaltete Regelgruppe nicht verwendet.
+ Wenn Sie eine AWS WAF Web-ACL mit einem Benutzerpool verknüpft haben und eine Regel in Ihrer Web-ACL ein CAPTCHA enthält, kann dies zu einem nicht behebbaren Fehler bei der TOTP-Registrierung für die verwaltete Anmeldung führen. Informationen zum Erstellen einer Regel mit einer CAPTCHA-Aktion, die sich nicht auf das TOTP für verwaltete Logins auswirkt, finden Sie unter. [Konfiguration Ihrer AWS WAF Web-ACL für die verwaltete Anmeldung TOTP MFA](user-pool-settings-mfa-totp.md#totp-waf)

AWS WAF untersucht Anfragen an die folgenden Endpunkte.

**Verwaltete Anmeldung und die klassische gehostete Benutzeroberfläche**  
Anforderungen aller Endpunkte in der [Benutzerpool-Endpunkte und Referenz für verwaltete Logins](cognito-userpools-server-contract-reference.md).

**Öffentliche API-Operationen**  
Anfragen von Ihrer App an die Amazon Cognito Cognito-API, die keine AWS Anmeldeinformationen zur Autorisierung verwenden. Dazu gehören API-Operationen wie [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), und. [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) Die API-Operationen, die in den Geltungsbereich von fallen, erfordern AWS WAF keine Authentifizierung mit AWS Anmeldeinformationen. Sie sind entweder nicht authentifiziert oder mit einer Sitzungszeichenfolge bzw. einem Zugriffstoken autorisiert. Weitere Informationen finden Sie unter [Liste der API-Operationen, gruppiert nach Autorisierungsmodell](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

Sie können die Regeln in Ihrer Web-ACL mit den Regelaktionen **Count** (Zählen), **Allow** (Zulassen) und **Block** (Blockieren) konfigurieren oder ein **CAPTCHA** als Antwort auf eine Anfrage anzeigen, die mit einer Regel übereinstimmt. Weitere Informationen finden Sie unter [AWS WAF -Regeln](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) im *Entwicklerhandbuch zu AWS WAF *. Abhängig von der Regelaktion können Sie die Antwort anpassen, die Amazon Cognito an Ihre Benutzer zurückgibt.

**Wichtig**  
Ihre Optionen zum Anpassen der Antwort im Fehlerfall hängen von der Art und Weise ab, wie Sie eine API-Anforderung vornehmen.  
Sie können den Fehlercode und den Antworttext verwalteter Anmeldeanfragen anpassen. Sie können Ihrem Benutzer nur bei der verwalteten Anmeldung ein CAPTCHA zur Lösung vorlegen.
Für Anforderungen, die Sie mit der [Benutzerpool-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) von Amazon Cognito vornehmen, können Sie den Antworttext einer Anforderung anpassen, die eine **Blockieren**-Antwort erhält. Sie können auch einen benutzerdefinierten Fehlercode im Bereich 400 bis 499 angeben.
Die AWS Command Line Interface (AWS CLI) und die AWS SDKs geben bei Anfragen, die eine **Block** - oder **CAPTCHA-Antwort** erzeugen, einen `ForbiddenException` Fehler zurück.

## Zuordnen einer Web-ACL zu Ihrem Benutzerpool
<a name="user-pool-waf-setting-up"></a>

Um mit einer Web-ACL in Ihrem Benutzerpool arbeiten zu können, muss Ihr AWS Identity and Access Management (IAM-) Principal über die folgenden Amazon Cognito- und AWS WAF Berechtigungen verfügen. Informationen zu AWS WAF Berechtigungen finden Sie unter [AWS WAF API-Berechtigungen](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) im *AWS WAF Entwicklerhandbuch*.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

[Sie müssen zwar IAM-Berechtigungen gewähren, aber die aufgelisteten Aktionen sind nur für Genehmigungen bestimmt und entsprechen keinem API-Vorgang.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)

**Um sie AWS WAF für Ihren Benutzerpool zu aktivieren und eine Web-ACL zuzuordnen**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an.

1. Wählen Sie im Navigationsbereich erst **User Pools** (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

1. Wählen Sie die **AWS WAF**Registerkarte im Bereich **Sicherheit**.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie ** AWS WAF Mit Ihrem Benutzerpool verwenden** aus.  
![\[Screenshot des AWS WAF Dialogfelds, in dem die Option „ AWS WAF Mit Ihrem Benutzerpool verwenden“ ausgewählt ist.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/cup-WAF-console.png)

1. Wählen Sie eine **AWS WAF Web-ACL**, die Sie bereits erstellt haben, oder wählen Sie **Web-ACL erstellen in**, AWS WAF um eine Web-ACL in einer neuen AWS WAF Sitzung in der zu erstellen AWS-Managementkonsole.

1. Wählen Sie **Änderungen speichern ** aus.

Verwenden Sie ACL aus der API, um Ihrem Benutzerpool im AWS Command Line Interface oder einem SDK programmgesteuert eine [AssociateWebWeb-ACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) zuzuordnen. AWS WAF Amazon Cognito verfügt nicht über eine separaten API-Operation zum Zuordnen einer Web-ACL.

## Web testen und protokollieren AWS WAF ACLs
<a name="user-pool-waf-evaluating-and-logging"></a>

Wenn Sie eine Regelaktion in Ihrer Web-ACL auf **Count** setzen, wird die Anfrage zu einer Anzahl von Anfragen AWS WAF hinzugefügt, die der Regel entsprechen. Setzen Sie zum Testen einer Web-ACL mit Ihrem Benutzerpool die Regelaktionen auf **Count** (Zählen) und berücksichtigen Sie das Volumen der Anforderungen, die mit den einzelnen Regeln übereinstimmen. Wenn beispielsweise eine Regel, die Sie auf die Aktion **Block** (Blockieren) setzen möchten, mit einer großen Anzahl von Anforderungen übereinstimmt, die Sie als normalen Benutzerverkehr einstufen. müssen Sie Ihre Regel möglicherweise neu konfigurieren. Weitere Informationen finden Sie im *AWS WAF Entwicklerhandbuch* unter [Testen und Optimieren Ihres AWS WAF Schutzes](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html).

Sie können auch so konfigurieren AWS WAF , dass Anforderungsheader in einer Amazon CloudWatch Logs-Protokollgruppe, einem Amazon Simple Storage Service (Amazon S3) -Bucket oder einer Amazon Data Firehose protokolliert werden. Sie können die Amazon-Cognito-Anforderungen, die Sie mit der Benutzerpool-API vornehmen, anhand von `x-amzn-cognito-client-id` und `x-amzn-cognito-operation-name` identifizieren. Verwaltete Anmeldeanfragen enthalten nur den `x-amzn-cognito-client-id` Header. Weitere Informationen finden Sie unter [Protokollieren des Web-ACL-Datenverkehrs](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) im *Entwicklerhandbuch zu AWS WAF *.

AWS WAF Web ACLs sind in allen [Featureplänen](cognito-sign-in-feature-plans.md) für Benutzerpools verfügbar. Die Sicherheitsfunktionen von AWS WAF ergänzen den Bedrohungsschutz von Amazon Cognito. Sie können beide Funktionen in einem Benutzerpool aktivieren. AWS WAF berechnet die Überprüfung von Benutzerpool-Anforderungen separat. Weitere Informationen finden Sie unter [AWS WAF  – Preise](https://aws.amazon.com/waf/pricing).

Die Protokollierung von AWS WAF Anforderungsdaten unterliegt einer zusätzlichen Abrechnung durch den Dienst, für den Sie Ihre Protokolle verwenden. Weitere Informationen finden Sie unter [Preise für die Protokollierung von Web-ACL-Datenverkehrsinformationen](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing) im *Entwicklerhandbuch zu AWS WAF *.

# Berücksichtigung der Groß-/Kleinschreibung im Benutzerpool
<a name="user-pool-case-sensitivity"></a>

Amazon Cognito Cognito-Benutzerpools, die Sie in der erstellen, AWS-Managementkonsole unterscheiden standardmäßig nicht zwischen Groß- und Kleinschreibung. Wenn ein Benutzerpool Groß- und Kleinschreibung nicht beachtet, beziehen Sie sich *benutzer@beispiel.com* und *Benutzer@beispiel.com* auf denselben Benutzer. Wenn für Benutzernamen in einem Benutzerpool die Groß- und Kleinschreibung nicht beachtet wird, gilt dasselbe für die `preferred_username`- und `email`-Attribute.

Die Unterscheidung zwischen Groß- und Kleinschreibung gilt nicht nur für Attributeingaben, sondern auch für Ausgaben. Attributwerte mit gemischter Groß- und Kleinschreibung in Benutzerpools ohne Berücksichtigung der Groß- und Kleinschreibung werden in der Textausgabe des Benutzerpools auf Kleinbuchstaben reduziert. Beispiele für Textausgaben von Benutzerpools sind [UserInfo-Antworten](userinfo-endpoint.md), Benutzerabfrageantworten wie die Ausgabe von [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)und Eingabeereignisse für [Lambda-Trigger](cognito-user-pools-working-with-lambda-triggers.md).

Um die Einstellungen für die Groß- und Kleinschreibung des Benutzerpools zu berücksichtigen, identifizieren Sie Benutzer in Ihrem App-Code basierend auf einem alternativen Benutzerattribut. Da die Groß-/Kleinschreibung eines Benutzernamens, eines bevorzugten Benutzernamens oder eines E-Mail-Attributs variieren kann, verweisen Sie stattdessen auf das `sub`-Attribut. Sie können auch ein unveränderliches benutzerdefiniertes Attribut in Ihrem Benutzerpool erstellen und dem Attribut in jedem neuen Benutzerprofil Ihren eigenen eindeutigen Identifikationswert zuweisen. Beim Erstellen eines Benutzers können Sie einen Wert in das unveränderliche, benutzerdefinierte Attribut schreiben, das Sie erstellt haben.

**Anmerkung**  
Unabhängig von den Einstellungen für die Groß- und Kleinschreibung Ihres Benutzerpools erfordert Amazon Cognito, dass ein Verbundbenutzer eines SAML- oder OIDC-Identitätsanbieters (IDP) eine eindeutige und Groß- und Kleinschreibung berücksichtigende `NameId` oder einen `sub`-Anspruch übergibt. Weitere Hinweise zur Berücksichtigung von Groß- und Kleinschreibung bei eindeutigen Bezeichnern und zu SAML IdPs finden Sie unter. [Implementieren Sie die SP-initiierte SAML-Anmeldung](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication)

Erstellen eines Benutzerpools mit Berücksichtigung der Groß-/Kleinschreibung  
Wenn Sie Ressourcen mit den Operationen AWS Command Line Interface (AWS CLI) und API-Operationen wie erstellen [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html), müssen Sie den booleschen `CaseSensitive` Parameter auf setzen. `false` Diese Einstellung erstellt einen Benutzerpool, in dem die Groß- und Kleinschreibung nicht berücksichtigt wird. Wenn Sie keinen Wert angeben, verwendet `CaseSensitive` standardmäßig `true`. Benutzerpools, die Sie in der Amazon Cognito Cognito-Konsole erstellen, unterscheiden nicht zwischen Groß- und Kleinschreibung. Um einen Benutzerpool mit Berücksichtigung von Groß- und Kleinschreibung zu erstellen, müssen Sie den Vorgang verwenden. `CreateUserPool` Vor dem 12. Februar 2020 wurde bei Benutzerpools unabhängig von der Plattform standardmäßig Groß- und Kleinschreibung beachtet.   
Im **Anmeldemenü** von AWS-Managementkonsole und in der `UsernameConfiguration` Eigenschaft von können Sie die Einstellungen zur [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration)Berücksichtigung der Groß- und Kleinschreibung für jeden Benutzerpool in Ihrem Konto überprüfen.

Migration zu einem neuen Benutzerpool  
Aufgrund potenzieller Konflikte zwischen Benutzerprofilen können Sie einen Amazon-Cognito-Benutzerpool nicht von „Groß- und Kleinschreibung wird berücksichtigt“ auf „Groß- und Kleinschreibung wird nicht berücksichtigt“ ändern. Migrieren Sie stattdessen Ihre Benutzer in einen neuen Benutzerpool. Sie müssen Migrationscode erstellen, um fallbezogene Konflikte zu lösen. Dieser Code muss entweder einen eindeutigen neuen Benutzer zurückgeben oder den Anmeldeversuch ablehnen, wenn er einen Konflikt erkennt. Weisen Sie in einem neuen Benutzerpool, in dem die Groß-/Kleinschreibung nicht beachtet wird, ein [Lambda-Auslöser für die Benutzermigration.](user-pool-lambda-migrate-user.md) zu. Mit dieser AWS Lambda Funktion können Benutzer im neuen Benutzerpool ohne Berücksichtigung der Groß- und Kleinschreibung erstellt werden. Die Lambda-Funktion findet und dupliziert den Benutzer aus dem Benutzerpool mit Beachtung der Groß- und Kleinschreibung, wenn es dem Benutzer nicht gelingt, sich mit dem Benutzerpool ohne Berücksichtigung der Groß- und Kleinschreibung anzumelden. Sie können auch einen Lambda-Trigger für die Migration von Benutzern bei [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)Ereignissen aktivieren. Amazon Cognito übergibt Benutzerinformationen und Ereignismetadaten aus der Anmeldung- oder Passwort-Wiederherstellungsaktion an Ihre Lambda-Funktion. Sie können Ereignisdaten verwenden, um Konflikte zwischen Benutzernamen und E-Mail-Adressen zu verwalten, wenn Ihre Funktion den neuen Benutzer in Ihrem Benutzerpool ohne Berücksichtigung der Groß- und Kleinschreibung erstellt. Bei diesen Konflikten handelt es sich um Benutzernamen und E-Mail-Adressen, die in einem Benutzerpool, bei dem die Groß- und Kleinschreibung beachtet wird, eindeutig, in einem Benutzerpool, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, jedoch identisch wären.   
Weitere Informationen zur Verwendung eines Lambda-Triggers für die Migration von Benutzern zwischen Amazon Cognito Cognito-Benutzerpools finden Sie unter [Migrieren von Benutzern zu Amazon Cognito Cognito-Benutzerpools](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/) im Blog. AWS 

# Löschschutz für Benutzerpools
<a name="user-pool-settings-deletion-protection"></a>

Aktivieren Sie den Löschschutz, damit Ihre Administratoren den Benutzerpool nicht versehentlich löschen. Wenn der Löschschutz aktiviert ist, müssen Sie vor dem Löschen des Benutzerpools bestätigen, dass er wirklich gelöscht werden soll. Wenn Sie einen Benutzerpool in der löschen AWS-Managementkonsole, können Sie gleichzeitig den Löschschutz deaktivieren. Wenn Sie die Aufforderung zur Deaktivierung des Löschschutzes akzeptieren und bestätigen, dass der Benutzerpool gelöscht werden soll, wie in der folgenden Abbildung dargestellt, löscht Amazon Cognito den Benutzerpool.

![\[Ein Screenshot aus dem AWS-Managementkonsole zeigt eine Aufforderung zum Löschen eines Benutzerpools mit einer enthaltenen Aufforderung, auch den Löschschutz zu deaktivieren.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/amazon-cognito-delete-user-pool-deactivate-deletion-protection.png)


Wenn Sie einen Benutzerpool mit einer Amazon Cognito Cognito-API-Anfrage löschen möchten, müssen Sie zunächst `Inactive` in einer [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)Anfrage `DeletionProtection` zu wechseln. Wenn Sie den Löschschutz nicht deaktivieren, gibt Amazon Cognito die Fehlermeldung `InvalidParameterException` zurück. Nachdem Sie den Löschschutz deaktiviert haben, können Sie den Benutzerpool in einer [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html)Anfrage löschen.

Amazon Cognito aktiviert **Deletion protection** (Löschschutz) standardmäßig, wenn Sie einen neuen Benutzerpool in der AWS-Managementkonsole erstellen. Wenn Sie einen Benutzerpool mit der API `CreateUserPool` erstellen, ist der Löschschutz standardmäßig inaktiv. Um diese Funktion in Benutzerpools zu verwenden, die Sie mit dem AWS CLI oder einem AWS SDK erstellen, setzen Sie den `DeletionProtection` Parameter auf`True`.

Sie können den Löschschutzstatus im **Löschschutzcontainer** im Menü **Einstellungen** der Amazon Cognito Cognito-Konsole aktivieren oder deaktivieren.

# So konfigurieren Sie Löschschutz


1. Melden Sie sich bei der [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home) an. Möglicherweise werden Sie zur Eingabe Ihrer AWS Anmeldeinformationen aufgefordert.

1. 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ü **Einstellungen** und navigieren Sie zur Registerkarte **Löschschutz**. Wählen Sie **Aktivieren** oder **Deaktivieren**.

1. Bestätigen Sie Ihre Auswahl im nächsten Dialogfenster.

# Verwalten von Reaktionen auf Fehler bei vorhandenen Benutzern
<a name="cognito-user-pool-managing-errors"></a>

Amazon Cognito unterstützt die Anpassung von Fehlerantworten, die von Benutzerpools zurückgegeben werden. Benutzerdefinierte Fehlerantworten sind für die Erstellung und Authentifizierung von Benutzern, die Passwortwiederherstellung und Bestätigung verfügbar.

Verwenden Sie die `PreventUserExistenceErrors`-Einstellung eines Benutzerpool-App-Clients, um Fehler im Zusammenhang mit der Benutzerexistenz zu aktivieren oder zu deaktivieren. Wenn Sie einen neuen App-Client mit der Amazon Cognito Cognito-Benutzerpools-API erstellen`LEGACY`, `PreventUserExistenceErrors` ist diese standardmäßig oder deaktiviert. In der Amazon Cognito Cognito-Konsole `PreventUserExistenceErrors` ist die Option **Benutzerexistenzfehler verhindern** — eine Einstellung von `ENABLED` für — standardmäßig ausgewählt. Gehen Sie wie folgt vor, um Ihre `PreventUserExistenceErrors` Konfiguration zu aktualisieren:
+ Ändern Sie den Wert `PreventUserExistenceErrors` zwischen `ENABLED` und `LEGACY` in einer [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API-Anfrage.
+ Bearbeiten Sie Ihren App-Client in der Amazon Cognito Cognito-Konsole und ändern Sie den Status von **Prevent user existence errors** zwischen selected (`ENABLED`) und deselected (`LEGACY`).

Wenn diese Eigenschaft den Wert von hat`LEGACY`, gibt Ihr App-Client eine `UserNotFoundException` Fehlerantwort zurück, wenn ein Benutzer versucht, sich mit einem Benutzernamen anzumelden, der in Ihrem Benutzerpool nicht existiert.

Wenn diese Eigenschaft den Wert von hat`ENABLED`, gibt Ihr App-Client die Nichtexistenz eines Benutzerkontos in Ihrem Benutzerpool nicht mit einem `UserNotFoundException` Fehler an. Eine `PreventUserExistenceErrors` Konfiguration von `ENABLED` hat die folgenden Auswirkungen, wenn Sie eine Anfrage für einen Benutzernamen einreichen, der nicht existiert:
+ Amazon Cognito antwortet mit unspezifischen Informationen auf API-Anfragen, bei denen die Antwort andernfalls offenlegen könnte, dass ein gültiger Benutzer existiert.
+ Amazon Cognito gibt auf Anfragen mit vergessenen Passwörtern und auf Authentifizierungsanfragen mit Authentifizierungsabläufen, *außer bei wahlbasierter Authentifizierung ()`USER_AUTH`, eine generische Antwort auf Authentifizierungsfehler zurück —* [zum Beispiel](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) oder. `USER_SRP_AUTH` `CUSTOM_AUTH` Die Fehlerantwort gibt an, dass der Benutzername oder das Passwort falsch ist.
+ Amazon Cognito beantwortet Anfragen nach einer wahlbasierten Authentifizierung mit einer zufälligen Auswahl aus den für den Benutzerpool zulässigen Challenge-Typen. Ihr Benutzerpool gibt möglicherweise einen Hauptschlüssel, ein Einmalpasswort oder eine Passwortabfrage zurück.
+ Das Verhalten der Amazon Cognito Cognito-Kontobestätigung und der Kennwortwiederherstellung APIs wechselt zwischen der Rückgabe einer Antwort, die besagt, dass ein Code an ein simuliertes Liefermedium gesendet wurde, und der Rückgabe eines Fehlers. `InvalidParameterException`

Die folgenden Informationen beschreiben das Verhalten von Benutzerpool-Vorgängen, wenn diese Option auf eingestellt `PreventUserExistenceErrors` ist. `ENABLED`

## Vorgänge zur Authentifizierung und Benutzererstellung
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Sie können Fehlerantworten in der Benutzername-Passwort-Authentifizierung und der Secure Remote Password (SRP) -Authentifizierung konfigurieren. Sie können die Fehler, die Sie zurückgeben, auch mit der benutzerdefinierten Authentifizierung anpassen. Die wahlbasierte Authentifizierung wird von Ihrer Konfiguration nicht beeinflusst. `PreventUserExistenceErrors`Angaben zur Offenlegung der Existenz von Benutzern in Authentifizierungsabläufen

**Wahlbasierte Authentifizierung**  
Im `USER_AUTH` wahlbasierten Authentifizierungsablauf gibt Amazon Cognito je nach Konfiguration Ihres Benutzerpools und Benutzerattributen eine Anfrage anhand der verfügbaren primären Authentifizierungsfaktoren zurück. Bei diesem Authentifizierungsablauf können Abfragen wie Passwort, Secure Remote Password (SRP), WebAuthn (Passkey), SMS-Einmalpasswort (OTP) oder E-Mail-OTP zurückgegeben werden. Wenn diese Option `PreventUserExistenceErrors` aktiviert ist, fordert Amazon Cognito nicht existierende Benutzer auf, eine oder mehrere der verfügbaren Authentifizierungsformen auszufüllen. Bei `PreventUserExistenceErrors` inaktiv gibt Amazon Cognito eine `UserNotFound` Ausnahme zurück.

**Authentifizierung mit Benutzername und Passwort**  
Der Authentifizierungsfluss `ADMIN_USER_PASSWORD_AUTH` und der `PASSWORD` `USER_AUTH` Rückfluss a `NotAuthorizedException` mit der Meldung, `Incorrect username or password` wenn aktiv `PreventUserExistenceErrors` ist. `USER_PASSWORD_AUTH` Wenn inaktiv `PreventUserExistenceErrors` ist, kehren diese Flows zurück`UserNotFoundException`.

**Secure-Remote-Password-(SRP)-basierte Authentifizierung**  
Es hat sich bewährt, die Implementierung nur `PreventUserExistenceErrors` mit `USER_SRP_AUTH` oder `USER_AUTH` im `PASSWORD_SRP` Flow von Benutzerpools ohne E-Mail-Adresse, Telefonnummer oder bevorzugte [Alias-Attribute für Benutzernamen vorzunehmen](user-pool-settings-attributes.md#user-pool-settings-aliases). Benutzer mit Aliasattributen unterliegen möglicherweise nicht der Unterdrückung der Existenz von Benutzern im SRP-Authentifizierungsablauf. Benutzername-Kennwort-Authentifizierungsabläufe — `ADMIN_USER_PASSWORD_AUTH``USER_PASSWORD_AUTH`, und die `USER_AUTH` `PASSWORD` Herausforderung — verhindern vollständig die Existenz von Benutzern anhand von Aliasattributen.  
[Wenn jemand versucht, sich über SRP mit einem Benutzernamen anzumelden, der Ihrem App-Client nicht bekannt ist, gibt Amazon Cognito im ersten Schritt eine simulierte Antwort zurück, wie in RFC 5054 beschrieben.](https://tools.ietf.org/html/rfc5054#section-2.5.1.3) Amazon Cognito gibt dasselbe Salz und eine interne Benutzer-ID im [UUID-Format](cognito-terms.md#terms-uuid) für dieselbe Kombination aus Benutzername und Benutzerpool zurück. Wenn Sie eine `RespondToAuthChallenge`API-Anforderung mit einem Passwortnachweis senden, gibt Amazon Cognito einen generischen `NotAuthorizedException`-Fehler zurück, wenn der Benutzername oder das Passwort falsch ist. Weitere Informationen zur Implementierung der SRP-Authentifizierung finden Sie unter. [Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)  
[Sie können eine generische Antwort mit Benutzername und Kennwortauthentifizierung simulieren, wenn Sie verifizierungsbasierte Aliasattribute verwenden und der unveränderliche Benutzername nicht als UUID formatiert ist.](cognito-terms.md#terms-uuid)

**Lambda-Trigger für benutzerdefinierte Authentifizierungsanforderungen**  
Amazon Cognito ruft die [benutzerdefinierte Authentifizierungsherausforderung auf, die Lambda auslöst](user-pool-lambda-challenge.md), wenn Benutzer versuchen, sich mit dem `CUSTOM_AUTH` Authentifizierungsablauf anzumelden, ihr Benutzername jedoch nicht gefunden wird. Das Eingabeereignis enthält einen booleschen Parameter, der `UserNotFound` mit dem Wert für jeden nicht existierenden Benutzer benannt ist. `true` Dieser Parameter erscheint in den Anforderungsereignissen, die Ihr Benutzerpool an die Lambda-Funktionen Create, Define und Verify Auth Challenge sendet, die die benutzerdefinierte Authentifizierungsarchitektur bilden. Wenn Sie diesen Indikator in der Logik Ihrer Lambda-Funktion untersuchen, können Sie benutzerdefinierte Authentifizierungsherausforderungen für einen Benutzer simulieren, der nicht existiert.

**Lambda-Auslöser für die Vorab-Authentifizierung**  
Amazon Cognito ruft den [Vorauthentifizierungs-Trigger](user-pool-lambda-pre-authentication.md) auf, wenn Benutzer versuchen, sich anzumelden, ihr Benutzername jedoch nicht gefunden wird. Das Eingabeereignis enthält einen `UserNotFound` Parameter mit dem Wert `true` für jeden nicht existierenden Benutzer.

In der folgenden Liste werden die Auswirkungen von `PreventUserExistenceErrors` auf die Erstellung von Benutzerkonten beschrieben.Einzelheiten zur Offenlegung der Existenz von Benutzern in Abläufen zur Benutzererstellung

**SignUp**  
Die `SignUp` Operation kehrt immer zurück`UsernameExistsException`, wenn ein Benutzername bereits vergeben ist. Wenn Sie nicht möchten, dass Amazon Cognito bei der Registrierung von Benutzern in Ihrer App einen Fehler `UsernameExistsException` für E-Mail-Adressen und Telefonnummern zurückgibt, verwenden Sie verifizierungsbasierte Aliasattribute. Weitere Informationen zu Aliassen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Ein Beispiel dafür, wie Amazon Cognito die Verwendung von API-Anforderungen `SignUp` zur Erkennung von Benutzern in Ihrem Benutzerpool verhindern kann, finden Sie unter [Vermeiden von Fehlern `UsernameExistsException` in Bezug auf E-Mail-Adressen und Telefonnummern bei der Registrierung](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**Importierte Benutzer**  
Wenn `PreventUserExistenceErrors` aktiviert ist, wird während der Authentifizierung importierter Benutzer ein allgemeiner `NotAuthorizedException`-Fehler zurückgegeben, der angibt, dass entweder der Benutzername oder das Kennwort falsch war, anstatt `PasswordResetRequiredException` zurückzugeben. Weitere Informationen finden Sie unter [Von importierten Benutzer verlangen, dass sie ihre Passwörter zurücksetzen](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**Lambda-Auslöser für die Benutzermigration.**  
Amazon Cognito gibt eine simulierte Antwort für nicht vorhandene Benutzer zurück, wenn im ursprünglichen Ereigniskontext vom Lambda-Auslöser eine leere Antwort festgelegt wurde. Weitere Informationen finden Sie unter [Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration](cognito-user-pools-import-using-lambda.md). 

### Vermeiden von Fehlern `UsernameExistsException` in Bezug auf E-Mail-Adressen und Telefonnummern bei der Registrierung
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

Das folgende Beispiel zeigt, wie Sie bei der Konfiguration von Aliasattributen in Ihrem Benutzerpool verhindern können, dass doppelte E-Mail-Adressen und Telefonnummern als Antwort auf die API-Anforderung `SignUp` den Fehler `UsernameExistsException` generieren. Sie müssen Ihren Benutzerpool mit einer E-Mail-Adresse oder Telefonnummer als Aliasattribut erstellt haben. Weitere Informationen finden Sie im Abschnitt *Anpassen von Anmeldeattributen* unter [Attribute für den Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

1. Jie meldet sich mit einem neuen Benutzernamen an und gibt auch die E-Mail-Adresse `jie@example.com` an. Amazon Cognito sendet einen Code an seine E-Mail-Adresse.

   **Beispiel für einen AWS CLI Befehl**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Beispielantwort**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Jie gibt den Code an, der ihm zur Bestätigung der E-Mail-Adresse zugesendet wurde. Damit ist seine Registrierung als Benutzer abgeschlossen.

   **Beispiel für einen AWS CLI Befehl**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
   ```

1. Shirley registriert ein neues Benutzerkonto und gibt die E-Mail-Adresse `jie@example.com` an. Amazon Cognito gibt keinen Fehler `UsernameExistsException` zurück und sendet einen Bestätigungscode an Jies E-Mail-Adresse.

   **Beispiel für einen AWS CLI Befehl**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Beispielantwort**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. In einem anderen Szenario ist Shirley Eigentümerin von `jie@example.com`. Shirley ruft den Code ab, den Amazon Cognito an Jies E-Mail-Adresse gesendet hat, und versucht, das Konto zu bestätigen.

   **Beispiel für einen AWS CLI Befehl**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
   ```

   **Beispielantwort**

   ```
   An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
   ```

Amazon Cognito gibt keinen Fehler auf Shirleys Anforderung `aws cognito-idp sign-up` zurück, obwohl `jie@example.com` einem vorhandenen Benutzer zugewiesen ist. Shirley muss nachweisen, dass die E-Mail-Adresse ihr gehört, bevor Amazon Cognito eine Fehlerantwort zurückgibt. In einem Benutzerpool mit Aliasattributen verhindert dieses Verhalten die Verwendung der öffentlichen `SignUp`-API, um zu überprüfen, ob ein Benutzer mit einer bestimmten E-Mail-Adresse oder Telefonnummer existiert.

Dieses Verhalten unterscheidet sich von der Antwort, die Amazon Cognito auf eine `SignUp`-Anforderung mit einem vorhandenen Benutzernamen zurückgibt, wie im folgenden Beispiel gezeigt wird. Shirley erfährt zwar aus dieser Antwort, dass ein Benutzer mit dem Benutzernamen `jie` bereits vorhanden ist, sie erfährt jedoch nichts über die mit dem Benutzer verknüpften E-Mail-Adressen oder Telefonnummern.

**CLI-Beispielbefehl**

```
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD
      --user-attributes Name="email",Value="shirley@example.com"
```

**Beispielantwort**

```
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
```

## Operationen zum Zurücksetzen des Passworts
<a name="cognito-user-pool-managing-errors-password-reset"></a>

Amazon Cognito gibt die folgenden Antworten auf Vorgänge zum Zurücksetzen von Benutzerpasswörtern zurück, wenn Sie Fehler bei vorhandenen Benutzern verhindern.

**ForgotPassword**  
Wenn ein Benutzer nicht gefunden wird, deaktiviert ist oder keinen verifizierten Übermittlungsmechanismus zum Wiederherstellen seines Kennworts hat, gibt Amazon Cognito `CodeDeliveryDetails` mit einem simulierten Bereitstellungsmedium für einen Benutzer zurück. Das simulierte Bereitstellungsmedium wird durch das Eingabe-Benutzernamensformat und die Verifizierungseinstellungen des Benutzerpools bestimmt.

**ConfirmForgotPassword**  
Amazon Cognito gibt den `CodeMismatchException`-Fehler für Benutzer zurück, die nicht vorhanden oder deaktiviert sind. Wenn bei der Verwendung von `ForgotPassword` kein Code angefordert wird, gibt Amazon Cognito den `ExpiredCodeException`-Fehler zurück.

## Bestätigungsoperationen
<a name="cognito-user-pool-managing-errors-confirmation"></a>

Amazon Cognito gibt die folgenden Antworten auf Vorgänge zum Bestätigen und Verifizieren von Benutzern zurück, wenn Sie Fehler bei vorhandenen Benutzern verhindern.

**ResendConfirmationCode**  
Amazon Cognito gibt `CodeDeliveryDetails` für einen deaktivierten oder einen nicht vorhandenen Benutzer zurück. Amazon Cognito sendet einen Bestätigungscode an die E-Mail- oder Telefonnummer des bestehenden Benutzers.

**ConfirmSignUp**  
 `ExpiredCodeException` gibt zurück, ob ein Code abgelaufen ist. Amazon Cognito gibt `NotAuthorizedException` zurück, wenn ein Benutzer nicht autorisiert ist. Wenn der Code nicht den Erwartungen des Servers entspricht, gibt Amazon Cognito `CodeMismatchException` zurück. 

# Benutzerpool-Endpunkte und Referenz für verwaltete Logins
<a name="cognito-userpools-server-contract-reference"></a>

Amazon Cognito bietet zwei Modelle der Benutzerpool-Authentifizierung: mit der Benutzerpools-API und mit dem OAuth 2.0-Autorisierungsserver. Verwenden Sie die API, wenn Sie OpenID Connect (OIDC) -Tokens mit einem AWS SDK in Ihrem Anwendungs-Backend abrufen möchten. Verwenden Sie den Autorisierungsserver, wenn Sie Ihren Benutzerpool als OIDC-Anbieter implementieren möchten. [Der Autorisierungsserver fügt Funktionen wie [Verbundanmeldung](cognito-user-pools-identity-federation.md), [API- und M2M-Autorisierung mit Gültigkeitsbereichen für Zugriffstoken und](cognito-user-pools-define-resource-servers.md) verwaltete Anmeldung hinzu.](cognito-user-pools-managed-login.md) [Sie können die API- und OIDC-Modelle jeweils einzeln oder zusammen verwenden, die auf Benutzerpoolebene oder App-Client-Ebene konfiguriert sind.](user-pool-settings-client-apps.md) Dieser Abschnitt ist eine Referenz für die Implementierung des OIDC-Modells. Weitere Informationen zu den beiden Authentifizierungsmodellen finden Sie unter. [Grundlegendes zur Authentifizierung über API, OIDC und verwaltete Anmeldeseiten](authentication-flows-public-server-side.md#user-pools-API-operations)

Amazon Cognito aktiviert die hier aufgeführten öffentlichen Webseiten, wenn Sie Ihrem Benutzerpool eine Domain zuweisen. Ihre Domain dient als zentraler Zugangspunkt für alle Ihre App-Clients. Sie umfassen die verwaltete Anmeldung, bei der sich Ihre Benutzer registrieren und anmelden ([Login-Endpunkt](login-endpoint.md)) und abmelden können ([Logout-Endpunkt](logout-endpoint.md)). Weitere Informationen zu diesen Ressourcen finden Sie unter [Vom Benutzerpool verwaltete Anmeldung](cognito-user-pools-managed-login.md).

Diese Seiten enthalten auch die öffentlichen Webressourcen, die es Ihrem Benutzerpool ermöglichen, mit SAML-, OpenID Connect- (OIDC) und OAuth 2.0-Identitätsanbietern () von Drittanbietern zu kommunizieren. IdPs Um einen Benutzer mit einem Federated Identity Provider anzumelden, müssen Ihre Benutzer eine Anfrage an das interaktive verwaltete Login oder das OIDC senden. [Login-Endpunkt](login-endpoint.md) [Autorisieren des Endpunkts](authorization-endpoint.md) Der Authorize-Endpunkt leitet Ihre Benutzer entweder zu Ihren verwalteten Anmeldeseiten oder zu Ihrer IdP-Anmeldeseite weiter.

Ihre App kann auch *lokale Benutzer* mit der [Amazon-Cognito-Benutzerpool-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) anmelden. Ein lokaler Benutzer existiert ausschließlich in Ihrem Benutzerpool-Verzeichnis ohne Verbund über einen externen IdP.

Zusätzlich zur verwalteten Anmeldung lässt sich Amazon Cognito auch SDKs für Android JavaScript, iOS und mehr integrieren. SDKs Sie bieten Tools zur Durchführung von Benutzerpool-API-Vorgängen mit Amazon Cognito API-Serviceendpunkten. Weitere Hinweise zu Service-Endpunkten finden Sie unter [Endpunkte und Kontingente von Amazon Cognito Identity](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html).

**Warnung**  
Fixieren Sie die Endentitäts- oder Zwischenzertifikate für Transport Layer Security (TLS) nicht für Amazon Cognito Cognito-Domains. AWS verwaltet alle Zertifikate für all Ihre Benutzerpool-Endpunkte und Präfix-Domains. Die Zertifizierungsstellen (CAs) in der Vertrauenskette, die Amazon Cognito Cognito-Zertifikate unterstützt, rotieren und erneuern sich dynamisch. Wenn Sie Ihre App an ein Zwischen- oder Leaf-Zertifikat anheften, kann es sein, dass Ihre App bei wechselnden AWS Zertifikaten ohne Vorankündigung fehlschlägt.  
Heften Sie Ihre Anwendung stattdessen an alle verfügbaren [Amazon-Stammzertifikate](https://www.amazontrust.com/repository/) an. Weitere Informationen finden Sie unter „Bewährte Verfahren und Empfehlungen“ unter [Zertifikat-Pinning](https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-pinning) im *AWS Certificate Manager -Benutzerhandbuch*.

**Topics**
+ [Benutzerinteraktives verwaltetes Login und klassische Endpunkte für gehostete Benutzeroberflächen](managed-login-endpoints.md)
+ [Identitätsanbieter und Endpunkte der vertrauenden Partei](federation-endpoints.md)
+ [OAuth 2.0 Zuschüsse](federation-endpoints-oauth-grants.md)
+ [Verwendung von PKCE in Autorisierungscode-Zuschüssen](using-pkce-in-authorization-code.md)
+ [Antworten auf verwaltete Anmelde- und Verbundfehler](federation-endpoint-idp-responses.md)

# Benutzerinteraktives verwaltetes Login und klassische Endpunkte für gehostete Benutzeroberflächen
<a name="managed-login-endpoints"></a>

Amazon Cognito aktiviert die verwalteten Anmeldeendpunkte in diesem Abschnitt, wenn Sie Ihrem Benutzerpool eine Domain hinzufügen. Dies sind Webseiten, auf denen Ihre Benutzer die wichtigsten Authentifizierungsvorgänge eines Benutzerpools abschließen können. Sie enthalten Seiten für Passwortverwaltung, Multi-Faktor-Authentifizierung (MFA) und Attributüberprüfung.

Die Webseiten, aus denen sich die verwaltete Anmeldung zusammensetzt, sind Frontend-Webanwendungen für interaktive Benutzersitzungen mit Ihren Kunden. Ihre App muss die verwaltete Anmeldung in den Browsern Ihrer Benutzer aufrufen. Amazon Cognito unterstützt keinen programmatischen Zugriff auf die Webseiten in diesem Kapitel. Die Verbund-Endpunkte in der [Identitätsanbieter und Endpunkte der vertrauenden Partei](federation-endpoints.md), die eine JSON-Antwort zurückgeben, können direkt in Ihrem App-Code abgefragt werden. Die [Autorisieren des Endpunkts](authorization-endpoint.md) leitet entweder zur verwalteten Anmeldung oder zu einer IdP-Anmeldeseite weiter und muss auch in den Browsern der Benutzer geöffnet werden.

Alle Benutzerpool-Endpunkte akzeptieren Datenverkehr von IPv4 und IPv6 Quell-IP-Adressen.

In den Themen in diesem Handbuch werden häufig verwendete Endpunkte für verwaltete Anmeldung und klassische gehostete Benutzeroberflächen ausführlich beschrieben. Der Unterschied zwischen der verwalteten Anmeldung und der gehosteten Benutzeroberfläche ist sichtbar und funktioniert nicht. Mit Ausnahme `/passkeys/add` von: Alle Pfade werden von den beiden Versionen des Brandings für verwaltete Logins gemeinsam genutzt.

Amazon Cognito stellt die folgenden Webseiten bereit, wenn Sie Ihrem Benutzerpool eine Domain zuweisen.


**Verwaltete Anmelde-Endpunkte**  

| Endpunkt-URL | Description | Zugriff darauf | 
| --- | --- | --- | 
| https://Your user pool domain/login | Meldet lokale Benutzer und Verbundbenutzer im Benutzerpool an. |  Weiterleitung von Endpunkten wie [Autorisieren des Endpunkts](authorization-endpoint.md), `/logout` und `/confirmforgotPassword`. Siehe [Login-Endpunkt](login-endpoint.md).  | 
| https://Your user pool domain/logout | Meldet Benutzer des Benutzerpools ab. |  Direkt-Link. Siehe [Logout-Endpunkt](logout-endpoint.md).  | 
| https:///ConfirmUser Your user pool domain | Bestätigt Benutzer, die einen E-Mail-Link ausgewählt haben, um ihr Benutzerkonto zu verifizieren. |  Der Benutzer hat einen Link in einer E-Mail-Nachricht ausgewählt.  | 
| https:///signup Your user pool domain | Registriert einen neuen Benutzer. Die Seite /login leitet die Benutzer an /signup weiter, wenn sie Sign up (Registrieren) auswählen. |  Direkter Link mit den gleichen Parametern wie `/oauth2/authorize`.  | 
| https:///confirm Your user pool domain | Nachdem Ihr Benutzerpool einen Bestätigungscode an einen Benutzer gesendet hat, der sich angemeldet hat, fordert er Ihren Benutzer auf, den Code einzugeben. |  Nur Weiterleitung von `/signup`.  | 
| https://Your user pool domain/Passwort vergessen | Fordert die Benutzer zur Eingabe des Benutzernamens auf und sendet einen Code zum Zurücksetzen des Passworts. Die Seite /login leitet die Benutzer an /forgotPassword weiter, wenn sie Forgot your password? (Passwort vergessen?) auswählen. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/managed-login-endpoints.html)  | 
| https:///ConfirmForgotPassword Your user pool domain | Fordert die Benutzer auf, den Code zum Zurücksetzen des Passworts und anschließend ein neues Passwort einzugeben. Die Seite /forgotPassword leitet die Benutzer an /confirmforgotPassword weiter, wenn sie Reset your password (Passwort zurücksetzen) auswählen. | Nur Weiterleitung von /forgotPassword. | 
| https://Your user pool domain/resendcode | Sendet einen neuen Bestätigungscode an einen Benutzer, der sich in Ihrem Benutzerpool angemeldet hat. |  Nur Weiterleitung von **Neuen Code senden** unter `/confirm`.  | 
| https:///passkeys/add Your user pool domain | [Registriert einen neuen Hauptschlüssel.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) Nur bei verwalteter Anmeldung verfügbar. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/managed-login-endpoints.html)  | 

**Topics**
+ [Der Endpunkt für die verwaltete Anmeldung: `/login`](login-endpoint.md)
+ [Der Endpunkt für die verwaltete Anmeldung und Abmeldung: `/logout`](logout-endpoint.md)

# Der Endpunkt für die verwaltete Anmeldung: `/login`
<a name="login-endpoint"></a>

Der Anmeldeendpunkt ist ein Authentifizierungsserver und ein Umleitungsziel von[Autorisieren des Endpunkts](authorization-endpoint.md). Er ist der Einstiegspunkt für die verwaltete Anmeldung, wenn Sie keinen Identitätsanbieter angeben. Wenn Sie eine Weiterleitung zum Anmeldeendpunkt generieren, wird die Anmeldeseite geladen und dem Benutzer werden die für den Client konfigurierten Authentifizierungsoptionen angezeigt.

**Anmerkung**  
Der Anmeldeendpunkt ist eine Komponente der verwalteten Anmeldung. Rufen Sie in Ihrer App Verbundseiten und verwaltete Anmeldeseiten auf, die zum Anmeldeendpunkt weiterleiten. Der direkte Zugriff von Benutzern auf den Anmeldeendpunkt hat sich als Methode nicht bewährt.

## GET /login
<a name="get-login"></a>

Der `/login`-Endpunkt unterstützt `HTTPS GET` nur für die erste Anfrage Ihres Benutzers. Ihre App ruft die Seite in einem Browser wie Chrome oder Firefox auf. Wenn Sie zu `/login` von der weiterleiten[Autorisieren des Endpunkts](authorization-endpoint.md), werden alle Parameter weitergegeben, die Sie in Ihrer ersten Anfrage angegeben haben. Der Anmeldeendpunkt unterstützt alle Anforderungsparameter des Autorisierungsendpunkts. Sie können auch direkt auf den Anmeldeendpunkt zugreifen. Es hat sich als Methode bewährt, die Sitzungen aller Benutzer mit `/oauth2/authorize` zu starten.

**Beispiel — Fordere den Benutzer auf, sich anzumelden**

Dieses Beispiel zeigt einen Anmeldebildschirm an.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/login?
                response_type=code&
                client_id=ad398u21ijw3s9w3939&
                redirect_uri=https://YOUR_APP/redirect_uri&
                state=STATE&
                scope=openid+profile+aws.cognito.signin.user.admin
```

**Beispiel — Antwort**  
Der Authentifikationsserver wird mit Autorisierungs-Code und -Status zurück an Ihre App geleitet. Der Server muss den Code und den Status an die Abfragezeichenfolge-Parameter zurücksenden und nicht an das Fragment.

```
HTTP/1.1 302 Found
                    Location: https://YOUR_APP/redirect_uri?code=AUTHORIZATION_CODE&state=STATE
```

## Vom Benutzer initiierte Anmeldeanfrage
<a name="post-login"></a>

Nachdem Ihr Benutzer den `/login`-Endpunkt geladen hat, kann er einen Benutzernamen und ein Passwort eingeben und **Anmelden** wählen. Wenn er dies tut, generiert er eine `HTTPS POST`-Anfrage mit denselben Header-Anforderungsparametern wie die `GET`-Anfrage und einem Anforderungstext mit seinem Benutzernamen, Passwort und einem Gerätefingerabdruck.

# Der Endpunkt für die verwaltete Anmeldung und Abmeldung: `/logout`
<a name="logout-endpoint"></a>

Der `/logout`-Endpunkt ist ein Umleitungsendpunkt. Es meldet den Benutzer ab und leitet entweder zu einer autorisierten Abmelde-URL für Ihren App-Client oder zum Endpunkt weiter. `/login` Die verfügbaren Parameter in einer GET-Anfrage an den `/logout` Endpunkt sind auf Anwendungsfälle der verwalteten Anmeldung mit Amazon Cognito zugeschnitten.

Der Abmelde-Endpunkt ist eine Front-End-Webanwendung für interaktive Benutzersitzungen mit Ihren Kunden. Ihre App muss diesen und andere verwaltete Anmeldeendpunkte in den Browsern Ihrer Benutzer aufrufen.

Um Ihren Benutzer zur verwalteten Anmeldung weiterzuleiten, um sich erneut anzumelden, fügen Sie Ihrer Anfrage einen `redirect_uri` Parameter hinzu. Eine `logout`-Anfrage mit einem `redirect_uri`-Parameter muss auch Parameter für Ihre nachfolgende Anfrage an den [Login-Endpunkt](login-endpoint.md) enthalten, wie `client_id`, `response_type` und `scope`.

Um Ihren Benutzer auf eine von Ihnen gewählte Seite weiterzuleiten, fügen Sie Ihrem App-Client die Option **Zulässige Abmeldung URLs** hinzu. Fügen Sie in den Anfragen Ihrer Benutzer an den `logout`-Endpunkt `logout_uri`- und `client_id`-Parameter hinzu. Wenn der Wert von `logout_uri` einer der **zulässigen Abmeldungen URLs** für Ihren App-Client entspricht, leitet Amazon Cognito Benutzer zu dieser URL weiter.

Mit Single Logout (SLO) für SAML 2.0 IdPs leitet Amazon Cognito Ihren Benutzer zunächst an den SLO-Endpunkt weiter, den Sie in Ihrer IdP-Konfiguration definiert haben. Nachdem Ihr IdP Ihren Benutzer zurück zu geleitet hat`saml2/logout`, antwortet Amazon Cognito mit einer weiteren Weiterleitung auf die `redirect_uri` oder `logout_uri` von Ihrer Anfrage. Weitere Informationen finden Sie unter [SAML-Benutzer mit Single Sign-Out abmelden](cognito-user-pools-saml-idp-sign-out.md).

Der Abmeldeendpunkt meldet Benutzer nicht von OIDC oder Anbietern sozialer Identitäten ab (). IdPs Um Benutzer von ihrer Sitzung mit einem externen IdP abzumelden, leiten Sie sie zur Abmeldeseite für diesen Anbieter weiter.

## GET/Abmeldung
<a name="get-logout"></a>

Der `/logout` Endpunkt unterstützt ausschließlich `HTTPS GET`. Der Benutzerpool-Client übermittelt diese Anfrage in der Regel über den Systembrowser. Der Browser ist normalerweise ein Custom Chrome Tab bei Android oder Safari Control View bei iOS.

### Anforderungsparameter
<a name="get-logout-request-parameters"></a>

*Client-ID*  
Die App-Client-ID für Ihre Anwendung. Um eine Client-ID für Ihre App abzurufen, müssen Sie die App im Benutzerpool registrieren. Weitere Informationen finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).  
Erforderlich.

*Abmelde-Uri*  
Leiten Sie Ihren Benutzer mit einem Parameter *logout-uri* auf eine benutzerdefinierte Abmeldeseite um. Legen Sie seinen Wert auf die **sign-out URL** (Abmelde-URL) des App-Clients fest, an die Sie Ihren Benutzer umleiten möchten, nachdem er sich abgemeldet hat. Verwenden Sie *logout\$1uri* nur mit einem *client\$1id*-Parameter. Weitere Informationen finden Sie unter [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md).  
Sie können auch den *logout\$1uri*-Parameter verwenden, um Ihren Benutzer auf die Anmeldeseite eines anderen App-Clients umzuleiten. Legen Sie die Anmeldeseite für den anderen App-Client als **Allowed callback URL** (Zulässige Rückruf-URL) in Ihrem App-Client fest. Legen Sie in Ihrer Anforderung an den `/logout`-Endpunkt den Wert des *logout\$1uri*-Parameters auf die URL-codierte Anmeldeseite fest.  
Amazon Cognito benötigt entweder einen *logout\$1uri*- oder einen *redirect\$1uri*-Parameter in der Anforderung an den `/logout`-Endpunkt. Ein *logout\$1uri*-Parameter leitet Ihren Benutzer auf eine andere Website um. Wenn sowohl die Parameter *logout\$1uri* als auch *redirect\$1uri* in Ihrer Anfrage an den `/logout`-Endpunkt enthalten sind, verwendet Amazon Cognito ausschließlich den Parameter *logout\$1uri* und überschreibt damit den Parameter *redirect\$1uri*.

*`nonce`*  
(Optional) Ein zufälliger Wert, den Sie der Anfrage hinzufügen können. Der von Ihnen bereitgestellte Nonce-Wert ist im ID-Token enthalten, das Amazon Cognito ausgibt. Zum Schutz vor Replay-Angriffen kann Ihre App den `nonce`-Anspruch im ID-Token untersuchen und mit dem vergleichen, den Sie generiert haben. Weitere Informationen zum `nonce`-Anspruch finden Sie unter [ID-Token-Validierung](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation) im *OpenID Connect-Standard*.

**redirect\$1uri**  
Leiten Sie Ihren Benutzer auf Ihre Anmeldeseite um, um sich mit einem Parameter *redirect\$1uri* zu authentifizieren. Legen Sie seinen Wert auf die **Allowed callback URL** (Zulässige Rückruf-URL) des App-Clients fest, an die Sie Ihren Benutzer umleiten möchten, nachdem er sich wieder angemeldet hat. Fügen Sie die Parameter *client\$1id*, *scope*, *state* und *response\$1type* hinzu, die Sie an Ihren `/login`-Endpunkt übergeben möchten.  
Amazon Cognito benötigt entweder einen *logout\$1uri*- oder einen *redirect\$1uri*-Parameter in der Anforderung an den `/logout`-Endpunkt. Um Ihren Benutzer an Ihren `/login` Endpunkt weiterzuleiten, um sich erneut zu authentifizieren und Token an Ihre App zu übergeben, fügen Sie einen *redirect\$1uri-Parameter* hinzu. *Wenn sowohl die Parameter *logout\$1uri* als auch *redirect\$1uri* in Ihrer Anfrage an den `/logout` Endpunkt enthalten sind, überschreibt Amazon Cognito den Parameter *redirect\$1uri* und verarbeitet ausschließlich den Parameter logout\$1uri.*

*response\$1type*  
Die OAuth 2.0-Antwort, die Sie von Amazon Cognito erhalten möchten, nachdem sich Ihr Benutzer angemeldet hat. `code`und `token` sind die gültigen Werte für den Parameter *response\$1type*.  
Erforderlich, wenn Sie einen *redirect\$1uri*-Parameter verwenden.

*state*  
Wenn Ihre Anwendung einer Anfrage einen *State-Parameter* hinzufügt, gibt Amazon Cognito seinen Wert an Ihre App zurück, wenn der `/oauth2/logout` Endpunkt Ihren Benutzer umleitet.  
Fügen Sie diesen Wert Ihren Anfragen hinzu, um sich vor [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)-Angriffen zu schützen.  
Sie können den Wert eines Parameters `state` nicht auf eine URL-codierte JSON-Zeichenfolge festlegen. Um eine Zeichenfolge, die diesem Format entspricht, in einem `state` Parameter zu übergeben, kodieren Sie die Zeichenfolge auf Base64 und dekodieren Sie sie dann in Ihrer Anwendung.  
Dringend empfohlen, wenn Sie einen *redirect\$1uri*-Parameter verwenden.

*scope*  
Die OAuth 2.0-Bereiche, die Sie von Amazon Cognito anfordern möchten, nachdem Sie sie mit einem *redirect\$1uri-Parameter* abgemeldet haben. Amazon Cognito leitet Ihren Benutzer an den `/login`-Endpunkt mit dem *scope*-Parameter in Ihrer Anforderung an den `/logout`-Endpunkt um.  
Optional, wenn Sie einen *redirect\$1uri*-Parameter verwenden. Wenn Sie keinen *scope*-Parameter angeben, leitet Amazon Cognito Ihren Benutzer an den `/login`-Endpunkt mit einem *scope*-Parameter um. Wenn Amazon Cognito Ihren Benutzer umleitet und automatisch `scope` ausfüllt, enthält der Parameter alle autorisierten Bereiche für Ihren App-Client.

### Beispielanfragen
<a name="get-logout-request-sample"></a>

**Beispiel — Abmelden und Benutzer zum Client weiterleiten**

Amazon Cognito leitet Benutzersitzungen an die URL im Wert von `logout_uri` weiter und ignoriert dabei alle anderen Anforderungsparameter, wenn Anfragen `logout_uri` und `client_id` enthalten. Bei dieser URL muss es sich um eine autorisierte Abmelde-URL für den App-Client handeln.

Im Folgenden finden Sie ein Beispiel für eine Anfrage zur Abmeldung und Weiterleitung zu `https://www.example.com/welcome`.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  client_id=1example23456789&
  logout_uri=https%3A%2F%2Fwww.example.com%2Fwelcome
```

**Beispiel — Melden Sie sich ab und fordern Sie den Benutzer auf, sich als ein anderer Benutzer anzumelden**

Wenn Anfragen ausgelassen werden, `logout_uri` aber ansonsten die Parameter angeben, die eine wohlgeformte Anfrage an den Autorisierungsendpunkt ausmachen, leitet Amazon Cognito Benutzer zur verwalteten Anmeldung weiter. Der Abmelde-Endpunkt hängt die Parameter in Ihrer ursprünglichen Anfrage an das Weiterleitungsziel an.

Die zusätzlichen Parameter, die Sie der Abmeldeanforderung hinzufügen, müssen in der Liste unter enthalten sein. [Anforderungsparameter](#get-logout-request-parameters) Beispielsweise unterstützt der Abmeldeendpunkt keine automatische IdP-Umleitung mit `identity_provider` oder `idp_identifier` -Parametern. Der Parameter `redirect_uri` in einer Anfrage an den Abmeldeendpunkt ist keine Abmelde-URL, sondern eine post-sign-in URL, die Sie an den Autorisierungsendpunkt weiterleiten möchten.

Im Folgenden finden Sie eine Beispielanforderung, die einen Benutzer abmeldet, zur Anmeldeseite weiterleitet und nach der Anmeldung einen Autorisierungscode bereitstellt. `https://www.example.com`

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  response_type=code&
  client_id=1example23456789&
  redirect_uri=https%3A%2F%2Fwww.example.com&
  state=example-state-value&
  nonce=example-nonce-value&
  scope=openid+profile+aws.cognito.signin.user.admin
```

# Identitätsanbieter und Endpunkte der vertrauenden Partei
<a name="federation-endpoints"></a>

*Verbundendpunkte* sind Benutzerpool-Endpunkte, die einem der von Benutzerpools verwendeten Authentifizierungsstandards dienen. Dazu gehören SAML-ACS URLs, OIDC-Erkennungsendpunkte und Dienstendpunkte für Benutzerpools, die sowohl als Identitätsanbieter als auch als vertrauende Partei fungieren. Verbundendpunkte initiieren Authentifizierungsabläufe, erhalten Authentifizierungsnachweise von Clients und stellen Token an diese aus IdPs. Sie interagieren mit IdPs Anwendungen und Administratoren, aber nicht mit Benutzern.

Die ganzseitigen Themen nach dieser Seite enthalten Informationen zu den OAuth 2.0- und OIDC-Provider-Endpunkten, die verfügbar werden, wenn Sie Ihrem Benutzerpool eine Domain hinzufügen. Die folgende Tabelle enthält eine Liste aller Verbundendpunkte.

Beispiele für [Benutzerpool-Domänen sind:](cognito-user-pools-assign-domain.md)

1. Präfixdomäne: `mydomain.auth.us-east-1.amazoncognito.com`

1. Benutzerdefinierte Domain: `auth.example.com`


**Benutzerpool-Verbund-Endpunkte**  

| Endpunkt-URL | Description | Zugriff darauf | 
| --- | --- | --- | 
| https://Your user pool domain/oauth2/authorize | Leitet einen Benutzer entweder zur verwalteten Anmeldung oder zur Anmeldung mit seinem IdP weiter. | Wird im Kundenbrowser aufgerufen, um mit der Benutzerauthentifizierung zu beginnen. Siehe [Autorisieren des Endpunkts](authorization-endpoint.md). | 
| https://Your user pool domain/oauth2/token | Gibt Token auf der Grundlage eines Autorisierungscodes oder einer Anforderung von Kundenanmeldeinformationen zurück. | Von der App zum Abrufen von Token angefordert. Siehe [Token-Endpunkt](token-endpoint.md). | 
| https://Your user pool domainOAuth2/UserInfo | Gibt Benutzerattribute basierend auf OAuth 2.0-Bereichen und Benutzeridentität in einem Zugriffstoken zurück. | Von der App zum Abrufen des Benutzerprofils angefordert. Siehe [UserInfo-Endpunkt](userinfo-endpoint.md). | 
| https://Your user pool domain/oauth2/revoke | Widerruft ein Aktualisierungs-Token und die zugehörigen Zugriffs-Token. | Von der App aufgefordert, ein Token zu widerrufen. Siehe [Widerrufen des Endpunkts](revocation-endpoint.md). | 
| https://cognito-idp. Region.amazonaws.com/ /.well-known/openid-configuration your user pool ID | Ein Verzeichnis der OIDC-Architektur Ihres Benutzerpools. [1](#cognito-federation-oidc-discovery-note) | Von der App angefordert, um Metadaten des Benutzerpool-Emittenten zu finden. | 
| https://cognito-idp. Region.amazonaws.com/ /.well-known/jwks.json your user pool ID | Öffentliche Schlüssel, mit denen Sie Amazon Cognito Cognito-Token validieren können. [2](#cognito-federation-oidc-jwks-note) | Von der App zur Überprüfung angefordert JWTs. | 
| https://Your user pool domain/oauth2/idpresponse | Social-Identitätsanbieter müssen Ihre Benutzer mit einem Autorisierungscode an diesen Endpunkt umleiten. Amazon Cognito löst den Code gegen ein Token ein, wenn es Ihren Verbundbenutzer authentifiziert. | Weitergeleitet von der OIDC-IdP-Anmeldung als IdP-Client-Callback-URL. | 
| https://Your user pool domain/saml2/idpresponse | Die Assertion Consumer Response (ACS) -URL für die Integration mit SAML 2.0-Identitätsanbietern. | Umgeleitet von SAML 2.0-IdP als ACS-URL oder Ausgangspunkt für die vom IdP initiierte Anmeldung. [3](#cognito-federation-idp-init-note) | 
| httpsYour user pool domain:///saml2/logout | Die [Single Logout](cognito-user-pools-saml-idp-sign-out.md#cognito-user-pools-saml-idp-sign-out.title) (SLO) -URL für die Integration mit SAML 2.0-Identitätsanbietern. | Umgeleitet von SAML 2.0 IdP als Single Logout (SLO) -URL. Akzeptiert nur POST-Bindung. | 

1 Das `openid-configuration` Dokument kann jederzeit mit zusätzlichen Informationen aktualisiert werden, damit der Endpunkt dem OIDC und OAuth2 den Spezifikationen entspricht.

2 Die `jwks.json` JSON-Datei kann jederzeit mit neuen öffentlichen Token-Signaturschlüsseln aktualisiert werden.

3 Weitere Informationen zur IDP-initiierten SAML-Anmeldung finden Sie unter. [Implementieren Sie die IDP-initiierte SAML-Anmeldung](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-SAML-session-initiation-idp-initiation)

[Weitere Informationen zu OpenID Connect und den OAuth Standards finden Sie unter [OpenID Connect 1.0 und OAuth 2.0](http://openid.net/specs/openid-connect-core-1_0.html).](https://tools.ietf.org/html/rfc6749)

**Topics**
+ [Der Umleitungs- und Autorisierungsendpunkt](authorization-endpoint.md)
+ [Der Endpunkt des Token-Ausstellers](token-endpoint.md)
+ [Der Endpunkt der Benutzerattribute](userinfo-endpoint.md)
+ [Der Endpunkt für den Token-Widerruf](revocation-endpoint.md)
+ [Der IdP-SAML-Assertion-Endpunkt](saml2-idpresponse-endpoint.md)

# Der Umleitungs- und Autorisierungsendpunkt
<a name="authorization-endpoint"></a>

Der `/oauth2/authorize`-Endpunkt ist ein Umleitungsendpunkt, der zwei Umleitungsziele unterstützt. Wenn Sie einen `identity_provider`- oder `idp_identifier`-Parameter in der URL angeben, werden Ihre Benutzer im Hintergrund auf die Anmeldeseite für diesen Identitätsanbieter (IDP) umgeleitet. Andernfalls erfolgt die Umleitung an [Login-Endpunkt](login-endpoint.md) mit denselben URL-Parametern, die Sie in Ihre Anfrage aufgenommen haben. 

Der Autorisierungsendpunkt leitet entweder zur verwalteten Anmeldung oder zu einer IdP-Anmeldeseite weiter. Das Ziel einer Benutzersitzung an diesem Endpunkt ist eine Webseite, mit der Ihr Benutzer direkt in seinem Browser interagieren muss.

Wenn Sie den Autorisierungsendpunkt verwenden möchten, rufen Sie den Browser Ihres Benutzers unter `/oauth2/authorize` mit Parametern auf, die Ihrem Benutzerpool Informationen zu den folgenden Benutzerpool-Details liefern.
+ Der App-Client, bei dem Sie sich anmelden möchten.
+ Die Rückruf-URL, zu der Sie gelangen möchten.
+ Die OAuth 2.0-Bereiche, die Sie im Zugriffstoken Ihres Benutzers anfordern möchten.
+ Optionaler Drittanbieter-IDP, den Sie für die Anmeldung verwenden möchten.

Sie können auch `state`- und `nonce`-Parameter angeben, die Amazon Cognito verwendet, um eingehende Ansprüche zu validieren.

## GET `/oauth2/authorize`
<a name="get-authorize"></a>

Der `/oauth2/authorize` Endpunkt unterstützt ausschließlich `HTTPS GET`. Ihre App initiiert diese Anfrage normalerweise im Browser Ihres Benutzers. Sie können nur über HTTPS Anfragen an den `/oauth2/authorize`-Endpunkt stellen.

Weitere Informationen über die Definition des Autorisierungsendpunkts im OpenID Connect (OIDC)-Standard finden Sie unter [Authorisierungsendpunkt](http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthorizationEndpoint).

### Anforderungsparameter
<a name="get-authorize-request-parameters"></a>

**`response_type`**  
Erforderlich  
Die Art der Antwort. Es muss sich entweder um `code` oder `token` handeln.   
Eine erfolgreiche Anfrage mit einem `response_type` von `code` gibt eine Autorisierungscode-Erteilung zurück. Eine Autorisierungscode-Erteilung ist ein `code`-Parameter, den Amazon Cognito an Ihre Umleitungs-URL anhängt. Ihre App kann den Code durch Zugriffs-, ID- und Aktualisierungstoken austauschen. Verwenden Sie als bewährte Sicherheitsmethode und zum Abrufen von Aktualisierungstoken für Ihre Benutzer eine Autorisierungscode-Erteilung in Ihrer App.  
Eine erfolgreiche Anfrage mit dem `response_type` `token` gibt eine implizite Erteilung zurück. Eine implizite Erteilung besteht aus einer ID und einem Zugriffstoken, die Amazon Cognito an Ihre Umleitungs-URL anhängt. Eine implizite Erteilung ist weniger sicher, da sie Token und potenzielle identifizierende Informationen für Benutzer verfügbar macht. Sie können die Unterstützung für implizite Erteilungen in der Konfiguration Ihres App-Clients deaktivieren.

**`client_id`**  
Erforderlich  
Die App-Client-ID).  
Der Wert `client_id` muss die ID eines App-Clients in dem Benutzerpool sein, in dem Sie die Anfrage stellen. Ihr App-Client muss die Anmeldung durch lokale Benutzer von Amazon Cognito oder mindestens eines externen IdPs unterstützen.

**`redirect_uri`**  
Erforderlich  
Die URL, an die der Authentifizierungsserver den Browser nach der Autorisierung des Benutzers durch Amazon Cognito weiterleitet.  
Ein Umleitungs-URI (Uniform Resource Identifier) muss die folgenden Attribute aufweisen:  
+ Es muss ein absoluter URI sein.
+ Sie müssen die URI im Vorfeld mit einem Client registriert haben.
+ Sie darf keine Fragmentkomponente enthalten.
Siehe [OAuth 2.0 — Endpunkt der Umleitung](https://tools.ietf.org/html/rfc6749#section-3.1.2).  
Amazon Cognito erfordert, dass Ihr Umleitungs-URI HTTPS verwendet, mit Ausnahme von `http://localhost`, was Sie als Rückruf-URL für Testzwecke festlegen können.  
Amazon Cognito unterstützt auch App-Callback URLs wie. `myapp://example`

**`state`**  
Optional, empfohlen.  
Wenn Ihre App einer Anfrage einen Parameter *state* hinzufügt, gibt Amazon Cognito seinen Wert an Ihre App zurück, wenn der Endpunkt `/oauth2/authorize` Ihren Benutzer umleitet.  
Fügen Sie diesen Wert Ihren Anfragen hinzu, um sich vor [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)-Angriffen zu schützen.  
Sie können den Wert eines Parameters `state` nicht auf eine URL-codierte JSON-Zeichenfolge festlegen. Um eine Zeichenfolge, die diesem Format entspricht, in einem `state` Parameter zu übergeben, kodieren Sie die Zeichenfolge in Base64 und dekodieren Sie sie dann in Ihrer App.

**`identity_provider`**  
Optional.  
Fügen Sie diesen Parameter hinzu, um die verwaltete Anmeldung zu umgehen und Ihren Benutzer auf die Anmeldeseite eines Anbieters umzuleiten. Der Wert des *identity\$1provider*-Parameters ist der Name des Identitätsanbieters (IDP), wie er in Ihrem Benutzerpool angezeigt wird.  
+ Für soziale Anbieter können Sie die *identity\$1provider-Werte*`Facebook`,, und `Google` verwenden. `LoginWithAmazon` `SignInWithApple`
+ Verwenden Sie für Amazon Cognito Cognito-Benutzerpools den Wert`COGNITO`.
+ Verwenden Sie für SAML 2.0- und OpenID Connect (OIDC-) Identitätsanbieter (IdPs) den Namen, den Sie dem IdP in Ihrem Benutzerpool zugewiesen haben.

**`idp_identifier`**  
Optional.  
Fügen Sie diesen Parameter für die Umleitung an einen Anbieter mit einem alternativen Namen für *identity\$1provider* hinzu. Sie können Identifikatoren für Ihre SAML 2.0 und OIDC IdPs im Menü **Soziale Netzwerke und externe Anbieter der Amazon Cognito** Cognito-Konsole eingeben.

**`scope`**  
Optional.  
Dabei kann es sich um eine Kombination aus für das System reservierten Bereichen oder benutzerdefinierten Bereichen, die einem Client zugeordnet sind, handeln. Bereiche müssen durch Leerzeichen getrennt werden. Für das System reservierte Bereiche sind `openid``email`, `phone`, `profile` und `aws.cognito.signin.user.admin`. Jeder Bereich muss dem Client zugeordnet werden, sonst wird der Client zur Laufzeit ignoriert.  
Falls der Client keine Bereiche anfordert, verwendet der Authentifizierungsserver alle Bereiche im Zusammenhang mit dem Client.  
Ein ID-Token wird nur zurückgegeben, wenn der `openid`-Bereich angefordert wird. Das Zugriffs-Token kann nur gegen Amazon-Cognito-Benutzerpools verwendet werden, wenn der Bereich `aws.cognito.signin.user.admin` angefordert wird. Die Bereiche `phone`, `email` und `profile` können nur angefordert werden, wenn der Bereich `openid` ebenfalls angefordert wird. Diese Bereiche bestimmen die Anträge, die im ID-Token eingesetzt werden.

**`code_challenge_method`**  
Optional.  
Das Hashing-Protokoll, das Sie zur Generierung der Herausforderung verwendet haben. Die [PKCE RFC](https://tools.ietf.org/html/rfc7636) definiert zwei Methoden, die S256-Methode und eine einfache. Der Amazon-Cognito-Authentifikationsserver unterstützt jedoch nur die S256-Methode.

**`code_challenge`**  
Optional.  
Die PKCE-Abfrage (Proof of Key Code Exchange), die Sie anhand der generiert haben. `code_verifier` Weitere Informationen finden Sie unter [Verwendung von PKCE in Autorisierungscode-Zuschüssen](using-pkce-in-authorization-code.md).  
Nur erforderlich, wenn Sie einen `code_challenge_method`-Parameter angeben.

**`nonce`**  
Optional.  
Ein Zufallswert, den Sie der Anforderung hinzufügen können. Der von Ihnen bereitgestellte Nonce-Wert ist im ID-Token enthalten, das Amazon Cognito ausgibt. Zum Schutz vor Replay-Angriffen kann Ihre App den `nonce`-Anspruch im ID-Token untersuchen und mit dem vergleichen, den Sie generiert haben. Weitere Informationen zum `nonce`-Anspruch finden Sie unter [ID-Token-Validierung](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation) im *OpenID Connect-Standard*.

**`lang`**  
Optional.  
Die Sprache, in der Sie benutzerinteraktive Seiten anzeigen möchten. Verwaltete Anmeldeseiten können lokalisiert werden, gehostete UI-Seiten (klassische Seiten) jedoch nicht. Weitere Informationen finden Sie unter [Lokalisierung bei verwalteter Anmeldung](cognito-user-pools-managed-login.md#managed-login-localization).

**`login_hint`**  
Optional.  
Eine Aufforderung zur Eingabe eines Benutzernamens, die Sie an den Autorisierungsserver weiterleiten möchten. Sie können einen Benutzernamen, eine E-Mail-Adresse oder eine Telefonnummer von Ihrem Benutzer erfassen und dem Zielanbieter erlauben, den Anmeldenamen des Benutzers vorab auszufüllen. Wenn Sie einen `login_hint` Parameter und keine `idp_identifier` oder `identity_provider` Parameter an den `oauth2/authorize` Endpunkt senden, füllt Managed Login das Feld für den Benutzernamen mit Ihrem Hinweiswert aus. Sie können diesen Parameter auch an den übergeben [Login-Endpunkt](login-endpoint.md) und den Wert für den Benutzernamen automatisch ausfüllen.  
Wenn Ihre Autorisierungsanfrage eine Weiterleitung zu OIDC aufruft IdPs, fügt Amazon Cognito der Anfrage an diesen Drittanbieter-Autorisierer einen `login_hint` Parameter hinzu. Sie können Anmeldehinweise nicht an SAML, Apple, Login With Amazon, Google oder Facebook (Meta) IdPs weiterleiten.

**`prompt`**  
Optional.  
Ein OIDC-Parameter, der das Authentifizierungsverhalten für bestehende Sitzungen steuert. Nur in der Branding-Version für verwaltete Anmeldung verfügbar, nicht in der klassischen gehosteten Benutzeroberfläche. Weitere Informationen aus der OIDC-Spezifikation finden Sie unter [Authentifizierungsanfrage](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest). Die Werte `none` und `login` wirken sich auf das Authentifizierungsverhalten des Benutzerpools aus.  
Amazon Cognito leitet alle Werte von weiter`none`, `prompt` außer an Ihre, IdPs wenn Benutzer die Authentifizierung bei Drittanbietern auswählen. Dies ist der Fall, wenn die URL, auf die Benutzer zugreifen, einen `identity_provider` `idp_identifier` OR-Parameter enthält oder wenn der Autorisierungsserver sie an den weiterleitet [Login-Endpunkt](login-endpoint.md) und sie einen IdP aus den verfügbaren Schaltflächen auswählen.  
**Parameterwerte abfragen**    
`prompt=none`  
Amazon Cognito setzt die Authentifizierung für Benutzer, die über eine gültige authentifizierte Sitzung verfügen, im Hintergrund fort. Mit dieser Aufforderung können sich Benutzer unbeaufsichtigt zwischen verschiedenen App-Clients in Ihrem Benutzerpool authentifizieren. Wenn der Benutzer noch nicht authentifiziert ist, gibt der Autorisierungsserver einen Fehler zurück. `login_required`  
`prompt=login`  
Amazon Cognito verlangt von Benutzern, sich erneut zu authentifizieren, auch wenn sie eine bestehende Sitzung haben. Senden Sie diesen Wert, wenn Sie die Identität des Benutzers erneut überprüfen möchten. Authentifizierte Benutzer, die über eine bestehende Sitzung verfügen, können zur Anmeldung zurückkehren, ohne dass diese Sitzung ungültig wird. Wenn sich ein Benutzer, der eine bestehende Sitzung hat, erneut anmeldet, weist Amazon Cognito ihm ein neues Sitzungscookie zu. Dieser Parameter kann auch an Ihren weitergeleitet werden. IdPs IdPsdie diesen Parameter akzeptieren, fordern auch einen neuen Authentifizierungsversuch vom Benutzer an.  
`prompt=select_account`  
Dieser Wert hat keine Auswirkung auf die lokale Anmeldung und muss in Anfragen eingereicht werden, die zu IdPs umleiten. Wenn dieser Parameter in Ihrer Autorisierungsanfrage enthalten ist, wird er `prompt=select_account` zum URL-Pfad für das IdP-Umleitungsziel hinzugefügt. Wenn dieser Parameter IdPs unterstützt wird, fordern sie die Benutzer auf, das Konto auszuwählen, mit dem sie sich anmelden möchten.  
`prompt=consent`  
Dieser Wert hat keine Auswirkung auf die lokale Anmeldung und muss in Anfragen eingereicht werden, die zu IdPs umleiten. Wenn dieser Parameter in Ihrer Autorisierungsanfrage enthalten ist, wird er `prompt=consent` zum URL-Pfad für das IdP-Umleitungsziel hinzugefügt. Wenn dieser Parameter IdPs unterstützt wird, fordern sie die Zustimmung des Benutzers an, bevor sie zurück zu Ihrem Benutzerpool weiterleiten. 
Wenn Sie den `prompt` Parameter in Ihrer Anfrage weglassen, folgt die verwaltete Anmeldung dem Standardverhalten: Benutzer müssen sich anmelden, es sei denn, ihr Browser hat ein gültiges Sitzungscookie für die verwaltete Anmeldung. Sie können beispielsweise mehrere Werte für `prompt` mit einem Leerzeichen als Trennzeichen kombinieren. `prompt=login consent`

**`resource`**  
Optional.  
Der Bezeichner einer Ressource, die Sie an das Zugriffstoken im Anspruch binden möchten. `aud` Wenn Sie diesen Parameter angeben, überprüft Amazon Cognito, ob es sich bei dem Wert um eine URL handelt, und legt die Zielgruppe des resultierenden Zugriffstokens auf die angeforderte Ressource fest. Sie können einen [Benutzerpool-Ressourcenserver](cognito-user-pools-define-resource-servers.md) mit einer Kennung in einem URL-Format oder einer URL Ihrer Wahl anfordern. Die Werte für diesen Parameter müssen mit `https://``http://localhost`, oder einem benutzerdefinierten URL-Schema wie beginnen`myapp://`.  
Die Ressourcenbindung ist in [RFC 8707](https://www.rfc-editor.org/rfc/rfc8707.html) definiert. [Weitere Informationen zu Ressourcenservern und Ressourcenbindung finden Sie unter Ressourcenbindung.](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding)

## Beispiel: Erteilung eines Autorisierungscodes
<a name="sample-authorization-code-grant"></a>

Dies ist ein Beispiel für eine Anfrage zur Erteilung eines Autorisierungscodes.

Die folgende Anfrage initiiert eine Sitzung zum Abrufen eines Autorisierungscodes, den Ihr Benutzer an Ihre App am `redirect_uri` Ziel weitergibt. In dieser Sitzung werden Bereiche für Benutzerattribute und für den Zugriff auf Amazon Cognito-Self-Service-API-Operationen angefordert.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin
```

Der Amazon-Cognito-Authentifikationsserver leitet Autorisierungs-Code und -Status zurück an Ihre App. Der Autorisierungscode ist fünf Minuten gültig.

```
HTTP/1.1 302 Found
Location: https://www.example.com?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
```

## Beispiel: Erteilung eines Autorisierungscodes mit PKCE
<a name="sample-authorization-code-grant-with-pkce"></a>

In diesem Beispielablauf wird eine Autorisierungscode-Erteilung mit [PKCE](using-pkce-in-authorization-code.md#using-pkce-in-authorization-code.title) durchgeführt.

Diese Anfrage fügt einen `code_challenge` Parameter hinzu. Um den Austausch eines Codes gegen ein Token abzuschließen, müssen Sie den `code_verifier` Parameter in Ihre Anfrage an den `/oauth2/token` Endpunkt aufnehmen.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=aws.cognito.signin.user.admin&
code_challenge_method=S256&
code_challenge=a1b2c3d4...
```

Der Autorisierungsserver leitet mit dem Autorisierungscode und dem Status zurück zu Ihrer Anwendung. Ihre Anwendung verarbeitet den Autorisierungscode und tauscht ihn gegen Token ein.

```
HTTP/1.1 302 Found
Location: https://www.example.com?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
```

## Beispiel: erfordert eine erneute Authentifizierung mit `prompt=login`
<a name="sample-authorization-code-with-prompt-login"></a>

Die folgende Anfrage fügt einen `prompt=login` Parameter hinzu, nach dem sich der Benutzer erneut authentifizieren muss, auch wenn er bereits eine Sitzung hat.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin&
prompt=login
```

Der Autorisierungsserver leitet zum [Anmeldeendpunkt](login-endpoint.md) weiter und erfordert eine erneute Authentifizierung.

```
HTTP/1.1 302 Found Location: https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com&state=abcdefg&scope=openid+profile+aws.cognito.signin.user.admin&prompt=login
```

## Beispiel: unbeaufsichtigte Authentifizierung mit `prompt=none`
<a name="sample-authorization-code-with-prompt-none"></a>

Die folgende Anfrage fügt einen `prompt=none` Parameter hinzu, der im Hintergrund überprüft, ob der Benutzer eine gültige Sitzung hat.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin&
prompt=none
```

Wenn keine gültige Sitzung vorhanden ist, gibt der Autorisierungsserver einen Fehler an die Umleitungs-URI zurück

```
HTTP/1.1 302 Found Location: https://www.example.com?error=login_required&state=abcdefg
```

Wenn eine gültige Sitzung besteht, gibt der Autorisierungsserver einen Autorisierungscode zurück.

```
HTTP/1.1 302 Found Location: https://www.example.com?code=AUTHORIZATION_CODE&state=abcdefg
```

## Beispiel: Erteilung eines Autorisierungscodes mit Ressourcenbindung
<a name="sample-authorization-code-with-resource-binding"></a>

Die folgende Anfrage fügt einen `resource` Parameter hinzu, um das Zugriffstoken an einen bestimmten Ressourcenserver zu binden. Das resultierende Zugriffstoken schafft die Voraussetzungen dafür, dass die Ziel-API überprüft, ob es sich um die Zielgruppe der Anfrage des authentifizierten Benutzers handelt.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=solar-system-data-api.example.com/asteroids.add&
resource=https://solar-system-data-api.example.com
```

Der Autorisierungsserver gibt einen Autorisierungscode zurück, der zu einem Zugriffstoken mit dem `aud` Anspruch von `https://solar-system-data-api.example.com` führt.

```
HTTP/1.1 302 Found Location: https://www.example.com?code=AUTHORIZATION_CODE&state=abcdefg
```

## Beispiel: Token-Erteilung (implizit) ohne Geltungsbereich `openid`
<a name="sample-token-grant-without-openid-scope"></a>

Dieser Beispielablauf generiert eine implizite Gewährung und kehrt JWTs direkt zur Sitzung des Benutzers zurück.

Die Anfrage bezieht sich auf eine implizite Erteilung von Ihrem Autorisierungsserver. Sie fordert Bereiche im Zugriffstoken an, die Self-Service-Vorgänge für Benutzerprofile autorisieren.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=token&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=aws.cognito.signin.user.admin
```

Der Autorisierungsserver leitet nur mit einem Zugriffstoken zurück zu Ihrer Anwendung. Da der `openid`-Bereich nicht angefordert wurde, gibt Amazon Cognito kein ID-Token aus. Außerdem gibt Amazon Cognito in diesem Flow kein Aktualisierungs-Token aus.

```
HTTP/1.1 302 Found
Location: https://example.com/callback#access_token=eyJra456defEXAMPLE&token_type=bearer&expires_in=3600&state=STATE
```

## Beispiel: Token-Erteilung (implizit) mit Gültigkeitsbereich `openid`
<a name="sample-token-grant-with-openid-scope"></a>

Dieser Beispielablauf generiert eine implizite Gewährung und gibt Token an den Browser des Benutzers zurück.

Die Anfrage bezieht sich auf eine implizite Erteilung durch Ihren Autorisierungsserver. Sie fordert Bereiche im Zugriffstoken an, die den Zugriff auf Benutzerattribute und Self-Service-Operationen autorisieren.

```
GET
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? 
response_type=token& 
client_id=1example23456789& 
redirect_uri=https://www.example.com& 
state=abcdefg&
scope=aws.cognito.signin.user.admin+openid+profile
```

Der Autorisierungsserver leitet mit dem Zugriffstoken und dem ID-Token zurück zu Ihrer Anwendung (da der `openid` Bereich enthalten war):

```
HTTP/1.1 302 Found
Location: https://www.example.com#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
```

## Beispiele für negative Antworten
<a name="get-authorize-negative"></a>

Amazon Cognito lehnt Ihre Anfrage möglicherweise ab. Negative Anfragen enthalten einen HTTP-Fehlercode und eine Beschreibung, anhand derer Sie Ihre Anforderungsparameter korrigieren können. Im Folgenden finden Sie Beispiele für negative Antworten.
+ Wenn `client_id` und gültig `redirect_uri` sind, die Anforderungsparameter jedoch nicht korrekt formatiert sind, leitet der Authentifizierungsserver den Fehler an den des Clients weiter `redirect_uri` und fügt eine Fehlermeldung an einen URL-Parameter an. Im Folgenden finden Sie Beispiele für eine falsche Formatierung.
  + Die Anfrage enthält keinen `response_type` Parameter.
  + Die Autorisierungsanfrage lieferte einen `code_challenge` Parameter, aber keinen `code_challenge_method` Parameter.
  + Der Wert des `code_challenge_method` Parameters ist nicht`S256`.

  Im Folgenden finden Sie die Antwort auf eine Beispielanfrage mit falscher Formatierung.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
  ```
+ Wenn der Client eine Anfrage `code` oder `token` eingibt`response_type`, aber keine Genehmigung für diese Anfragen hat, kehrt der Amazon Cognito Cognito-Autorisierungsserver wie folgt `unauthorized_client` zum Client-Autorisierungsserver zurück: `redirect_uri`

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
  ```
+  Falls die Anforderung des Clients unbekannt, falsch formatiert oder ungültig ist, sollte der Amazon-Cognito-Autorisierungsserver `invalid_scope` folgendermaßen zur `redirect_uri` des Clients zurückgeben: 

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
  ```
+ Wenn auf dem Server ein unerwarteter Fehler auftritt, kehrt der Authentifizierungsserver `server_error` zum Server des `redirect_uri` Clients zurück. Da der HTTP 500-Fehler nicht an den Client gesendet wird, wird der Fehler nicht im Browser des Benutzers angezeigt. Der Autorisierungsserver gibt den folgenden Fehler zurück.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
  ```
+ Wenn Amazon Cognito sich über einen Verbund mit einem Drittanbieter authentifiziert IdPs, kann es bei Amazon Cognito zu Verbindungsproblemen kommen, wie z. B. die folgenden:
  + Wenn es bei der Token-Anforderung vom IdP zu einem Verbindungs-Timeout kommt, leitet der Authentifizierungsserver den Fehler wie folgt an den `redirect_uri` des Clients weiter:

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
    ```
  + Wenn beim Aufrufen des `jwks_uri` Endpunkts zur Überprüfung des ID-Tokens ein Verbindungs-Timeout auftritt, leitet der Authentifizierungsserver mit einem Fehler wie folgt an den des Clients weiter: `redirect_uri`

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
    ```
+ Bei der Authentifizierung über einen Verbund mit einem Drittanbieter IdPs geben die Anbieter möglicherweise Fehlerantworten zurück. Dies kann auf Konfigurationsfehler oder andere Gründe zurückzuführen sein, z. B. auf die folgenden:
  + Wenn eine Fehlermeldung von anderen Anbietern empfangen wird, leitet der Authentifizierungsserver den Fehler wie folgt an den `redirect_uri` des Clients weiter:

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
    ```
  + Wenn eine Fehlerantwort von Google empfangen wird, leitet der Authentifizierungsserver den Fehler wie folgt an den `redirect_uri` des Clients weiter: 

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
    ```
+ Wenn Amazon Cognito bei der Verbindung zu einem externen IdP auf eine Kommunikationsausnahme stößt, leitet der Authentifizierungsserver mit einer der folgenden Meldungen `redirect_uri` mit einem Fehler an den des Kunden weiter:
  + 

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
    ```
  + 

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
    ```

# Der Endpunkt des Token-Ausstellers
<a name="token-endpoint"></a>

Der OAuth [2.0-Token-Endpunkt unter `/oauth2/token` gibt JSON-Webtoken](https://www.rfc-editor.org/rfc/rfc6749#section-3.2) (JWTs) an Anwendungen aus, die die Gewährung von Autorisierungscode und Kundenanmeldedaten abschließen möchten. Diese Token sind das Endergebnis der Authentifizierung mit einem Benutzerpool. Sie enthalten Informationen über den Benutzer (ID-Token), die Zugriffsebene des Benutzers (Zugriffstoken) und die Berechtigung des Benutzers, seine angemeldete Sitzung beizubehalten (Aktualisierungstoken). Rely-Party-Bibliotheken von OpenID Connect (OIDC) verarbeiten Anfragen an und Antwortnutzlasten von diesem Endpunkt aus. Tokens bieten einen überprüfbaren Authentifizierungsnachweis, Profilinformationen und einen Mechanismus für den Zugriff auf Backend-Systeme.

Ihr Benutzerpool OAuth 2.0-Autorisierungsserver gibt JSON-Webtoken (JWTs) vom Token-Endpunkt für die folgenden Sitzungstypen aus:

1. Benutzer, die eine Anfrage für die Gewährung eines Autorisierungscodes abgeschlossen haben. Wenn ein Code erfolgreich eingelöst wurde, werden ID-, Zugriffs- und Aktualisierungstoken zurückgegeben.

1. Machine-to-machine (M2M) -Sitzungen, für die eine Erteilung von Kundenanmeldedaten abgeschlossen wurde. Bei erfolgreicher Autorisierung mit dem geheimen Client-Schlüssel wird ein Zugriffstoken zurückgegeben.

1. Benutzer, die sich zuvor angemeldet und Aktualisierungstoken erhalten haben. Bei der Aktualisierungstoken-Authentifizierung werden neue ID- und Zugriffstoken zurückgegeben.
**Anmerkung**  
Benutzer, die sich mit einem Autorisierungscode anmelden, der bei der verwalteten Anmeldung oder über den Verbund gewährt wurde, können ihre Token jederzeit vom Token-Endpunkt aus aktualisieren. Benutzer, die sich mit den API-Vorgängen anmelden `InitiateAuth` und ihre Token mit dem Token-Endpunkt aktualisieren `AdminInitiateAuth` können, [wenn die gespeicherten Geräte](amazon-cognito-user-pools-device-tracking.md) in Ihrem Benutzerpool *nicht* aktiv sind. Wenn die gespeicherten Geräte aktiv sind, aktualisieren Sie die Token mit dem [entsprechenden API- oder SDK-Token-Aktualisierungsvorgang](amazon-cognito-user-pools-using-the-refresh-token.md#using-the-refresh-token-api) für Ihren App-Client.

Der Token-Endpunkt wird öffentlich verfügbar, wenn Sie Ihrem Benutzerpool eine Domain hinzufügen. Er akzeptiert HTTP-POST-Anfragen. Verwenden Sie aus Gründen der Anwendungssicherheit PKCE mit Ihren Autorisierungscode-Anmeldeereignissen. PKCE überprüft, ob der Benutzer, der einen Autorisierungscode übergibt, derselbe Benutzer ist, der sich authentifiziert hat. Weitere Informationen zu PKCE finden Sie unter [IETF](https://datatracker.ietf.org/doc/html/rfc7636) RFC 7636.

Weitere Informationen zu den App-Clients im Benutzerpool und ihren Grant-Typen, Client-Geheimnissen, zulässigen Bereichen und Clients finden Sie unter. IDs [Anwendungsspezifische Einstellungen mit App-Clients](user-pool-settings-client-apps.md) Weitere Informationen zur M2M-Autorisierung, zur Erteilung von Kundenanmeldedaten und zur Autorisierung mit Zugriffstoken finden Sie unter. [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md)

Um Informationen über einen Benutzer aus seinem Zugriffstoken abzurufen, geben Sie diese an Ihre Anfrage [UserInfo-Endpunkt](userinfo-endpoint.md) oder an eine [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)API-Anfrage weiter. Das Zugriffstoken muss die entsprechenden Bereiche für diese Anfragen enthalten,

## Formatieren Sie eine POST-Anforderung für den Token-Endpunkt
<a name="post-token"></a>

Der `/oauth2/token` Endpunkt unterstützt ausschließlich `HTTPS POST`. Dieser Endpunkt ist nicht benutzerinteraktiv. Behandeln Sie Token-Anfragen mit einer [OpenID Connect (OIDC) -Bibliothek in Ihrer Anwendung](https://openid.net/developers/certified-openid-connect-implementations/).

Der Token-Endpunkt unterstützt `client_secret_basic`- und `client_secret_post`-Authentifizierung. [Weitere Informationen zur OIDC-Spezifikation finden Sie unter Client-Authentifizierung.](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) Weitere Informationen zum Token-Endpunkt aus der OpenID-Connect-Spezifikation finden Sie unter [Token-Endpunkt](http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).

### Anfrageparameter im Header
<a name="post-token-request-parameters"></a>

Sie können die folgenden Parameter im Header Ihrer Anfrage an den Token-Endpunkt übergeben.

**`Authorization`**  
Falls dem Client ein Geheim-Schlüssel zugestellt wurde, kann der Client seine `client_id` und sein `client_secret` im Autorisierungs-Header als `client_secret_basic` HTTP-Autorisierung übergeben. Sie können auch die `client_id` und das `client_secret` im Anforderungstext als `client_secret_post`-Autorisierung aufnehmen.  
Die Autorisierungs-Header-Stringl autet [Basic](https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side) `Base64Encode(client_id:client_secret)`. Das folgende Beispiel ist ein Autorisierungsheader für den App-Client `djc98u3jiedmi283eu928` mit dem geheimen Clientschlüssel`abcdef01234567890`, der die Base64-kodierte Version der Zeichenfolge verwendet: `djc98u3jiedmi283eu928:abcdef01234567890`  

```
Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
```

**`Content-Type`**  
Stellen Sie den Wert dieses Parameters auf `'application/x-www-form-urlencoded'` ein.

### Anfrageparameter im Fließtext
<a name="post-token-request-parameters-in-body"></a>

Die folgenden Parameter können Sie im `x-www-form-urlencoded` Format im Anforderungstext für den Token-Endpunkt anfordern.

**`grant_type`**  
*Pflichtfeld*  
Die Art des OIDC-Zuschusses, den Sie beantragen möchten.  
Es muss sich entweder um `authorization_code` oder `refresh_token` oder `client_credentials` handeln. Unter den folgenden Bedingungen können Sie vom Token-Endpunkt aus ein Zugriffstoken für einen benutzerdefinierten Bereich anfordern:  
+ Sie haben den angeforderten Bereich in Ihrer App-Client-Konfiguration aktiviert.
+ Sie haben Ihren App-Client mit einem geheimen Clientschlüssel konfiguriert.
+ Sie aktivieren die Gewährung von Kundenanmeldedaten in Ihrem App-Client.
Der Token-Endpunkt gibt nur dann ein Aktualisierungstoken zurück, wenn dies der `grant_type` Fall ist`authorization_code`.

**`client_id`**  
*Optional. Nicht erforderlich, wenn Sie die App-Client-ID im `Authorization` Header angeben.*  
Die ID eines App-Clients in Ihrem Benutzerpool. Geben Sie denselben App-Client an, der Ihren Benutzer authentifiziert hat.  
Sie müssen diesen Parameter angeben, wenn der Client öffentlich ist und kein Geheimnis hat, oder wenn er `client_secret_post` autorisiert ist. `client_secret`

**`client_secret`**  
*Optional. Nicht erforderlich, wenn Sie das geheime Client-Geheimnis im `Authorization` Header angeben und wenn der App-Client kein Geheimnis hat.*  
Das geheime Geheimnis des App-Clients, falls der App-Client über eines verfügt, für die `client_secret_post` Autorisierung.

**`scope`**  
*Optional*.  
Kann eine Kombination aller Bereiche sein, die Ihrem App-Client zugeordnet sind. Amazon Cognito ignoriert Bereiche in der Anfrage, die für den angeforderten App-Client nicht zulässig sind. Wenn Sie diesen Anforderungsparameter nicht angeben, gibt der Autorisierungsserver einen `scope` Zugriffstoken-Anspruch mit allen Autorisierungsbereichen zurück, die Sie in Ihrer App-Client-Konfiguration aktiviert haben. Sie können alle Bereiche anfordern, die für den angeforderten App-Client zulässig sind: Standardbereiche, benutzerdefinierte Bereiche von Ressourcenservern und der `aws.cognito.signin.user.admin` Self-Service-Bereich für Benutzer.

**`redirect_uri`**  
*Optional. Für die Gewährung von Kundenanmeldedaten nicht erforderlich.*  
Es muss sich um dieselbe `redirect_uri` handeln, die verwendet wurde, um `authorization_code` in `/oauth2/authorize` zu bekommen.  
Falls `grant_type` ja, müssen Sie diesen Parameter angeben. `authorization_code`

**`refresh_token`**  
*Optional. Wird nur verwendet, wenn der Benutzer bereits über ein Aktualisierungstoken verfügt und neue ID- und Zugriffstoken erhalten möchte.*  
Um neue Zugriffs- und ID-Tokens für die Sitzung eines Benutzers `refresh_token` zu generieren, setzen Sie den Wert auf ein gültiges Aktualisierungstoken, das der angeforderte App-Client ausgegeben hat.  
Gibt ein neues Aktualisierungstoken mit neuer ID und Zugriffstoken zurück, wenn die [Aktualisierungstoken-Rotation](amazon-cognito-user-pools-using-the-refresh-token.md#using-the-refresh-token-rotation) aktiv ist. Andernfalls werden nur ID- und Zugriffstoken zurückgegeben. Wenn das ursprüngliche Zugriffstoken [an eine API-Ressource gebunden](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding) war, behält das neue Zugriffstoken die angeforderte API-URL im `aud` Anspruch bei.

**`code`**  
*Optional. Nur bei Erteilung von Autorisierungscodes erforderlich.*  
Der Autorisierungscode aus einer Autorisierungscode-Erteilung. Sie müssen diesen Parameter angeben, wenn Ihre Autorisierungsanfrage ein `grant_type` of enthielt`authorization_code`.

**`aws_client_metadata`**  
*Optional*.  
Informationen, die Sie an die [Lambda-Auslöser für die Vorab-Generierung von Token](user-pool-lambda-pre-token-generation.md) internen [machine-to-machine (M2M)](cognito-user-pools-define-resource-servers.md) -Autorisierungsabläufe weitergeben möchten. Ihre Anwendung kann Kontextinformationen über die Sitzung sammeln und sie in diesem Parameter übergeben. Wenn Sie das URL-kodierte JSON-Format übergeben`aws_client_metadata`, nimmt Amazon Cognito es in das Eingabeereignis für Ihre Trigger-Lambda-Funktion auf. Ihre Pre-Token-Trigger-Event-Version oder globale Lambda-Trigger-Version muss für Version drei oder höher konfiguriert sein. Amazon Cognito akzeptiert zwar Anfragen an diesen Endpunkt in M2M-Datenströmen für Autorisierungscode und Kundenanmeldedaten, Ihr Benutzerpool wird jedoch nur von Anfragen mit Kundenanmeldedaten `aws_client_metadata` an den Trigger vor der Token-Generierung weitergeleitet.

**`code_verifier`**  
Optional. Nur erforderlich, wenn Sie in Ihrer ersten Autorisierungsanfrage `code_challenge` Parameter angegeben `code_challenge_method` haben.  
Der generierte Codeverifizierer, anhand dessen Ihre Anwendung in einer Anfrage zur `code_challenge` Erteilung eines Autorisierungscodes bei [PKCE](using-pkce-in-authorization-code.md) den Wert berechnet hat.

## Austausch eines Autorisierungscodes für Token
<a name="post-token-positive-exchanging-authorization-code-for-tokens"></a>

Mit der folgenden Anfrage werden nach der Authentifizierung mit einem Autorisierungscode erfolgreich ID-, Zugriffs- und Aktualisierungstoken generiert. Die Anfrage übergibt das Client-Geheimnis im `client_secret_basic` Format im Header. `Authorization`

```
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token&
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw

grant_type=authorization_code&
client_id=1example23456789&
code=AUTHORIZATION_CODE&
redirect_uri=com.myclientapp://myclient/redirect
```

Die Antwort gibt dem Benutzer neue ID-, Zugriffs- und Aktualisierungstoken mit zusätzlichen Metadaten aus.

```
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJra1example",
    "id_token": "eyJra2example",
    "refresh_token": "eyJj3example",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

## Kundenanmeldedaten mit Basisautorisierung
<a name="exchanging-client-credentials-for-an-access-token-in-request-body"></a>

Die folgende Anfrage einer M2M-Anwendung fordert die Gewährung von Kundenanmeldedaten an. Da für Client-Anmeldeinformationen ein Client-Geheimnis erforderlich ist, wird die Anfrage mit einem `Authorization` Header autorisiert, der aus der App-Client-ID und dem geheimen Schlüssel abgeleitet wird. Die Anfrage führt zu einem Zugriffstoken mit den beiden angeforderten Bereichen. Die Anfrage enthält auch Client-Metadaten, die IP-Adressinformationen und ein Token enthalten, das an den Benutzer ausgegeben wird, für den die Gewährung erfolgt. Amazon Cognito leitet die Client-Metadaten an den Lambda-Trigger vor der Token-Generierung weiter.

```
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token >
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw

grant_type=client_credentials&
client_id=1example23456789&
scope=resourceServerIdentifier1%2Fscope1%20resourceServerIdentifier2%2Fscope2&
&aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
```

Amazon Cognito leitet das folgende Eingabeereignis an den Lambda-Trigger vor der Token-Generierung weiter.

```
{
    version: '3',
    triggerSource: 'TokenGeneration_ClientCredentials',
    region: 'us-east-1',
    userPoolId: 'us-east-1_EXAMPLE',
    userName: 'ClientCredentials',
    callerContext: {
        awsSdkVersion: 'aws-sdk-unknown-unknown',
        clientId: '1example23456789'
    },
    request: {
        userAttributes: {},
        groupConfiguration: null,
        scopes: [
           'resourceServerIdentifier1/scope1',
           'resourceServerIdentifier2/scope2'
        ],
        clientMetadata: {
            'onBehalfOfToken': 'eyJra789ghiEXAMPLE',
            'ClientIpAddress': '192.0.2.252'
        }
    },
    response: { claimsAndScopeOverrideDetails: null }
}
```

Die Antwort gibt ein Zugriffstoken zurück. Die Erteilung von Kundenanmeldedaten dient der machine-to-machine (M2M-) Autorisierung und gibt nur Zugriffstoken zurück.

```
HTTP/1.1 200 OK
Content-Type: application/json
{
    "access_token": "eyJra1example",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

## Kundenanmeldedaten mit POST-Body-Autorisierung
<a name="post-token-positive-exchanging-client-credentials-for-an-access-token-in-request-body"></a>

Die folgende Anfrage zur Gewährung von Kundenanmeldedaten enthält den `client_secret` Parameter im Hauptteil der Anfrage und keinen Header. `Authorization` Diese Anfrage verwendet die `client_secret_post` Autorisierungssyntax. Die Anfrage führt zu einem Zugriffstoken mit dem angeforderten Bereich. Die Anfrage enthält auch Client-Metadaten, die IP-Adressinformationen und ein Token enthalten, das an den Benutzer ausgegeben wird, für den diese Genehmigung erteilt wurde. Amazon Cognito leitet die Client-Metadaten an den Lambda-Trigger vor der Token-Generierung weiter.

```
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request
User-Agent: USER_AGENT
Accept: /
Accept-Encoding: gzip, deflate, br
Content-Length: 177
Referer: http://auth.example.com/oauth2/token
Host: auth.example.com
Connection: keep-alive

grant_type=client_credentials&
client_id=1example23456789&
scope=my_resource_server_identifier%2Fmy_custom_scope&
client_secret=9example87654321&
aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
```

Amazon Cognito leitet das folgende Eingabeereignis an den Lambda-Trigger vor der Token-Generierung weiter.

```
{
    version: '3',
    triggerSource: 'TokenGeneration_ClientCredentials',
    region: 'us-east-1',
    userPoolId: 'us-east-1_EXAMPLE',
    userName: 'ClientCredentials',
    callerContext: {
        awsSdkVersion: 'aws-sdk-unknown-unknown',
        clientId: '1example23456789'
    },
    request: {
        userAttributes: {},
        groupConfiguration: null,
        scopes: [
           'resourceServerIdentifier1/my_custom_scope'
        ],
        clientMetadata: {
            'onBehalfOfToken': 'eyJra789ghiEXAMPLE',
            'ClientIpAddress': '192.0.2.252'
        }
    },
    response: { claimsAndScopeOverrideDetails: null }
}
```

Die Antwort gibt ein Zugriffstoken zurück. Die Erteilung von Kundenanmeldedaten dient der machine-to-machine (M2M-) Autorisierung und gibt nur Zugriffstoken zurück.

```
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Date: Tue, 05 Dec 2023 16:11:11 GMT
x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b

{
    "access_token": "eyJra12345EXAMPLE",
    "expires_in": 3600,
    "token_type": "Bearer"
}
```

## Erteilung des Autorisierungscodes mit PKCE
<a name="post-token-positive-exchanging-authorization-code-grant-with-pkce-for-tokens"></a>

Die folgende Beispielanforderung vervollständigt eine Autorisierungsanfrage, die `code_challenge` Parameter `code_challenge_method` und Parameter in einer Autorisierungscode-Erteilungsanfrage mit [PKCE](using-pkce-in-authorization-code.md) beinhaltet.

```
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw

grant_type=authorization_code&
client_id=1example23456789&
code=AUTHORIZATION_CODE&
code_verifier=CODE_VERIFIER&
redirect_uri=com.myclientapp://myclient/redirect
```

In der Antwort werden ID-, Zugriffs- und Aktualisierungstoken aus der erfolgreichen PKCE-Überprüfung durch die Anwendung zurückgegeben.

```
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJra1example",
    "id_token": "eyJra2example",
    "refresh_token": "eyJj3example",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

## Token-Aktualisierung ohne Token-Rotation
<a name="post-token-positive-exchanging-a-refresh-token-for-tokens"></a>

Die folgende Beispielanforderung stellt ein Aktualisierungstoken für einen App-Client bereit, bei dem die [Rotation des Aktualisierungstokens](amazon-cognito-user-pools-using-the-refresh-token.md#using-the-refresh-token-rotation) inaktiv ist. Da der App-Client über ein geheimes Client-Geheimnis verfügt, stellt die Anfrage einen `Authorization` Header bereit.

```
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token >
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw

grant_type=refresh_token&
client_id=1example23456789&
refresh_token=eyJj3example
```

Die Antwort gibt neue IDs und Zugriffstoken zurück.

```
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJra1example",
    "id_token": "eyJra2example",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

## Token-Aktualisierung mit Rotation des Aktualisierungstokens
<a name="post-token-positive-refresh-token-rotation"></a>

Die folgende Beispielanforderung stellt ein Aktualisierungstoken für einen App-Client bereit, für den die [Rotation des Aktualisierungstokens](amazon-cognito-user-pools-using-the-refresh-token.md#using-the-refresh-token-rotation) aktiv ist. Da der App-Client über ein geheimes Client-Geheimnis verfügt, stellt die Anfrage einen `Authorization` Header bereit.

```
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token >
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw

grant_type=refresh_token&
client_id=1example23456789&
refresh_token=eyJj3example
```

Die Antwort gibt neue ID-, Zugriffs- und Aktualisierungstoken zurück.

```
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJra1example",
    "id_token": "eyJra2example",
    "refresh_token": "eyJj4example",
    "token_type": "Bearer",
    "expires_in": 3600
}
```

## Beispiele für negative Antworten
<a name="post-token-negative"></a>

Fehlerhafte Anfragen erzeugen Fehler vom Token-Endpunkt aus. Im Folgenden finden Sie eine allgemeine Übersicht über den Antworttext, wenn Token-Anfragen einen Fehler generieren.

```
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type"
}
```

**`invalid_request`**  
Der Anforderung fehlt ein erforderlicher Parameter, sie umfasst einen nicht unterstützten Parameter-Wert (außer `unsupported_grant_type`) oder sie ist aus anderen Gründen ungültig. Beispielsweise, `grant_type` ist `refresh_token` aber `refresh_token` ist nicht enthalten. 

**`invalid_client`**  
Client-Authentifizierung ist fehlgeschlagen. Wenn der Client zum Beispiel `client_id` und `client_secret` im Autorisierungs-Header enthält, aber kein Client mit dieser `client_id` und diesem `client_secret`existiert. 

**`invalid_grant`**  
Das Refresh-Token wurde widerrufen.   
Der Autorisierungs-Code wurde bereits verwendet oder ist nicht vorhanden.   
Der App-Client hat keinen Lesezugriff auf alle [Attribute](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html) im angeforderten Bereich. Zum Beispiel fordert Ihre App den `email`-Bereich an und Ihr App-Client kann das Attribut `email`, aber nicht `email_verified` lesen.

**`unauthorized_client`**  
Dem Client ist es nicht gestattet, einen Code zu gewähren oder Token zu aktualisieren. 

**`unsupported_grant_type`**  
Wird zurückgegeben, wenn `grant_type` ein anderer Wert ist als `authorization_code` oder `refresh_token` oder `client_credentials`. 

# Der Endpunkt der Benutzerattribute
<a name="userinfo-endpoint"></a>

Wo OIDC ID-Token ausgibt, die Benutzerattribute enthalten, implementiert OAuth 2.0 den `/oauth2/userInfo` Endpunkt. Ein authentifizierter Benutzer oder Client erhält ein Zugriffstoken mit einem Anspruch. `scopes` Dieser Anspruch bestimmt die Attribute, die der Autorisierungsserver zurückgeben soll. Wenn eine Anwendung dem `userInfo` Endpunkt ein Zugriffstoken vorlegt, gibt der Autorisierungsserver einen Antworttext zurück, der die Benutzerattribute enthält, die innerhalb der durch die Gültigkeitsbereiche der Zugriffstoken festgelegten Grenzen liegen. Ihre Anwendung kann Informationen über einen Benutzer vom `userInfo` Endpunkt abrufen, sofern sie über ein gültiges Zugriffstoken mit mindestens einem `openid` Geltungsbereichsanspruch verfügt.

Der Endpunkt `userInfo` ist ein OIDC-[UserInfo-Endpunkt](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) (OpenID-Connect). Sie reagiert mit Benutzerattributen, wenn Dienstanbieter Zugriffstoken vorlegen, die Ihr [Token-Endpunkt](token-endpoint.md) ausgegeben hat. Die Bereiche im Zugriffstoken Ihres Benutzers definieren die Benutzerattribute, die der UserInfo-Endpunkt in seiner Antwort zurückgibt. Der `openid`-Gültigkeitsbereich muss einer der Zugriffstokenansprüche sein.

Amazon Cognito gibt Zugriffs-Token als Antwort auf Benutzerpool-API-Anfragen wie [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) aus. Da sie keine Bereiche enthalten, akzeptiert der userInfo-Endpunkt diese Zugriffstoken nicht. Stattdessen müssen Sie Zugriffstoken von Ihrem Token-Endpunkt vorlegen.

Ihr OAuth 2.0-Dritt-Identity-Provider (IdP) hostet auch einen userInfo Endpunkt. Wenn sich Ihr Benutzer bei diesem IdP authentifiziert, tauscht Amazon Cognito im Hintergrund einen Autorisierungscode mit dem IdP-Endpunkt aus. `token` Ihr Benutzerpool übergibt das IdP-Zugriffstoken, um den Abruf von Benutzerinformationen vom IdP-Endpunkt zu autorisieren. `userInfo`

Die Bereiche im Zugriffstoken eines Benutzers werden durch den `scopes` Anforderungsparameter in Authentifizierungsanforderungen oder durch die Bereiche bestimmt, die der [Lambda-Trigger vor der Token-Generierung hinzufügt](user-pool-lambda-pre-token-generation.md). Sie können Zugriffstoken dekodieren und `scope` Ansprüche untersuchen, um herauszufinden, welche Bereiche der Zugriffskontrolle sie enthalten. Im Folgenden sind einige Bereichskombinationen aufgeführt, die sich auf die vom Endpunkt zurückgegebenen Daten auswirken. `userInfo` Der reservierte Amazon Cognito Cognito-Bereich `aws.cognito.signin.user.admin` hat keine Auswirkung auf die von diesem Endpunkt zurückgegebenen Daten.Beispielbereiche im Zugriffstoken und ihre Auswirkung auf die Antwort `userInfo`

**`openid`**  
Gibt eine Antwort mit allen Benutzerattributen zurück, die der App-Client lesen kann.

**`openid profile`**  
Gibt die Benutzerattribute`name`,`family_name`,`given_name`,`middle_name`,`nickname`,`preferred_username`,`profile`,`picture`,`website`,`gender`,`birthdate`, `zoneinfo``locale`, und zurück`updated_at`. Gibt auch [benutzerdefinierte Attribute](user-pool-settings-attributes.md#user-pool-settings-custom-attributes) zurück. In App-Clients, die keinen Lesezugriff auf jedes Attribut haben, entspricht die Antwort auf diesen Bereich allen Attributen innerhalb der Spezifikation, auf die Ihr App-Client Lesezugriff hat.

**`openid email`**  
Gibt grundlegende Profilinformationen und die `email_verified` Attribute `email` und zurück.

**`openid phone`**  
Gibt grundlegende Profilinformationen und die `phone_number_verified` Attribute `phone_number` und zurück.

## GET /oauth2/userInfo
<a name="get-userinfo"></a>

Ihre Anwendung generiert Anfragen an diesen Endpunkt direkt, nicht über einen Browser.

Weitere Informationen finden Sie unter [UserInfo-Endpunkt](http://openid.net/specs/openid-connect-core-1_0.html#UserInfo) in der Spezifikation zu OpenID Connect (OIDC).

**Topics**
+ [GET /oauth2/userInfo](#get-userinfo)
+ [Anfrageparameter im Header](#get-userinfo-request-header-parameters)
+ [Beispiel — Anfrage](#get-userinfo-positive-exchanging-authorization-code-for-userinfo-sample-request)
+ [Beispiel — positive Antwort](#get-userinfo-response-sample)
+ [Beispiel für negative Antworten](#get-userinfo-negative)

## Anfrageparameter im Header
<a name="get-userinfo-request-header-parameters"></a>

**`Authorization: Bearer <access_token>`**  
Übergeben Sie das Zugriffstoken im Autorisierungsheader-Feld.  
Erforderlich

## Beispiel — Anfrage
<a name="get-userinfo-positive-exchanging-authorization-code-for-userinfo-sample-request"></a>

```
GET /oauth2/userInfo HTTP/1.1
Content-Type: application/x-amz-json-1.1
Authorization: Bearer eyJra12345EXAMPLE
User-Agent: [User agent]
Accept: */*
Host: auth.example.com
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
```

## Beispiel — positive Antwort
<a name="get-userinfo-response-sample"></a>

```
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: [Integer]
Date: [Timestamp]
x-amz-cognito-request-id: [UUID]
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Server: Server
Connection: keep-alive
{
    "sub": "[UUID]",
    "email_verified": "true",
    "custom:mycustom1": "CustomValue",
    "phone_number_verified": "true",
    "phone_number": "+12065551212",
    "email": "bob@example.com",
    "username": "bob"
}
```

Eine Liste der OIDC-Ansprüche finden Sie unter [Standardansprüche](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Derzeit gibt Amazon Cognito die Werte für `email_verified` und `phone_number_verified` als Zeichenfolgen zurück.

## Beispiel für negative Antworten
<a name="get-userinfo-negative"></a>

### Beispiel — schlechte Anfrage
<a name="get-userinfo-negative-400"></a>

```
HTTP/1.1 400 Bad Request
WWW-Authenticate: error="invalid_request",
error_description="Bad OAuth2 request at UserInfo Endpoint"
```

**`invalid_request`**  
In der Anfrage fehlt ein erforderlicher Parameter, sie enthält einen nicht unterstützten Parameterwert oder sie ist anderweitig falsch formatiert.

### Beispiel — schlechtes Token
<a name="get-userinfo-negative-401"></a>

```
HTTP/1.1 401 Unauthorized
WWW-Authenticate: error="invalid_token",
error_description="Access token is expired, disabled, or deleted, or the user has globally signed out."
```

**`invalid_token`**  
Das Zugriffstoken ist abgelaufen, gesperrt, falsch formatiert oder ungültig.

# Der Endpunkt für den Token-Widerruf
<a name="revocation-endpoint"></a>

Benutzer, die in ihrer Sitzung über ein Aktualisierungstoken verfügen, haben etwas Ähnliches wie ein Browser-Cookie. Sie können ihre bestehende Sitzung verlängern, solange das Aktualisierungstoken gültig ist. Anstatt einen Benutzer aufzufordern, sich nach Ablauf seiner ID oder seines Zugriffstokens anzumelden, kann Ihre Anwendung das Aktualisierungstoken verwenden, um neue, gültige Token abzurufen. Sie können jedoch extern festlegen, dass die Sitzung eines Benutzers beendet werden soll, oder der Benutzer kann sich dafür entscheiden, seine aktuelle Sitzung zu vergessen. Zu diesem Zeitpunkt können Sie das Aktualisierungstoken widerrufen, sodass der Benutzer seine Sitzung nicht länger fortführen kann.

Der `/oauth2/revoke` Endpunkt widerruft das Zugriffstoken eines Benutzers, das Amazon Cognito ursprünglich mit dem von Ihnen bereitgestellten Aktualisierungstoken ausgestellt hat. Dieser Endpunkt widerruft auch das Aktualisierungstoken selbst und alle nachfolgenden Zugriffs- und Identitätstoken desselben Aktualisierungstoken. Nachdem der Endpunkt die Token gesperrt hat, können Sie die widerrufenen Zugriffstoken nicht mehr verwenden, um auf die Amazon Cognito Cognito-Token zuzugreifen APIs , die authentifiziert werden.

## POST /oauth2/revoke
<a name="post-revoke"></a>

Der `/oauth2/revoke` Endpunkt unterstützt ausschließlich `HTTPS POST`. Der Benutzer-Pool sendet Anforderungen direkt an diesen Endpunkt und nicht über den System-Browser.

### Anfrageparameter im Header
<a name="revocation-request-parameters"></a>

**`Authorization`**  
Wenn Ihr App-Client über einen geheimen Client-Schlüssel verfügt, muss die Anwendung dessen `client_id` und `client_secret` im Autorisierungsheader über die Basic-HTTP-Autorisierung weitergeben. Der Geheim-Schlüssel ist [Basic](https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side) `Base64Encode(client_id:client_secret)`.

**`Content-Type`**  
Es muss sich immer um handeln `'application/x-www-form-urlencoded'`.

#### Anfrageparameter im Fließtext
<a name="revocation-request-parameters-body"></a>

**`token`**  
(Erforderlich) Das Aktualisierungstoken, das der Client widerrufen möchte. Die Anforderung widerruft auch alle Zugriffstoken, die Amazon Cognito mit diesem Aktualisierungstoken ausgegeben hat.  
Erforderlich

**`client_id`**  
(Optional) Die App-Client-ID für das Token, das Sie widerrufen möchten.  
Erforderlich, wenn der Client öffentlich ist und keinen Geheim-Schlüssel hat.

## Beispiel für einen Widerrufsanforderung
<a name="revoke-sample-request"></a>

Diese Sperranforderung widerruft ein Aktualisierungstoken für einen App-Client, der keinen geheimen Clientschlüssel hat. Notieren Sie sich den `client_id` Parameter im Hauptteil der Anfrage.

```
POST /oauth2/revoke HTTP/1.1
Host: mydomain.auth.us-east-1.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
token=2YotnFZFEjr1zCsicMWpAA&
client_id=1example23456789
```

Diese Sperranforderung widerruft ein Aktualisierungstoken für einen App-Client, der *über einen geheimen Clientschlüssel verfügt*. Notieren Sie sich den `Authorization` Header, der eine verschlüsselte Client-ID und einen geheimen Client-Schlüssel enthält, aber nicht `client_id` im Hauptteil der Anfrage.

```
POST /oauth2/revoke HTTP/1.1
Host: mydomain.auth.us-east-1.amazoncognito.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=2YotnFZFEjr1zCsicMWpAA
```

## Antwort auf einen Fehler
<a name="revoke-sample-response"></a>

Eine erfolgreiche Antwort enthält einen leeren Körper. Die Fehlerantwort ist ein JSON-Objekt mit einem `error`-Feld und in manchen Fällen ein `error_description`-Feld.

**Endpunktfehler**
+ Ihnen werden HTTP 400 und der Fehler `invalid_request` angezeigt, wenn das Token in der Anforderung nicht vorhanden ist oder wenn die Funktion für den App-Client deaktiviert ist.
+ Wenn das Token, das Amazon Cognito in der Widerrufsanfrage gesendet hat, kein Aktualisierungstoken ist, erhalten Sie ein HTTP 400 und den Fehler `unsupported_token_type`.
+ Wenn die Client-Anmeldeinformationen nicht gültig sind, wird Ihnen HTTP 401 und der Fehler `invalid_client` angezeigt.
+ Wenn das Token widerrufen wurde oder der Client ein ungültiges Token übermittelt hat, erhalten Sie ein HTTP 200-OK. 

# Der IdP-SAML-Assertion-Endpunkt
<a name="saml2-idpresponse-endpoint"></a>

Der `/saml2/idpresponse` empfängt SAML-Assertionen. Bei der service-provider-initiated (SP-initiierten) Anmeldung interagiert Ihre Anwendung nicht direkt mit diesem Endpunkt — Ihr SAML 2.0-Identitätsanbieter (IdP) leitet Ihren Benutzer mit seiner SAML-Antwort hierher weiter. Für die SP-initiierte Anmeldung konfigurieren Sie Ihren IdP mit dem Pfad zu Ihrer `saml2/idpresponse` als Assertion Consumer Service (ACS) -URL. Weitere Informationen zur Sitzungsinitiierung finden Sie unter. [Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools](cognito-user-pools-SAML-session-initiation.md)

Rufen Sie bei der IDP-initiierten Anmeldung Anfragen an diesen Endpunkt in Ihrer Anwendung auf, nachdem Sie sich bei Ihrem SAML 2.0-Anbieter als Benutzer angemeldet haben. Ihre Benutzer melden sich mit Ihrem IdP in ihrem Browser an, dann sammelt Ihre Anwendung die SAML-Assertion und sendet sie an diesen Endpunkt. Sie müssen SAML-Assertionen im Hauptteil einer Anfrage über HTTPS einreichen. `HTTP POST` Der Hauptteil Ihrer `POST` Anfrage muss aus einem `SAMLResponse` Parameter und einem `Relaystate` Parameter bestehen. Weitere Informationen finden Sie unter [Implementieren Sie die IDP-initiierte SAML-Anmeldung](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-SAML-session-initiation-idp-initiation).

Der `saml2/idpresponse` Endpunkt kann SAML-Assertionen mit einer Länge von bis zu 100.000 Zeichen akzeptieren.

## BEITRAG `/saml2/idpresponse`
<a name="saml2-idpresponse-endpoint-post"></a>

Um den `/saml2/idpresponse` Endpunkt bei einer vom IDP initiierten Anmeldung zu verwenden, generieren Sie eine POST-Anforderung mit Parametern, die Ihrem Benutzerpool Informationen über die Sitzung Ihres Benutzers liefern.
+ Der App-Client, bei dem sie sich anmelden möchten.
+ Die Callback-URL, unter der sie landen möchten.
+ Die OAuth 2.0-Bereiche, die sie im Zugriffstoken Ihres Benutzers anfordern möchten.
+ Der IdP, der die Anmeldeanforderung initiiert hat.

### Vom IDP initiierte Anfragetextparameter
<a name="saml2-idpresponse-endpoint-post-request"></a>

*SAMLResponse*  
Eine Base64-kodierte SAML-Assertion von einem IdP, der einem gültigen App-Client und einer IdP-Konfiguration in Ihrem Benutzerpool zugeordnet ist.

*RelayState*  
Ein `RelayState` Parameter enthält die Anforderungsparameter, die Sie andernfalls an den Endpunkt übergeben würden. `oauth2/authorize` Detaillierte Informationen zu diesen Parametern finden Sie unter [Autorisieren des Endpunkts](authorization-endpoint.md).    
*response\$1type*  
Der OAuth Zuschusstyp 2.0.  
*Client-ID*  
Die App-Client-ID).  
*redirect\$1uri*  
Die URL, an die der Authentifizierungsserver den Browser nach der Autorisierung des Benutzers durch Amazon Cognito weiterleitet.  
*Identitätsanbieter*  
Der Name des Identitätsanbieters, an den Sie Ihren Benutzer weiterleiten möchten.  
*Idp-Identifier*  
Die Kennung des Identitätsanbieters, zu dem Sie Ihren Benutzer weiterleiten möchten.  
*scope*  
Die OAuth 2.0-Bereiche, die Ihr Benutzer vom Autorisierungsserver anfordern soll.

### Beispielanfragen mit positiven Antworten
<a name="saml2-idpresponse-endpoint-post-example"></a>

**Beispiel — POST-Anfrage**  
Die folgende Anfrage bezieht sich auf die Gewährung eines Autorisierungscodes für einen Benutzer von IdP `MySAMLIdP` im App-Client`1example23456789`. Der Benutzer leitet `https://www.example.com` mit seinem Autorisierungscode weiter, der gegen Token eingetauscht werden kann, die ein Zugriffstoken mit den Bereichen OAuth 2.0 enthalten `openid``email`, und. `phone`

```
POST /saml2/idpresponse HTTP/1.1
User-Agent: USER_AGENT
Accept: */*
Host: example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded

SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone
```

**Beispiel — Antwort**  
Das Folgende ist die Antwort auf die vorherige Anfrage.

```
HTTP/1.1 302 Found
Date: Wed, 06 Dec 2023 00:15:29 GMT
Content-Length: 0
x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb
Location: https://www.example.com?code=[Authorization code]
```

# OAuth 2.0 Zuschüsse
<a name="federation-endpoints-oauth-grants"></a>

Der Amazon Cognito Cognito-Benutzerpool OAuth 2.0-Autorisierungsserver gibt Token als Antwort auf drei Arten von OAuth [2.0-Autorisierungsberechtigungen aus.](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3) Sie können die unterstützten Erteilungstypen für jeden App-Client in Ihrem Benutzerpool festlegen. Sie können Erteilungen von *Client-Anmeldeinformationen* im selben App-Client nicht als *implizite* oder *Autorisierungscode*-Erteilungen aktivieren. Anforderungen für implizite und Autorisierungscode-Erteilungen beginnen bei Ihrem [Autorisieren des Endpunkts](authorization-endpoint.md) und Anforderungen für Erteilungen von Client-Anmeldeinformationen bei Ihrem [Token-Endpunkt](token-endpoint.md).

**Erteilung des Autorisierungscodes**  
Als Antwort auf Ihre erfolgreiche Authentifizierungsanforderung fügt der Autorisierungsserver Ihrer Callback-URL einen Autorisierungscode in einem `code`-Parameter an. Sie müssen dann den Code für ID-, Zugriffs- und Aktualisierungstoken durch den [Token-Endpunkt](token-endpoint.md) ersetzen. Wenn Sie die Erteilung eines Autorisierungscodes anfordern möchten, legen Sie `response_type` in Ihrer Anforderung auf `code` fest. Eine Beispielanforderung finden Sie unter [Beispiel: Erteilung eines Autorisierungscodes](authorization-endpoint.md#sample-authorization-code-grant). Amazon Cognito unterstützt [Proof Key for Code Exchange (PKCE)](using-pkce-in-authorization-code.md) bei der Gewährung von Autorisierungscodes.  
Die Erteilung des Autorisierungscodes ist die sicherste Form der Autorisierungserteilung. Dabei werden Ihren Benutzern die Inhalte der Token nicht direkt angezeigt. Stattdessen ist Ihre App dafür zuständig, die Token Ihrer Benutzer abzurufen und sicher zu speichern. In Amazon Cognito ist die Erteilung eines Autorisierungscodes die einzige Möglichkeit, alle drei Tokentypen – ID-, Zugriffs- und Aktualisierungstoken – vom Autorisierungsserver abzurufen. Sie können auch alle drei Tokentypen aus der Authentifizierung über die Amazon Cognito Cognito-Benutzerpools-API abrufen, aber die API gibt keine Zugriffstoken mit anderen Bereichen als aus. `aws.cognito.signin.user.admin`

**Implizite Erteilung**  
Als Antwort auf Ihre erfolgreiche Authentifizierungsanforderung fügt der Autorisierungsserver Ihrer Callback-URL ein Zugriffstoken in einem `access_token`-Parameter und ein ID-Token in einem `id_token`-Parameter an. Eine implizite Erteilung erfordert keine zusätzliche Interaktion mit dem [Token-Endpunkt](token-endpoint.md). Wenn Sie eine implizite Erteilung anfordern möchten, legen Sie `response_type` in Ihrer Anforderung auf `token` fest. Die implizite Erteilung generiert nur eine ID und ein Zugriffstoken. Eine Beispielanforderung finden Sie unter [Beispiel: Token-Erteilung (implizit) ohne Geltungsbereich `openid`](authorization-endpoint.md#sample-token-grant-without-openid-scope).  
Bei der impliziten Erteilung handelt es sich um eine ältere Autorisierungserteilung. Im Gegensatz zur Autorisierungscode-Erteilung können Benutzer Ihre Token abfangen und überprüfen. Wenn Sie die Tokenzustellung durch implizite Erteilung verhindern möchten, konfigurieren Sie Ihren App-Client so, dass er nur die Erteilung von Autorisierungscodes unterstützt.

**Client-Anmeldeinformationen**  
Bei den Kundenanmeldedaten handelt es sich nur um eine Autorisierung für den Zugriff. machine-to-machine Wenn Sie eine Erteilung von Client-Anmeldeinformationen erhalten möchten, umgehen Sie den [Autorisieren des Endpunkts](authorization-endpoint.md) und generieren Sie eine Anforderung direkt an den [Token-Endpunkt](token-endpoint.md). Ihr App-Client muss über ein Client-Geheimnis verfügen und darf nur Erteilungen von Client-Anmeldeinformationen unterstützen. Als Antwort auf Ihre erfolgreiche Anforderung gibt der Autorisierungsserver ein Zugriffstoken zurück.  
Das Zugriffstoken aus der Erteilung von Kundenanmeldedaten ist ein Autorisierungsmechanismus, der 2.0-Bereiche umfasst OAuth . In der Regel enthält das Token benutzerdefinierte Bereichsansprüche, die HTTP-Operationen zugriffsgeschützt autorisieren. APIs Weitere Informationen finden Sie unter [Bereiche, M2M und Ressourcenserver](cognito-user-pools-define-resource-servers.md).  
Bei Zuschüssen mit Kundenanmeldedaten fallen zusätzliche Kosten auf Ihre Rechnung an. AWS Weitere Informationen finden Sie unter [Amazon Cognito – Preise](https://aws.amazon.com/cognito/pricing).

**Aktualisierungstoken**  
Sie können einen Zuschuss für ein Aktualisierungstoken direkt bei der beantragen[Token-Endpunkt](token-endpoint.md). Diese Gewährung gibt neue ID- und Zugriffstoken im Austausch gegen ein gültiges Aktualisierungstoken zurück.

Weitere Informationen zu diesen Zuschüssen und ihrer Implementierung finden Sie unter So verwenden Sie [OAuth 2.0 in Amazon Cognito: Erfahren Sie mehr über die verschiedenen OAuth 2.0-Zuschüsse](https://aws.amazon.com/blogs/security/how-to-use-oauth-2-0-in-amazon-cognito-learn-about-the-different-oauth-2-0-grants/) im *AWS Sicherheitsblog*.

# Verwendung von PKCE in Autorisierungscode-Zuschüssen
<a name="using-pkce-in-authorization-code"></a>

Amazon Cognito unterstützt die Proof Key for Code Exchange (PKCE) -Authentifizierung bei der Gewährung von Autorisierungscodes. PKCE ist eine Erweiterung der OAuth 2.0-Autorisierungscode-Gewährung für öffentliche Kunden. PKCE schützt vor der Rücknahme abgefangener Autorisierungscodes.

## So verwendet Amazon Cognito PKCE
<a name="how-pkce-works"></a>

Um die Authentifizierung mit PKCE zu starten, muss Ihre Anwendung einen eindeutigen Zeichenkettenwert generieren. Diese Zeichenfolge ist der Code Verifier, ein geheimer Wert, den Amazon Cognito verwendet, um den Client, der die ursprüngliche Autorisierung beantragt, mit dem Client zu vergleichen, der den Autorisierungscode gegen Token tauscht. 

Ihre App muss einen SHA256 Hash auf die Codeverifizierer-Zeichenfolge anwenden und das Ergebnis mit Base64 codieren. Übergeben Sie die Hash-Zeichenfolge [Autorisieren des Endpunkts](authorization-endpoint.md) als `code_challenge` Parameter im Anforderungstext an. Wenn Ihre App den Autorisierungscode gegen Token eintauscht, muss sie die Codeverifizierer-Zeichenfolge im Klartext als `code_verifier` Parameter im Anfragetext an die enthalten. [Token-Endpunkt](token-endpoint.md) Amazon Cognito führt den gleichen hash-and-encode Vorgang mit dem Code-Verifier durch. Amazon Cognito gibt ID-, Zugriffs- und Aktualisierungstoken nur zurück, wenn es feststellt, dass der Codeverifier zu derselben Codeabfrage führt, die er in der Autorisierungsanfrage erhalten hat.

**Um Authorization Grant Flow mit PKCE zu implementieren**

1. Öffnen Sie die [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/home). Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool. Wenn Sie einen Benutzerpool erstellen, werden Sie während des Assistenten aufgefordert, einen App-Client einzurichten und die verwaltete Anmeldung zu konfigurieren.

   1. Wenn Sie einen neuen Benutzerpool erstellen, richten Sie während der geführten Einrichtung einen App-Client ein und konfigurieren Sie die verwaltete Anmeldung.

   1. Wenn Sie einen vorhandenen Benutzerpool konfigurieren, fügen Sie eine [Domain](cognito-user-pools-assign-domain.md) und einen [öffentlichen App-Client](user-pool-settings-client-apps.md) hinzu, falls Sie dies noch nicht getan haben.

1. Generieren Sie eine zufällige alphanumerische Zeichenfolge, in der Regel einen Universally Unique Identifier ([UUID](cognito-terms.md#terms-uuid)), um eine Code-Challenge für die PKCE zu erstellen. Diese Zeichenfolge ist der Wert des `code_verifier` Parameters, den Sie in Ihrer Anfrage an die senden. [Token-Endpunkt](token-endpoint.md) 

1. Hasht die `code_verifier` Zeichenfolge mit dem SHA256 Algorithmus. Kodieren Sie das Ergebnis des Hashing-Vorgangs auf Base64. Diese Zeichenfolge ist der Wert des `code_challenge` Parameters, den Sie in Ihrer Anfrage an die senden. [Autorisieren des Endpunkts](authorization-endpoint.md) 

   Das folgende Python Beispiel generiert einen `code_verifier` und berechnet den`code_challenge`:

   ```
   #!/usr/bin/env python3
   
   import secrets
   from base64 import urlsafe_b64encode
   from hashlib import sha256
   from string import ascii_letters
   from string import digits
   
   # use the secrets module for cryptographically strong random values
   alphabet = ascii_letters + digits
   code_verifier = ''.join(secrets.choice(alphabet) for _ in range(128))
   code_verifier_hash = sha256(code_verifier.encode()).digest()
   code_challenge = urlsafe_b64encode(code_verifier_hash).decode().rstrip('=')
   
   print(f"code challenge: {code_challenge}")
   print(f"code verifier: {code_verifier}")
   ```

   Im Folgenden finden Sie ein Beispiel für die Ausgabe des Python Skripts:

   ```
   code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg
   code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
   ```

1. Schließen Sie die verwaltete Anmeldung mit einer Anfrage zur Erteilung eines Autorisierungscodes bei PKCE ab. Im Folgenden finden Sie ein Beispiel für eine URL:

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com&code_challenge=Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg&code_challenge_method=S256
   ```

1. Sammeln Sie die Autorisierung `code` und lösen Sie sie gegen Token mit dem Token-Endpunkt ein. Im Folgenden finden Sie ein Beispiel für eine Anfrage:

   ```
   POST /oauth2/token HTTP/1.1
   Host: mydomain.auth.us-east-1.amazoncognito.com
   Content-Type: application/x-www-form-urlencoded
   Content-Length: 296
   
   redirect_uri=https%3A%2F%2Fwww.example.com&
   client_id=1example23456789&
   code=7378f445-c87f-400c-855e-0297d072ff03&
   grant_type=authorization_code&
   code_verifier=9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
   ```

1. Überprüfen Sie die Antwort. Sie wird ID-, Zugriffs- und Aktualisierungstoken enthalten. Weitere Informationen zur Verwendung von Amazon Cognito Cognito-Benutzerpool-Token finden Sie unter[JSON-Webtoken (JWTs) für den Benutzerpool verstehen](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

# Antworten auf verwaltete Anmelde- und Verbundfehler
<a name="federation-endpoint-idp-responses"></a>

Ein Anmeldevorgang bei der verwalteten Anmeldung oder bei der föderierten Anmeldung kann zu einem Fehler führen. Im Folgenden sind einige Bedingungen aufgeführt, die dazu führen können, dass die Authentifizierung mit einem Fehler endet.
+ Ein Benutzer führt einen Vorgang aus, den Ihr Benutzerpool nicht ausführen kann.
+ Ein Lambda-Trigger reagiert nicht mit der erwarteten Syntax.
+ Ihr Identitätsanbieter (IdP) gibt einen Fehler zurück.
+ Amazon Cognito konnte die von Ihrem Benutzer bereitgestellten Attributinformationen nicht überprüfen.
+ Ihr IdP hat keine Anforderungen gesendet, die den erforderlichen Attributen zugeordnet sind.

Wenn Amazon Cognito auf einen Fehler stößt, teilt es ihn auf eine der folgenden Arten mit.

1. Amazon Cognito sendet eine Weiterleitungs-URL mit dem Fehler in den Anforderungsparametern.

1. Amazon Cognito zeigt einen Fehler bei der verwalteten Anmeldung an.

Fehler, die Amazon Cognito an Anforderungsparameter anfügt, haben das folgende Format.

```
https://<Callback URL>/?error_description=error+description&error=error+name
```

Wenn Sie Ihren Benutzern helfen, Fehlerinformationen zu übermitteln, obwohl sie einen Vorgang nicht ausführen können, fordern Sie sie auf, die URL *und* den Text oder einen Screenshot der Seite zu erfassen.

**Anmerkung**  
Amazon Cognito-Fehlerbeschreibungen sind keine festen Zeichenketten, und Sie sollten keine Logik verwenden, die auf einem festen Muster oder Format basiert.

**Fehlermeldungen von OIDC- und Social-Identity-Anbietern**  
Ihr Identitätsanbieter gibt möglicherweise einen Fehler zurück. Wenn ein OIDC- oder OAuth 2.0-IdP einen standardkonformen Fehler zurückgibt, leitet Amazon Cognito Ihren Benutzer zur Callback-URL weiter und fügt die Fehlerantwort des Anbieters zu den Fehleranforderungsparametern hinzu. Amazon Cognito fügt den Namen des Anbieters und den HTTP-Fehlercode zu den vorhandenen Fehlerzeichenfolgen hinzu.

Die folgende URL ist ein Beispiel für eine Weiterleitung von einem IdP, der einen Fehler an Amazon Cognito zurückgegeben hat.

```
https://www.amazon.com/?error_description=LoginWithAmazon+Error+-+400+invalid_request+The+request+is+missing+a+required+parameter+%3A+client_secret&error=invalid_request
```

Da Amazon Cognito nur das zurückgibt, was es von einem Anbieter erhält, kann es sein, dass Ihr Benutzer nur einen Teil dieser Informationen sieht. 

Wenn Ihr Benutzer bei der ersten Anmeldung über Ihren IdP auf ein Problem stößt, übermittelt der IdP alle Fehlermeldungen direkt an Ihren Benutzer. Amazon Cognito leitet eine Fehlermeldung an Ihren Benutzer weiter, wenn es eine Anfrage an Ihren IdP generiert, um die Sitzung Ihres Benutzers zu validieren. Amazon Cognito leitet IdP-Fehlermeldungen OAuth und OIDC-IdP-Fehlermeldungen von den folgenden Endpunkten weiter.

`/token`  
Amazon Cognito tauscht den IdP-Autorisierungscode gegen ein Zugriffs-Token aus.

`/.well-known/openid-configuration`  
Amazon Cognito ermittelt den Pfad zu Ihren Emittenten-Endpunkten.

`/.well-known/jwks.json`  
Um die JSON-Web-Tokens (JWTs) Ihres Benutzers zu verifizieren, erkennt Amazon Cognito die JSON-Webschlüssel (JWKs), die Ihr IdP zum Signieren von Tokens verwendet.

Da Amazon Cognito keine ausgehenden Sitzungen an SAML-2.0-Anbieter initiiert, die möglicherweise HTTP-Fehler zurückgeben, enthalten die Fehler Ihrer Benutzer während einer Sitzung mit einem SAML-2.0-IdP diese Form von Anbieter-Fehlermeldungen nicht.