Einrichtung und Verwendung der gehosteten Benutzeroberfläche und der Verbundendpunkte in Amazon Cognito - Amazon Cognito

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.

Einrichtung und Verwendung der gehosteten Benutzeroberfläche und der Verbundendpunkte in Amazon Cognito

Ein Amazon Cognito Cognito-Benutzerpool mit einer Domain ist ein OAuth-2.0-kompatibler Autorisierungsserver und eine ready-to-use gehostete Benutzeroberfläche (UI) für die Authentifizierung. Der Autorisierungsserver leitet Authentifizierungsanfragen weiter, gibt JSON-Web-Token (JWTs) aus und verwaltet sie und stellt Informationen zu Benutzerattributen zur Verfügung. Bei der gehosteten Benutzeroberfläche handelt es sich um eine Sammlung von Webschnittstellen für grundlegende Aktivitäten zur Registrierung, Anmeldung, Multi-Faktor-Authentifizierung und zum Zurücksetzen von Passwörtern in Ihrem Benutzerpool. Es ist auch ein zentraler Knotenpunkt für die Authentifizierung bei den externen Identitätsanbietern (IdPs), die Sie mit Ihrer App verknüpfen. Ihre App kann die gehostete Benutzeroberfläche und die Autorisierungsendpunkte aufrufen, wenn Sie Benutzer authentifizieren und autorisieren möchten. Sie können das Benutzererlebnis der gehosteten Benutzeroberfläche mit Ihrem eigenen Logo und Ihrer CSS-Anpassung an Ihre Marke anpassen. Weitere Informationen zu den Komponenten der gehosteten Benutzeroberfläche und des Autorisierungsservers finden Sie unter Referenz für Benutzerpool-Verbund-Endpunkte und gehostete UI.

Anmerkung

Die gehostete Benutzeroberfläche von Amazon Cognito unterstützt keine benutzerdefinierte Authentifizierung mit benutzerdefinierten Authentifizierungs-Challenge-Lambda-Triggern.

Einrichtung der gehosteten Benutzeroberfläche mit AWS Amplify

Wenn Sie AWS Amplify Ihrer Web- oder mobilen App Authentifizierung hinzufügen, können Sie Ihre gehostete Benutzeroberfläche mithilfe der Befehlszeilenschnittstelle (CLI) und der Bibliotheken im AWS Amplify Framework einrichten. Wenn Sie eine Authentifizierung zu Ihrer Anwendung hinzufügen möchten, verwenden Sie die AWS Amplify -CLI, um dem Projekt die Auth-Kategorie hinzuzufügen. Anschließend verwenden Sie in Ihrem Client-Code die AWS Amplify Bibliotheken, um Benutzer mit Ihrem Amazon Cognito Cognito-Benutzerpool zu authentifizieren.

Sie können eine vordefinierte gehostete Benutzeroberfläche anzeigen oder Benutzer über einen OAuth 2.0-Endpunkt verbinden, der eine Umleitung zu einem Anbieter für Social Sign-in durchführt, z. B. Facebook, Google, Amazon oder Apple. Nachdem sich ein Benutzer erfolgreich bei diesem Anbieter authentifiziert hat, erstellt AWS Amplify gegebenenfalls einen neuen Benutzer in Ihrem Benutzerpool und stellt das OIDC-Token des Benutzers in Ihrer Anwendung bereit.

Die folgenden Beispiele zeigen, wie Sie AWS Amplify die gehostete Benutzeroberfläche mit sozialen Anbietern in Ihrer App einrichten können.

Einrichten der gehosteten Benutzeroberfläche mit der Amazon-Cognito-Konsole

