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 in Benutzerpools 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 Veranstaltung
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 Parameter ClientMetadata in den API-Aktionen InitiateAuth und AdminInitiateAuth 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 Parameter ClientMetadata in den API-Aktionen AdminRespondToAuthChallenge und ForgotPassword 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. Setzen Sie anschließend finalUserStatus auf RESET_REQUIRED, wenn das Passwort nicht der Richtlinie entspricht.

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 auf EMAIL festlegen, um die Begrüßungsmeldung per E-Mail zu senden, oder auf SMS, um die Begrüßungsnachricht per SMS zu senden. Wenn Ihre Funktion diesen Parameter nicht zurückgibt, sendet Amazon Cognito die Begrüßungsnachricht per SMS.

forceAliasCreation

Wenn Sie diesen Parameter auf TRUE setzen und die im Parameter UserAttributes angegebene Telefonnummer oder E-Mail-Adresse bereits als Alias mit einem anderen Benutzer vorhanden ist, migriert der API-Aufruf den Alias vom vorherigen Benutzer zum 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.

enableSMSMFA

Legen Sie diesen Parameter auf true fest, damit der migrierte Benutzer für die Anmeldung die Multi-Faktor-Authentifizierung (MFA) per SMS-Nachricht abschließen muss. In Ihrem 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]; } else { return null; } }; const lookupUser = (username) => { const user = validUsers[username]; if (user) { return { emailAddress: user.emailAddress }; } else { 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 };