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.
Möglicherweise möchten Sie den Anmeldevorgang in Benutzerpools anpassen, die über Self-Service-Anmeldeoptionen verfügen. Häufig wird der Trigger vor der Anmeldung verwendet, um benutzerdefinierte Analysen und Aufzeichnungen neuer Benutzer durchzuführen, Sicherheits- und Governance-Standards anzuwenden oder Benutzer von einem Drittanbieter-IdP mit einem konsolidierten Benutzerprofil zu verknüpfen. Möglicherweise haben Sie auch vertrauenswürdige Benutzer, die sich keiner Überprüfung und Bestätigung unterziehen müssen.
Kurz bevor Amazon Cognito einen neuen lokalen oder Verbundbenutzer anmeldet, aktiviert es die Lambda-Funktion vor der Registrierung. Im Rahmen des Anmeldevorgangs können Sie diese Funktion verwenden, um das Anmeldeereignis mit benutzerdefinierter Logik zu analysieren und den neuen Benutzer zu ändern oder abzulehnen.
Lambda-Abläufe für die Vorab-Registrierung
Ablauf der Client-Registrierung

Ablauf der Server-Registrierung

Die Anforderung enthält Validierungsdaten vom Client. Diese Daten stammen aus den ValidationData
Werten, die an den Benutzerpool SignUp und den AdminCreateUser API-Methoden übergeben wurden.
Lambda-Auslöserparameter für die Vorab-Registrierung
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.
{ "request": { "userAttributes": { "
string
": "string
", . . . }, "validationData": { "string
": "string
", . . . }, "clientMetadata": { "string
": "string
", . . . } }, "response": { "autoConfirmUser": "boolean
", "autoVerifyPhone": "boolean
", "autoVerifyEmail": "boolean
" } }
Anforderungsparameter für die Vorab-Registrierung
- userAttributes
-
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen. Die Attributnamen sind die Schlüssel.
- validationData
-
Ein oder mehrere Schlüssel/Wert-Paare mit Benutzerattributdaten, die Ihre App in der Anfrage zur Erstellung eines neuen Benutzers an Amazon Cognito übergeben hat. Senden Sie diese Informationen im ValidationData Parameter Ihrer AdminCreateUseroder SignUpAPI-Anfrage an Ihre Lambda-Funktion.
Amazon Cognito legt Ihre ValidationData Daten nicht als Attribute des von Ihnen erstellten Benutzers fest. ValidationData sind temporäre Benutzerinformationen, die Sie für Ihren Lambda-Trigger vor der Registrierung angeben.
- clientMetadata
-
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für die Vorab-Registrierung angeben. Sie können diese Daten an Ihre Lambda-Funktion übergeben, indem Sie den ClientMetadata Parameter in den folgenden API-Aktionen verwenden: AdminCreateUser, AdminRespondToAuthChallengeForgotPassword, und SignUp.
Antwortparameter für die Vorab-Registrierung
In der Antwort können Sie autoConfirmUser
auf true
setzen, wenn der Benutzer automatisch bestätigt werden soll. Sie können die Einstellung autoVerifyEmail
auf true
setzen und somit die E-mail-Adresse des Benutzers automatisch überprüfen. Sie könne die Einstellung autoVerifyPhone
auf true
setzen und somit die Telefonnummer des Benutzers automatisch überprüfen.
Anmerkung
Die Antwortparameter autoVerifyPhone
, autoVerifyEmail
und autoConfirmUser
werden von Amazon Cognito ignoriert, wenn die Lambda-Funktion vor der Registrierung durch die AdminCreateUser
-API ausgelöst wird.
- autoConfirmUser
-
Setzen Sie diesen Parameter auf
true
, wenn der Benutzer automatisch bestätigt werden soll. Setzen Sie ihn andernfalls auffalse
. - autoVerifyEmail
-
Legen Sie diesen Parameter auf
true
fest, um die Verifizierung der E-Mail-Adresse eines Benutzers, der sich gerade anmeldet, zu bestätigen. Legen Sie ihn andernfalls auffalse
fest. FallsautoVerifyEmail
auftrue
gesetzt ist, muss das Attributemail
einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.Wenn das Attribut
email
als Alias ausgewählt ist, wird ein Alias für die E-Mail-Adresse des Benutzers erstellt. Dabei mussautoVerifyEmail
aktiv sein. Wenn bereits ein Alias mit dieser E-Mail-Adresse vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die E-Mail-Adresse des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Weitere Informationen finden Sie unter Anpassen von Anmeldeattributen. - autoVerifyPhone
-
Setzen Sie diesen Parameter auf
true
um die Verifizierung der Telefonnummer eines Benutzers, der sich grade anmeldet, zu bestätigen. Setzen Sie ihn andernfalls auffalse
. FallsautoVerifyPhone
auftrue
gesetzt ist, muss das Attributphone_number
einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.Wenn das Attribut
phone_number
als Alias ausgewählt ist, wird ein Alias für die Telefonnummer des Benutzers erstellt. Dabei mussautoVerifyPhone
aktiv sein. Wenn ein Alias mit dieser Telefonnummer bereits existiert, wird das Alias einem neuen Benutzer zugewiesen. Die Telefonnummer des vorherigen Benutzers wird dabei als nicht-verifiziert gekennzeichnet. Weitere Informationen finden Sie unter Anpassen von Anmeldeattributen.
Beispiele für die Anmeldung
Ihre Benutzer können sich über die verwaltete Anmeldung registrieren. Den SDK-Beispielcode für den SignUpVorgang finden Sie auch unterVerwendung SignUp mit einem AWS SDK oder CLI.
Beispiel für Vorab-Registrierung: Automatische Bestätigung von Benutzern aus einer registrierten Domäne
Dies ist ein Beispiel für einen Lambda-Triggercode. Der Trigger vor der Anmeldung wird unmittelbar vor der Verarbeitung der Registrierungsanfrage durch Amazon Cognito ausgelöst. Sie verwendet ein benutzerdefiniertes Attribut custom:domain, um neue Benutzer von einer bestimmten E-Mail-Domäne automatisch zu bestätigen. Alle neuen Benutzer, die sich nicht in der benutzerdefinierten Domäne befinden, werden dem Benutzerpool hinzugefügt, aber nicht automatisch bestätigt.
export const handler = async (event, context, callback) => {
// Set the user pool autoConfirmUser flag after validating the email domain
event.response.autoConfirmUser = false;
// Split the email address so we can compare domains
var address = event.request.userAttributes.email.split("@");
// This example uses a custom attribute "custom:domain"
if (event.request.userAttributes.hasOwnProperty("custom:domain")) {
if (event.request.userAttributes["custom:domain"] === address[1]) {
event.response.autoConfirmUser = true;
}
}
// Return to Amazon Cognito
callback(null, event);
};
Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:
{
"request": {
"userAttributes": {
"email": "testuser@example.com",
"custom:domain": "example.com"
}
},
"response": {}
}
Beispiel für Voranmeldung: Automatische Bestätigung und Verifizierung aller Benutzer
Dieses Beispiel bestätigt alle Benutzer und setzt die Attribute email
und phone_number
des Benutzers auf verifiziert, wenn das Attribut vorhanden ist. Wenn Aliasse unterstützt werden, werden für phone_number
und email
außerdem Aliasse erstellt, wenn die automatische Bestätigung festgelegt ist.
Anmerkung
Wenn bereits ein Alias mit derselben Telefonnummer vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die phone_number
des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Dies gilt auch für E-Mail-Adressen. Um dies zu verhindern, können Sie die ListUsers Benutzerpools-API verwenden, um zu sehen, ob es einen bestehenden Benutzer gibt, der die Telefonnummer oder E-Mail-Adresse des neuen Benutzers bereits als Alias verwendet.
exports.handler = (event, context, callback) => {
// Confirm the user
event.response.autoConfirmUser = true;
// Set the email as verified if it is in the request
if (event.request.userAttributes.hasOwnProperty("email")) {
event.response.autoVerifyEmail = true;
}
// Set the phone number as verified if it is in the request
if (event.request.userAttributes.hasOwnProperty("phone_number")) {
event.response.autoVerifyPhone = true;
}
// Return to Amazon Cognito
callback(null, event);
};
Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:
{
"request": {
"userAttributes": {
"email": "user@example.com",
"phone_number": "+12065550100"
}
},
"response": {}
}
Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält
In diesem Beispiel wird die Länge des Benutzernamens in einer Anmeldeanforderung überprüft. Das Beispiel gibt einen Fehler zurück, wenn der Benutzer einen Namen mit weniger als fünf Zeichen eingegeben hat.
export const handler = (event, context, callback) => {
// Impose a condition that the minimum length of the username is 5 is imposed on all user pools.
if (event.userName.length < 5) {
var error = new Error("Cannot register users with username less than the minimum length of 5");
// Return error to Amazon Cognito
callback(error, event);
}
// Return to Amazon Cognito
callback(null, event);
};
Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:
{
"userName": "rroe",
"response": {}
}