Erstellen eines App-Clients
  1. Melden Sie sich bei der Amazon-Cognito-Konsole an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

  2. Wählen Sie User Pools (Benutzerpools) aus.

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

  4. Wählen Sie die Registerkarte App integration (Anwendungsintegration) aus.

  5. Wählen Sie unter App clients (App-Clients) Create an app client (App-Client erstellen) aus.

  6. Wählen Sie einen App type (Anwendungstyp): Public client (Öffentlicher Client), Confidential client (Vertraulicher Client) oder Other (Sonstige) aus. Ein öffentlicher Client arbeitet normalerweise von den Geräten Ihrer Benutzer aus und verwendet nicht authentifizierte und mit Token authentifizierte APIs. Ein vertraulicher Client wird in der Regel über eine App auf einem zentralen Server ausgeführt, dem Sie Client-Geheimnisse und API-Anmeldeinformationen anvertrauen, und verwendet Autorisierungsheader und AWS Identity and Access Management Anmeldeinformationen, um Anfragen zu signieren. Wenn sich Ihr Anwendungsfall von den vorkonfigurierten App-Client-Einstellungen für einen öffentlichen Client oder einen vertraulichen Client unterscheidet, wählen Sie Other (Sonstige) aus.

  7. Geben Sie einen App-Client-Namen ein.

  8. Wählen Sie die Authentifizierungsabläufe aus, die Sie in Ihrem App-Client zulassen möchten.

  9. Konfigurieren Sie die Authentication flow session duration (Dauer der Authentifizierungsablaufsitzung). Dies ist die Zeitdauer, die Ihren Benutzern für den Abschluss einer Authentifizierungsabfrage zur Verfügung steht, bevor das Sitzungstoken abläuft.

  10. (Optional) Konfigurieren Sie den Token-Ablauf.

    1. Geben Sie den Ablauf für Aktualisierungs-Token für den App-Client an. Der Standardwert lautet 30 Tage. Sie können dies in jeden Wert zwischen 1 Stunde und 10 Jahren ändern.

    2. Geben Sie den Ablauf für Zugriffs-Token für den App-Client an. Der Standardwert lautet 1 Stunde. Sie können ihn in jeden Wert zwischen 5 Minuten und 24 Stunden ändern.

    3. Geben Sie den Ablauf für ID-Token für den App-Client an. Der Standardwert lautet 1 Stunde. Sie können ihn in jeden Wert zwischen 5 Minuten und 24 Stunden ändern.

      Wichtig

      Wenn Sie die gehostete Benutzeroberfläche verwenden und Token für weniger als eine Stunde einrichten, kann der Benutzer Token basierend auf seinem Sitzungscookie abrufen, das derzeit auf eine Stunde festgelegt ist.

  11. Wählen Sie Generate client secret (Kundengeheimnis generieren) aus, damit Amazon Cognito ein Kundengeheimnis für Sie erstellt. Clientgeheimnisse werden normalerweise mit vertraulichen Clients verknüpft.

  12. Wählen Sie aus, ob Sie für diesen App-Client die Token-Sperre aktivieren möchten. Dies erhöht den Umfang der Token. Weitere Informationen finden Sie unter Revoking Tokens (Widerrufen von Token).

  13. Wählen Sie aus, ob Sie für diesen App-Client Prevent error messages that reveal user existence (Fehlermeldungen vermeiden, die die Benutzerexistenz enthüllen) aktivieren möchten. Amazon Cognito antwortet auf Anmeldeanfragen für nicht vorhandene Benutzer mit einer generischen Nachricht, die angibt, dass entweder der Benutzername oder das Passwort falsch waren.

  14. (Optional) Konfigurieren Sie Attribute read and write permissions (Attribut-Lese- und Schreibberechtigungen) für diesen App-Client. Ihr App-Client kann die Berechtigung haben, eine begrenzte Teilmenge des Attributschemas Ihres Benutzerpools zu lesen und zu schreiben.

  15. Wählen Sie Create (Erstellen) aus.

  16. Notieren Sie sich die Client-ID. Dies identifiziert den App-Client in Registrierungs- und Anmeldungsanfragen.

