Lambda-Auslöser für die Benutzermigration. - 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.

Lambda-Auslöser für die Benutzermigration.

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.

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.

Lambda-Auslöserquellen für die Benutzermigration

triggerSource Wert Ereignis
UserMigration_Authentication Benutzermigration bei der Anmeldung.
UserMigration_ForgotPassword Benutzermigration während des Ablaufs bei vergessenem Passwort.

Lambda-Auslöserparameter für die Benutzermigration

Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der allgemeinen Parameter, 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

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 AdminInitiateAuthAPIAktionen InitiateAuthund 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 ForgotPasswordAPIAktionen AdminRespondToAuthChallengeund verwenden.

Antwortparameter für die Benutzermigration

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.

Anmerkung

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.

Attribute Anforderung
Alle Attribute, die beim Erstellen Ihres Benutzerpools als erforderlich gekennzeichnet sind Wenn erforderliche Attribute für die Migration fehlen, verwendet Amazon Cognito Standardwerte.
username

Erforderlich, wenn Sie Ihren Benutzerpool mit Alias-Attributen zusätzlich zum Benutzernamen für die Anmeldung konfiguriert haben und der Benutzer einen gültigen Aliaswert als Benutzernamen eingegeben hat. Dieser Aliaswert kann eine E-Mail-Adresse, der bevorzugte Benutzername oder eine Telefonnummer sein.

Wenn die Anforderung und der Benutzerpool die Aliasanforderungen erfüllen, muss die Antwort Ihrer Funktion den erhaltenen username-Parameter einem Alias-Attribut zuweisen. Außerdem muss die Antwort Ihren eigenen Wert dem username-Attribut zuweisen. Wenn Ihr Benutzerpool die Bedingungen nicht erfüllt, die für die Zuordnung des empfangenen username zu einem Alias erforderlich sind, muss der username-Parameter in der Antwort entweder genau mit der Anforderung übereinstimmen oder weggelassen werden.

Anmerkung

username muss innerhalb des Benutzerpools eindeutig sein.

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.

Anmerkung

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 aufRESET_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 so einstellen, EMAIL dass die Willkommensnachricht per E-Mail gesendet wird, oder SMS dass die Willkommensnachricht per gesendet wirdSMS. Wenn Ihre Funktion diesen Parameter nicht zurückgibt, sendet Amazon Cognito die Willkommensnachricht vonSMS.

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 Anruf den Alias vom vorherigen Benutzer auf den 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.

aktivieren SMSMFA

Setzen Sie diesen Parameter true auf, damit Ihr migrierter Benutzer die mehrstufige SMS SMS-Authentifizierung (MFA) abschließen muss, um sich anzumelden. Ihr 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

Die Lambda-Funktion in diesem Beispiel migriert der Benutzer mit einem bestehenden Passwort und unterdrückt die Begrüßungsmeldung von Amazon Cognito.

Node.js
const validUsers = { belladonna: { password: "Test123", emailAddress: "bella@example.com" }, }; // Replace this mock with a call to a real authentication service. const authenticateUser = (username, password) => { if (validUsers[username] && validUsers[username].password === password) { return validUsers[username]; } return null; }; const lookupUser = (username) => { const user = validUsers[username]; if (user) { return { emailAddress: user.emailAddress }; } return null; }; const handler = async (event) => { if (event.triggerSource === "UserMigration_Authentication") { // Authenticate the user with your existing user directory service const 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"; } } else if (event.triggerSource === "UserMigration_ForgotPassword") { // Look up the user in your existing user directory service const 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"; } } return event; }; export { handler };