Verwaltung der gehosteten Benutzeroberfläche und des Autorisierungsservers - 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.

Verwaltung der gehosteten Benutzeroberfläche und des Autorisierungsservers

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 aus und verwaltet sie (JWTs) und stellt Benutzerattributinformationen bereit. 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. Er 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 die gehostete Benutzeroberfläche mit Ihrem eigenen Logo und Ihren eigenen CSS Anpassungen an Ihre Marke anpassen. Weitere Informationen zu den Komponenten der gehosteten Benutzeroberfläche und des Autorisierungsservers finden Sie unter Benutzerpool-Endpunkte und Referenz für gehostete Benutzeroberflächen.

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. Um Ihrer App eine Authentifizierung hinzuzufügen, verwenden Sie die, AWS Amplify CLI um die Auth Kategorie zu Ihrem Projekt 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 vorgefertigte gehostete Benutzeroberfläche anzeigen oder Benutzer über einen OAuth 2.0-Endpunkt verbinden, der zu einem Social-Login-Anbieter wie Facebook, Google, Amazon oder Apple weiterleitet. Nachdem sich ein Benutzer erfolgreich beim sozialen Anbieter authentifiziert hat, AWS Amplify erstellt er bei Bedarf einen neuen Benutzer in Ihrem Benutzerpool und stellt dann das OIDC Token des Benutzers für Ihre App 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 in der Regel von den Geräten Ihrer Benutzer aus und verwendet sowohl unauthentifizierte als auch Token-authentifizierte. APIs Ein vertraulicher Client wird in der Regel über eine App auf einem zentralen Server ausgeführt, dem Sie die vertraulichen Daten und Anmeldeinformationen des Clients anvertrauen, und verwendet API Autorisierungsheader und Anmeldeinformationen, um Anfragen zu signieren. AWS Identity and Access Management 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 URL unter Zulässige Rückrufe einen Rückruf hinzuURL. Bei einem Rückruf URL wird der Benutzer nach einer erfolgreichen Anmeldung weitergeleitet.

  3. Fügen Sie URL unter Zulässige Abmeldungen eine Abmeldung URL hinzu. Bei einer Abmeldung URL wird Ihr Benutzer nach der Abmeldung weitergeleitet.

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

  5. Wählen Sie unter OAuth2.0 Grant-Typen die Option Authorization code grant aus, um einen Autorisierungscode zurückzugeben, der dann gegen Benutzerpool-Token eingetauscht 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, den Ablauf für die Gewährung von Autorisierungscodes zusammen mit dem Proof-Schlüssel für Code Exchange (PKCE) für mobile Apps zu verwenden.

  6. Wählen Sie unter OAuth2.0 Grant-Typen die Option Implizite Gewährung aus, damit Ihnen JSON Benutzerpool-Web-Token (JWT) von Amazon Cognito zurückgegeben werden. 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

  • Der erste Callback 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 Anmeldung 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 Einstellungen anpassen, URL die Ihre App aufruft, wenn sie Ihre Benutzer anmeldet. Weitere Informationen zu den Parameterschlüsseln und -werten für die Anmeldung finden Sie unter Benutzerpool-Endpunkte und Referenz für gehostete Benutzeroberflächen.

Die gehostete UI-Anmeldeseite 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 derselben Registerkarte können Sie unter App-Clients und Analysen den App-Client IDsURLs, seinen Callback, seine zulässigen Bereiche und andere Konfigurationen angeben.

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. Ein BeispielURL, das die gehostete Benutzeroberfläche umgeht, finden Sie unter. SAMLSitzungsinitiierung in Amazon Cognito Cognito-Benutzerpools

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

Sie können die Anmeldewebseite für die gehostete Benutzeroberfläche aufrufen. Dort finden Sie Informationen URL zur impliziten Codegewährung. 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 Weiterleitung angehängt werden. URL

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 und den Autorisierungsserver

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

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

Die gehostete Benutzeroberfläche und Version TLS

Die gehostete Benutzeroberfläche erfordert Verschlüsselung bei der Übertragung. Benutzerpool-Domänen, die von Amazon Cognito bereitgestellt werden, erfordern eine TLS Mindestversion von 1.2. Benutzerdefinierte Domains 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 die Richtlinien CORS

Die von Amazon Cognito gehostete Benutzeroberfläche unterstützt keine benutzerdefinierten Ursprungsrichtlinien für die ursprungsübergreifende Nutzung von Ressourcen (CORS). Eine CORS Richtlinie in der gehosteten Benutzeroberfläche würde Benutzer daran hindern, Authentifizierungsparameter in ihren Anfragen zu ü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.

Gehostete Benutzeroberflächen- und Autorisierungsserver-Cookies

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.

In iOS können Sie alle Cookies blockieren. Diese Einstellung ist nicht mit 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 ein AWS SDK. In diesem Szenario können Sie Ihren eigenen Sitzungsspeicher erstellen, der nicht auf Cookies basiert.