Konfigurieren Sie die App.
  1. Wählen Sie auf der Registerkarte App integration (Anwendungsintegration) unter App clients (App-Client) Ihren App-Client aus. Überprüfen Sie die aktuellen Informationen zu gehosteten Benutzeroberflächen.

  2. Fügen Sie eine Rückruf-URL hinzu unter Allowed callback URL(s) (Zugelassene Rückruf-URLs). Eine Rückruf-URL gibt an, wohin der Benutzer nach erfolgreicher Anmeldung umgeleitet wird.

  3. Fügen Sie eine Abmelde-URL hinzu unter Allowed sigh-out URL(s) (Zulässige Abmelde-URL(s)). Eine Abmelde-URL gibt an, wohin Ihr Benutzer nach der Abmeldung umgeleitet wird.

  4. Fügen Sie mindestens eine Option von der Liste Identity providers (Identitätsanbieter) hinzu.

  5. Wählen Sie unter OAuth 2.0 grant types (OAuth 2.0 Gewährungstypen) Authorization code grant (Autorisierungscodegewährung) aus, um einen Autorisierungscode auszugeben, der dann gegen die Benutzerpool-Tokens ausgetauscht wird. Da diese Tokens niemals einem Endbenutzer direkt gezeigt werden, sind sie weniger anfällig gegen Angriffe. Allerdings ist am Backend eine benutzerdefinierte Anwendung erforderlich, um den Autorisierungscode gegen Benutzerpool-Tokens austauschen zu können. Aus Sicherheitsgründen empfehlen wir Ihnen, den Ablauf für die Autorisierungscodegewährung in Verbindung mit Proof Key for Code Exchange (PKCE) für mobile Apps zu verwenden.

  6. Wählen Sie unter OAuth 2.0 grant types (OAuth 2.0 Gewährungstypen) Implicit grant (Implizite Gewährung), damit Sie von Amazon Cognito Benutzerpool-JSON-Web-Tokens (JWT) erhalten. Sie können diesen Ablauf verwenden, wenn kein Backend für den Austausch eines Autorisierungscodes gegen Tokens vorhanden ist. Er ist auch für das Debugging von Tokens nützlich.

  7. Sie können sowohl den Autorisierungscode als auch die Implizite Codegewährung aktivieren und dann beide Gewährungen nach Bedarf verwenden. Wenn weder Autorisierungscode noch Implizite Zugriffscodegewährungen ausgewählt werden, und Ihr App-Client einen Clientschlüssel hat, können Sie Client credentials grants (Client-Anmeldeinformationsgewährungen) aktivieren. Wählen Sie Client credentials (Client-Anmeldeinformationen) nur dann, wenn Ihre App Zugriffstoken für sich und nicht für einen Benutzer anfordern muss.

  8. Wählen Sie die OpenID-Connect-Bereiche aus, die Sie für diesen App-Client autorisieren möchten.

  9. Wählen Sie Save Changes.

Eine Domäne konfigurieren.
  1. Navigieren Sie zur Registerkarte App integration (Anwendungsintegration) für Ihren Benutzerpool.

  2. Gehen Sie dann zu Domain (Domäne) und wählen Sie Actions (Aktionen), Create custom domain (Benutzerdefinierte Domäne erstellen) oder Create Cognito domain (Cognito-Domäne erstellen) aus. Wenn Sie bereits eine Benutzerpool-Domäne konfiguriert haben, wählen Sie Delete Cognito domain (Cognito-Domäne löschen) oder Delete custom domain (Benutzerdefinierte Domäne löschen) aus, bevor Sie eine neue benutzerdefinierte Domäne erstellen.

  3. Geben Sie ein verfügbares Domänenpräfix zur Verwendung mit einer Cognito-Domäne ein. Weitere Informationen zum Einrichten einer benutzerdefinierten Domäne finden Sie unter Verwenden der eigenen Domäne für die gehostete Benutzeroberfläche.

  4. Wählen Sie Create (Erstellen) aus.

Anzeigen Ihrer Anmeldeseite

