Registrieren und Bestätigen von Benutzerkonten - 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.

Registrieren und Bestätigen von Benutzerkonten

Benutzerkonten können auf eine der folgenden Weisen einem Benutzerpool hinzugefügt werden:

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.

Überblick über die Benutzerkonto-Bestätigung

Das folgende Diagramm illustriert den Bestätigungsprozess:

Wenn Benutzer ihren Bestätigungscode eingeben, verifizieren sie automatisch ihre E-Mail-Adresse oder Telefonnummer.

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.

Überprüfen von Kontaktinformationen bei der Anmeldung

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.

  2. 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 ResendConfirmationCodeAPI-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 einem der AWS SDKs verwenden.

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.

Benutzerpool für eine obligatorische Verifizierung der E-Mail-Adresse oder Telefonnummer konfigurieren

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 Management Console , 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.

So konfigurieren Sie den Benutzerpool
  1. Navigieren Sie zur Amazon-Cognito-Konsole. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

  2. 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.

  3. Wählen Sie die Registerkarte Sign-up experience (Anmeldeerlebnis) aus und suchen Sie nach Attribute verification and user account confirmation (Attributverifikation und Benutzerkontobestätigung). Wählen Sie Bearbeiten aus.

  4. 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.

  5. 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.

  6. Wählen Sie Save Changes (Änderungen speichern).

Authentifizierungsablauf mit Verifizierung per E-Mail oder Telefon

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, Telefonnummer und/oder E-Mail-Adresse und möglicherweise auch andere Attribute eingibt.

  2. 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

  3. 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.

  4. 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.

  5. Der Benutzer gibt den Bestätigungscode in die App ein.

  6. Die App ruft ConfirmSignUp 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.

  7. 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

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.

  2. Fordern Sie im Anmeldungsfluss für die App, dass die Benutzer eine E-Mail-Adresse und eine Telefonnummer angeben müssen. Rufen Sie die SignUp-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.

  3. 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 ConfirmSignUp-API-Aktion. An diesem Punkt ist der Status des Benutzers CONFIRMED. Die Telefonnummer des Benutzers wurde verifiziert, jedoch nicht die E-Mail-Adresse.

  4. Zeigen Sie die Anmeldeseite an und authentifizieren Sie den Benutzer durch Aufrufen der InitiateAuth-API-Aktion. Nachdem der Benutzer authentifiziert wurde, gibt Amazon Cognito ein Zugriffstoken an die App zurück.

  5. Rufen Sie die GetUserAttributeVerificationCode-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.

  6. Zeigen Sie eine Bestätigungsseite an, auf der der Benutzer den Verifizierungscode eingibt. Wenn der Benutzer den Code übermittelt, rufen Sie die VerifyUserAttribute-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

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 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 AdminSetUserPasswordAPI-Anfrage mit der Einstellung auf. Permanent True

  1. Ein Benutzer registriert sich in Ihrer App, indem er einen Benutzernamen, Telefonnummer und/oder E-Mail-Adresse und möglicherweise auch andere Attribute eingibt.

  2. 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.

  3. Bestätigen Sie das Konto des Benutzers. Sie müssen sich bei der API-Anfrage anmelden AWS Management Console oder Ihre API-Anfrage mit AWS Anmeldeinformationen unterschreiben, um das Konto zu bestätigen.

    1. Um einen Benutzer in der Amazon-Cognito-Konsole zu bestätigen, navigieren Sie zur Registerkarte 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.

    2. Um einen Benutzer in der AWS API oder CLI zu bestätigen, erstellen Sie eine AdminConfirmSignUpAPI-Anfrage oder admin-confirm-sign-upin der AWS CLI.

  4. An diesem Punkt ist das Benutzerkonto in einem bestätigten Status, und der Benutzer kann sich anmelden.

Berechnen von Werten für geheime Hashes

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-Benutzerpool-APIs akzeptieren einen client-secret-Hash-Wert in einem Parameter SecretHash.

Darüber hinaus akzeptieren die folgenden APIs einen client-secret-Hash-Wert in einem Parameter SECRET_HASH, entweder in Authentifizierungsparametern oder in einer Antwort auf eine Aufforderung.

API-Operation Übergeordneter Parameter für SECRET_HASH
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 bedeutet + eine Verkettung, HMAC_SHA256 stellt eine Funktion dar, die einen HMAC-Wert mit HmacSHA256 produziert, und Base64 stellt eine Funktion dar, die eine Base-64-codierte Version der Hash-Ausgabe produziert.

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<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

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

Wenn ein Benutzer seine E-Mail-Adresse oder Telefonnummer in Ihrer App aktualisiert, sendet Amazon Cognito sofort eine Nachricht mit einem Bestätigungscode an einen Benutzer, wenn Sie Ihren Benutzerpool so konfiguriert haben, dass dieses Attribut automatisch verifiziert wird. Der Benutzer muss dann den Code aus der Bestätigungsnachricht an Ihre App weitergeben. Ihre App sendet dann den Code in einer VerifyUserAttributeAPI-Anfrage, um die Überprüfung des neuen Attributwerts abzuschließen.

Wenn Ihr Benutzerpool nicht verlangt, dass Benutzer eine aktualisierte E-Mail-Adresse oder Telefonnummer bestätigen, ändert Amazon Cognito sofort den Wert eines aktualisierten Attributs email oder phone_number und markiert das Attribut als nicht verifiziert. Mit einer nicht verifizierten E-Mail oder Telefonnummer kann sich Ihr Benutzer nicht anmelden. Sie müssen die Verifizierung des aktualisierten Wertes abschließen, bevor sie dieses Attribut als Anmeldealias verwenden können.

Wenn Ihr Benutzerpool erfordert, dass Benutzer eine aktualisierte E-Mail-Adresse oder Telefonnummer verifizieren, lässt Amazon Cognito das Attribut verifiziert und auf seinen ursprünglichen Wert festgelegt, bis Ihr Benutzer den neuen Attributwert bestätigt. Wenn das Attribut ein Alias für die Anmeldung ist, kann sich Ihr Benutzer mit dem ursprünglichen Attributwert anmelden, bis die Verifizierung das Attribut in den neuen Wert ändert. Weitere Informationen darüber, wie Sie Ihren Benutzerpool so konfigurieren, dass Benutzer aktualisierte Attribute verifizieren, finden Sie unter Konfigurieren der Verifizierung per E-Mail und Telefon.

Sie können einen kundenspezifischen Message-Lambda-Auslöser verwenden, um die Bestätigungsnachricht anzupassen. Weitere Informationen finden Sie unter Lambda-Auslöser für benutzerdefinierte Nachrichten. Wenn die E-Mail-Adresse oder Telefonnummer des Benutzers nicht verifiziert ist, sollte Ihre App den Benutzer darüber informieren, dass er das Attribut verifizieren muss, und eine Schaltfläche oder einen Link bereitstellen, damit Benutzer ihre neue E-Mail-Adresse oder Telefonnummer verifizieren können.

Bestätigungs- und Verifizierungsprozesse für Benutzerkonten, die durch Administratoren und Entwickler erstellt wurden

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 in Erstellen von Benutzerkonten als Administrator und dem Custom Message-Auslöser in Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern.

Bestätigungs- und Verifizierungsprozesse für importierte Benutzerkonten

Benutzerkonten, die mithilfe der Benutzerimportfunktion in der CLI oder der AWS Management Console API (sieheImportieren von Benutzern aus einer CSV-Datei in Benutzerpools) 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.

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

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+user1@simulator.amazonses.com oder success+user2@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.