

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.

# Wählen Sie einen Amazon Cognito Cognito-Authentifizierungsablauf für Unternehmensanwendungen
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications"></a>

*Michael Daehnert und Fabian Jahnke, Amazon Web Services*

## Zusammenfassung
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-summary"></a>

[Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und Mobilanwendungen. Es bietet nützliche Funktionen für die Authentifizierung von föderierten Identitäten. Um es zum Laufen zu bringen, müssen technische Architekten entscheiden, wie sie diese Funktionen verwenden möchten.

Amazon Cognito unterstützt mehrere Abläufe für Authentifizierungsanfragen. Diese Abläufe definieren, wie Ihre Benutzer ihre Identität überprüfen können. Die Entscheidung, welcher Authentifizierungsablauf verwendet werden soll, hängt von den spezifischen Anforderungen Ihrer Anwendung ab und kann komplex werden. Dieses Muster hilft Ihnen bei der Entscheidung, welcher Authentifizierungsablauf für Ihre Unternehmensanwendung am besten geeignet ist. Es wird davon ausgegangen, dass Sie bereits über Grundkenntnisse in Amazon Cognito, OpenID Connect (OIDC) und Federation verfügen, und führt Sie durch Einzelheiten zu den verschiedenen föderierten Authentifizierungsabläufen.

Diese Lösung richtet sich an technische Entscheidungsträger. Sie hilft Ihnen dabei, die verschiedenen Authentifizierungsabläufe zu verstehen und sie Ihren Anwendungsanforderungen zuzuordnen. Technische Leiter sollten die erforderlichen Erkenntnisse sammeln, um die Amazon Cognito Cognito-Integrationen zu starten. Da sich Unternehmensorganisationen hauptsächlich auf den SAML-Verbund konzentrieren, enthält dieses Muster Beschreibungen für [Amazon Cognito Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) mit SAML-Föderation.

## Voraussetzungen und Einschränkungen
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Rollen und Berechtigungen von AWS Identity and Access Management (IAM) mit vollem Zugriff auf Amazon Cognito
+ (Optional) Zugriff auf Ihren Identitätsanbieter (IdP), z. B. Microsoft Entra ID, Active Directory Federation Service (AD FS) oder Okta
+ Ein hohes Maß an Fachwissen für Ihre Anwendung
+ Grundkenntnisse in Amazon Cognito, OpenID Connect (OIDC) und Federation

**Einschränkungen**
+ Dieses Muster konzentriert sich auf Amazon Cognito Cognito-Benutzerpools und Identitätsanbieter. Informationen zu Amazon Cognito Cognito-Identitätspools finden Sie im Abschnitt [Zusätzliche Informationen](#choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-additional).

## Architektur
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-architecture"></a>

Verwenden Sie die folgende Tabelle, um einen Authentifizierungsablauf auszuwählen. Weitere Informationen zu den einzelnen Datenströmen finden Sie in diesem Abschnitt.


| 
| 
| Benötigen Sie eine machine-to-machine Authentifizierung? | Ist Ihre App eine webbasierte Anwendung, bei der das Frontend auf dem Server gerendert wird? | Handelt es sich bei Ihrer App um eine einseitige Anwendung (SPA) oder um eine mobile Frontend-Anwendung? | Benötigt Ihre Anwendung Aktualisierungstoken für die Funktion „Ich möchte angemeldet bleiben“? | Bietet das Frontend einen browserbasierten Umleitungsmechanismus? | Empfohlener Amazon Cognito Cognito-Flow | 
| --- |--- |--- |--- |--- |--- |
| Ja | Nein | Nein | Nein | Nein | Ablauf der Kundenanmeldedaten | 
| Nein | Ja | Nein | Ja | Ja | Ablauf des Autorisierungscodes | 
| Nein | Nein | Ja | Ja | Ja | Ablauf des Autorisierungscodes mit Proof Key for Code Exchange (PKCE) | 
| Nein | Nein | Nein | Nein | Nein | Passwortfluss für Ressourceneigentümer\$1 | 

\$1 Der Passwortfluss für den Ressourcenbesitzer sollte nur verwendet werden, wenn dies unbedingt erforderlich ist. Weitere Informationen finden Sie im Abschnitt „*Passwortfluss für Ressourcenbesitzer*“ in diesem Muster.

**Ablauf der Kundenanmeldedaten**

Der Client Credentials Flow ist der kürzeste der Amazon Cognito Cognito-Flows. Er sollte verwendet werden, wenn Systeme oder Dienste ohne Benutzerinteraktion miteinander kommunizieren. Das anfragende System verwendet die Client-ID und das Client-Geheimnis, um ein Zugriffstoken abzurufen. Da beide Systeme ohne Benutzerinteraktion funktionieren, ist kein zusätzlicher Zustimmungsschritt erforderlich.

![\[Ablauf von Kundenanmeldedaten für Amazon Cognito\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7b5e567c-66a4-4386-a1f6-616ed77a6211/images/1138745d-69fa-4ecc-a9ec-c0b2a68ce7d2.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Anwendung 1 sendet eine Authentifizierungsanfrage mit der Client-ID und dem geheimen Client-Schlüssel an den Amazon Cognito Cognito-Endpunkt und ruft ein Zugriffstoken ab.

1. Anwendung 1 verwendet dieses Zugriffstoken für jeden nachfolgenden Aufruf von Anwendung 2.

1. Anwendung 2 validiert das Zugriffstoken mit Amazon Cognito.

Dieser Ablauf sollte verwendet werden:
+ Für die Kommunikation zwischen Anwendungen ohne Benutzerinteraktion

Dieser Ablauf sollte nicht verwendet werden:
+ Für jede Kommunikation, bei der Benutzerinteraktionen möglich sind

**Ablauf des Autorisierungscodes**

Der Ablauf des Autorisierungscodes dient der klassischen webbasierten Authentifizierung. In diesem Ablauf übernimmt das Backend den gesamten Token-Austausch und die Speicherung. Der browserbasierte Client sieht die tatsächlichen Token nicht. Diese Lösung wird für Anwendungen verwendet, die in Frameworks wie.NET Core, Jakarta Faces oder Jakarta Server Pages (JSP) geschrieben wurden.

Der Autorisierungscodefluss ist ein Fluss, der auf Umleitungen basiert. Der Client muss in der Lage sein, mit dem Webbrowser oder einem ähnlichen Client zu interagieren. Der Client wird zu einem Authentifizierungsserver umgeleitet und authentifiziert sich bei diesem Server. Wenn sich der Client erfolgreich authentifiziert, wird er zurück zum Server umgeleitet.

![\[Ablauf des Autorisierungscodes für Amazon Cognito\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7b5e567c-66a4-4386-a1f6-616ed77a6211/images/1008296c-d5b8-449d-99d4-f0b2b7cf5d80.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Der Client sendet eine Anfrage an den Webserver.

1. Der Webserver leitet den Client mithilfe eines HTTP 302-Statuscodes zu Amazon Cognito weiter. Der Client folgt automatisch dieser Weiterleitung zum konfigurierten IdP-Login.

1. Der IdP sucht nach einer bestehenden Browsersitzung auf der IdP-Seite. Wenn keine vorhanden ist, wird der Benutzer aufgefordert, sich zu authentifizieren, indem er seinen Benutzernamen und sein Passwort eingibt. Der IdP antwortet mit einem SAML-Token auf Amazon Cognito.

1. Amazon Cognito meldet Erfolg mit einem JSON-Webtoken (JWT), insbesondere einem Code-Token. Der Webserver ruft /oauth2/token auf, um das Code-Token gegen ein Zugriffstoken auszutauschen. Der Webserver sendet die Client-ID und das Client-Geheimnis zur Überprüfung an Amazon Cognito.

1. Das Zugriffstoken wird für jeden nachfolgenden Aufruf anderer Anwendungen verwendet.

1. Andere Anwendungen validieren das Zugriffstoken mit Amazon Cognito.

Dieser Ablauf sollte verwendet werden:
+ Wenn der Benutzer in der Lage ist, mit dem Webbrowser oder Client zu interagieren. Der Anwendungscode wird auf dem Server ausgeführt und gerendert, um sicherzustellen, dass dem Browser keine Geheimnisse offengelegt werden.

Dieser Ablauf sollte nicht verwendet werden:
+ Für einseitige Anwendungen (SPAs) oder mobile Apps, da sie auf dem Client gerendert werden und keine Client-Geheimnisse verwenden sollten.

**Ablauf des Autorisierungscodes mit PKCE**

Der Autorisierungscodefluss mit Proof Key for Code Exchange (PKCE) sollte für einseitige Anwendungen und mobile Anwendungen verwendet werden. Er ist der Nachfolger des impliziten Ablaufs und ist sicherer, da er PKCE verwendet. PKCE ist eine Erweiterung des OAuth 2.0-Autorisierungscodes, der öffentlichen Auftraggebern gewährt wird. PKCE schützt vor der Rücknahme abgefangener Autorisierungscodes.

![\[Ablauf des Autorisierungscodes mit PKCE für Amazon Cognito\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7b5e567c-66a4-4386-a1f6-616ed77a6211/images/1609da4f-decd-4d43-afe0-31237238df6d.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Die Anwendung erstellt einen Code-Verifier und eine Code-Challenge. Dies sind klar definierte, eindeutige Werte, die zur future Verwendung an Amazon Cognito gesendet werden.

1. Die Anwendung ruft den /oauth2/authorization-Endpunkt von Amazon Cognito auf. Es leitet den Benutzer automatisch zum konfigurierten IdP-Login weiter.

1. Der IdP sucht nach einer bestehenden Sitzung. Wenn keine vorhanden ist, wird der Benutzer aufgefordert, sich zu authentifizieren, indem er seinen Benutzernamen und sein Passwort eingibt. Der IdP antwortet mit einem SAML-Token auf Amazon Cognito.

1. Nachdem Amazon Cognito den Erfolg mit einem Code-Token zurückgibt, ruft der Webserver /oauth2/token auf, um das Code-Token gegen ein Zugriffstoken auszutauschen.

1. Das Zugriffstoken wird für jeden nachfolgenden Aufruf anderer Anwendungen verwendet.

1. Die anderen Anwendungen validieren das Zugriffstoken mit Amazon Cognito.

Dieser Ablauf sollte verwendet werden:
+ Für SPAs unsere mobilen Anwendungen

Dieser Flow sollte nicht verwendet werden:
+ Wenn das Anwendungs-Backend die Authentifizierung abwickelt

**Ablauf des Kennworts des Ressourcenbesitzers**

Der Passwortfluss für den Ressourcenbesitzer ist für Anwendungen ohne Umleitungsfunktionen vorgesehen. Er wird erstellt, indem Sie ein Anmeldeformular in Ihrer eigenen Anwendung erstellen. Die Anmeldung wird auf Amazon Cognito über einen CLI- oder SDK-Aufruf überprüft, anstatt sich auf Umleitungsflüsse zu verlassen. Ein Verbund ist in diesem Authentifizierungsablauf nicht möglich, da für den Verbund browserbasierte Weiterleitungen erforderlich sind.

![\[Passwortfluss für Ressourcenbesitzer für Amazon Cognito\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7b5e567c-66a4-4386-a1f6-616ed77a6211/images/d74bc596-08a3-40f4-a6a7-07f6610fe6b1.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Der Benutzer gibt seine Anmeldeinformationen in ein von der Anwendung bereitgestelltes Anmeldeformular ein.

1. Die AWS-Befehlszeilenschnittstelle (AWS CLI) [admin-initiated-auth](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cognito-idp/admin-initiate-auth.html)ruft Amazon Cognito auf.
**Anmerkung**  
Alternativ können Sie AWS SDKs anstelle der AWS-CLI verwenden.

1. Amazon Cognito gibt ein Zugriffstoken zurück.

1. Das Zugriffstoken wird für jeden nachfolgenden Aufruf anderer Anwendungen verwendet.

1. Die anderen Anwendungen validieren das Zugriffstoken mit Amazon Cognito.

Dieser Ablauf sollte verwendet werden:
+ Bei der Migration vorhandener Clients, die direkte Authentifizierungslogik verwenden (z. B. Standardzugriffsauthentifizierung oder Digest-Zugriffsauthentifizierung), auf OAuth die Konvertierung der gespeicherten Anmeldeinformationen in ein Zugriffstoken

Dieser Ablauf sollte nicht verwendet werden:
+ Wenn Sie föderierte Identitäten verwenden möchten
+ Wenn Ihre Anwendung Weiterleitungen unterstützt

## Tools
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-tools"></a>

**AWS-Services**
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.

**Andere Tools**
+ Der [JSON-Web-Token-Debugger (JWT)](https://jwt.io/) ist ein webbasiertes JWT-Validierungstool.

## Epen
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-epics"></a>

### Beurteilen Sie Ihre Bewerbung
<a name="assess-your-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Definieren Sie die Authentifizierungsanforderungen. | Beurteilen Sie Ihre Anwendung anhand Ihrer spezifischen Authentifizierungsanforderungen. | App-Entwickler, App-Architekt | 
| Passen Sie die Anforderungen an die Authentifizierungsabläufe an. | Verwenden Sie im Abschnitt [Architektur](#choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-architecture) die Entscheidungstabelle und die Erläuterungen der einzelnen Abläufe, um Ihren Amazon Cognito Cognito-Authentifizierungsablauf auszuwählen. | App-Entwickler, General AWS, App-Architekt | 

### Den Amazon Cognito Cognito-Benutzerpool einrichten
<a name="set-up-the-amazon-cognito-user-pool"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Benutzerpool. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/choose-an-amazon-cognito-authentication-flow-for-enterprise-applications.html) | Allgemeines AWS | 
| (Optional) Konfigurieren Sie einen Identitätsanbieter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/choose-an-amazon-cognito-authentication-flow-for-enterprise-applications.html) | Allgemeiner AWS, Verbundadministrator | 
| Erstellen Sie einen App-Client. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/choose-an-amazon-cognito-authentication-flow-for-enterprise-applications.html) | Allgemeines AWS | 

### Integrieren Sie die Anwendung in Amazon Cognito
<a name="integrate-the-application-with-amazon-cognito"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Details zur Exchange Amazon Cognito Cognito-Integration. | Geben Sie je nach Ihrem Authentifizierungsablauf Amazon Cognito Cognito-Informationen an die Anwendung weiter, z. B. die Benutzerpool-ID und die App-Client-ID. | App-Entwickler, General AWS | 
| Implementieren Sie die Amazon Cognito Cognito-Authentifizierung. | Dies hängt von Ihrem ausgewählten Authentifizierungsablauf, Ihrer Programmiersprache und den von Ihnen verwendeten Frameworks ab. Einige Links für den Einstieg finden Sie im Abschnitt [Verwandte Ressourcen](#choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-resources). | App-Developer | 

## Zugehörige Ressourcen
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-resources"></a>

**AWS-Dokumentation**
+ [Ablauf der Benutzerpool-Authentifizierung](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html)
+ [Überprüfen eines JSON-Web-Tokens](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html)
+ [Greifen Sie über eine ASP.NET Core-App mithilfe von Amazon Cognito Cognito-Identitätspools auf AWS-Services zu](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-aws-services-from-an-asp-net-core-app-using-amazon-cognito-identity-pools.html?did=pg_card&trk=pg_card)
+ Frameworks und: SDKs
  + [Amazon Amplify-Authentifizierung](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js)
  + [Beispiele für Amazon Cognito Identity Provider](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_cognito-identity-provider_code_examples.html) (Dokumentation zum AWS SDK for Java 2.x)
  + [Authentifizierung von Benutzern mit Amazon Cognito](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-apis-intro.html) (AWS SDK for .NET .NET-Dokumentation)

**AWS-Blogbeiträge**
+ [Authorization @Edge mithilfe von Cookies: Schützen Sie Ihre CloudFront Amazon-Inhalte davor, von nicht authentifizierten Benutzern heruntergeladen zu werden](https://aws.amazon.com/blogs/networking-and-content-delivery/authorizationedge-using-cookies-protect-your-amazon-cloudfront-content-from-being-downloaded-by-unauthenticated-users/)
+ [Aufbau eines AD FS-Verbunds für Ihre Web-App mithilfe von Amazon Cognito Cognito-Benutzerpools](https://aws.amazon.com/blogs/mobile/building-adfs-federation-for-your-web-app-using-amazon-cognito-user-pools/)

**Implementierungspartner**
+ [AWS-Partner für Authentifizierungslösungen](https://partners.amazonaws.com/search/partners?keyword=authentication)

## Zusätzliche Informationen
<a name="choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-additional"></a>

**HÄUFIG GESTELLTE FRAGEN**

*Warum ist der implizite Flow veraltet?*

Seit der Veröffentlichung des [OAuth 2.1-Frameworks](https://oauth.net/2.1/) ist der Implicit Flow aus Sicherheitsgründen als veraltet markiert. [Verwenden Sie als Alternative den Authorization Code Flow mit PKCE, der im Abschnitt Architektur beschrieben wird.](#choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-architecture)

*Was ist, wenn Amazon Cognito einige Funktionen, die ich benötige, nicht bietet?*

AWS-Partner bieten verschiedene Integrationen für Authentifizierungs- und Autorisierungslösungen an. Weitere Informationen finden Sie unter [AWS-Partner für Authentifizierungslösungen](https://partners.amazonaws.com/search/partners?keyword=authentication).

*Was ist mit Amazon Cognito Cognito-Identitätspool-Flows?*

Amazon Cognito Cognito-Benutzerpools und föderierte Identitäten dienen der Authentifizierung. Amazon Cognito Cognito-Identitätspools werden für die Autorisierung des Zugriffs auf AWS-Ressourcen verwendet, indem temporäre AWS-Anmeldeinformationen angefordert werden. Der Austausch von ID-Token und Zugriffstoken für Identitätspools wird in diesem Muster nicht behandelt. Weitere Informationen finden Sie unter [Was ist der Unterschied zwischen Amazon Cognito-Benutzerpools und Identitätspools und](https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pools-identity-pools/) [Allgemeine Amazon Cognito-Szenarien](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-scenarios.html).

**Nächste Schritte**

Dieses Muster bietet einen Überblick über die Amazon Cognito Cognito-Authentifizierungsabläufe. Als nächster Schritt muss die detaillierte Implementierung für die Programmiersprache der Anwendung ausgewählt werden. Angebot SDKs und Frameworks in mehreren Sprachen, die Sie mit Amazon Cognito verwenden können. Hilfreiche Referenzen finden Sie im Abschnitt [Verwandte Ressourcen](#choose-an-amazon-cognito-authentication-flow-for-enterprise-applications-resources).