Wählen Sie in der Amazon-Cognito-Konsole die Schaltfläche View Hosted UI (Gehostete Benutzeroberfläche anzeigen) in der Konfiguration Ihres App-Clients unter App clients and analytics (App-Clients und Analytik) auf der Registerkarte App integration (App-Integration) aus. Über diese Schaltfläche gelangen Sie auf eine Anmeldeseite in Ihrer gehosteten Benutzeroberfläche 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 View hostet UI (Gehostete Benutzeroberfläche anzeigen) ist nützlich, wenn Sie die grundlegenden Funktionen Ihrer gehosteten Benutzeroberfläche testen möchten. 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 View hosted UI (Gehostete Benutzeroberfläche 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 Referenz für Benutzerpool-Verbund-Endpunkte und gehostete UI.

Die gehostete UI-Anmeldewebseite 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 callback url>

Sie können Ihre Benutzerpool-Domain-Zeichenfolge über die Registerkarte App-Integration abrufen. Auf dieser Registerkarte finden Sie ebenfalls die App-Client-IDs, ihre Callback-URLs, ihre zulässigen Bereiche und andere Konfigurationen unter App-Clients und -Analysen.

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. Eine Beispiel-URL, die die gehostete Benutzeroberfläche umgeht, finden Sie unter Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools.

Beispielanforderung der gehosteten Benutzeroberfläche für eine implizite Erteilung

Sie können die Anmeldeseite der gehosteten Benutzeroberfläche mit der folgenden URL für die implizite Codeerteilung anzeigen, für die Folgendes gilt: response_type=token. Nach einer erfolgreichen Anmeldung gibt Amazon Cognito Benutzerpool-Token in die Adresszeile Ihres Webbrowsers aus.

https://mydomain.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://mydomain.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer

Wissenswertes über die gehostete Benutzeroberfläche von Amazon-Cognito-Benutzerpools

Die gehostete Benutzeroberfläche und die Bestätigung von Benutzern als Administrator

Für lokale Benutzer im Benutzerpool funktioniert die gehostete Benutzeroberfläche am besten, wenn Sie für den Benutzerpool die Einstellung Cognito erlauben, automatisch Nachrichten zur Überprüfung und Bestätigung zu senden aktivieren. 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, zeigt die gehostete Benutzeroberfläche nach der Registrierung eine Fehlermeldung an. 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.

Die Änderungen an der Konfiguration der gehosteten Benutzeroberfläche anzeigen

Wenn Änderungen an Ihren gehosteten UI-Seiten nicht sofort angezeigt werden, warten Sie ein paar Minuten und aktualisieren Sie dann die Seite.

Benutzerpool-Tokens decodieren

Benutzerpool-Tokens von Amazon Cognito werden unter Verwendung eines RS256-Algorithmus signiert. Sie können Benutzerpool-Token dekodieren und verifizieren mit AWS Lambda, siehe Amazon Cognito JWT-Token dekodieren und verifizieren auf. GitHub

Die gehostete UI- und TLS-Version

Die gehostete Benutzeroberfläche erfordert Verschlüsselung bei der Übertragung. Benutzerpool-Domänen, die von Amazon Cognito bereitgestellt werden, erfordern mindestens eine TLS-Version von 1.2. Benutzerdefinierte Domänen werden unterstützt, erfordern jedoch keine TLS-Version 1.2. Da Amazon Cognito die Konfiguration der gehosteten UI- und Autorisierungsserver-Endpunkte verwaltet, können Sie die TLS-Anforderungen Ihrer Benutzerpool-Domain nicht ändern.

Die gehostete Benutzeroberfläche und CORS-Richtlinien

Die gehostete Benutzeroberfläche von Amazon Cognito unterstützt keine Cross-Origin Resource Sharing (CORS)-Ursprungsrichtlinien. Eine CORS-Richtlinie in der gehosteten Benutzeroberfläche würde verhindern, dass Benutzer Authentifizierungsparameter in ihren Anfragen übergeben. Implementieren Sie stattdessen eine CORS-Richtlinie im Web-Frontend Ihrer App. Amazon Cognito gibt einen Access-Control-Allow-Origin: *-Antwort-Header auf Anfragen an die folgenden OAuth-Endpunkte zurück.

Cookies für gehostete Benutzeroberflächen und Autorisierungsserver

Die Endpunkte des Amazon Cognito Cognito-Benutzerpools 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 cognito Sitzungscookie, das erfolgreiche Anmeldeversuche eine Stunde lang speichert.