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.
Verwalten von Reaktionen auf Fehler bei vorhandenen Benutzern
Amazon Cognito unterstützt die Anpassung von Fehlerantworten, die von Benutzerpools zurückgegeben werden. Benutzerdefinierte Fehlerantworten sind für die Erstellung und Authentifizierung von Benutzern, die Passwortwiederherstellung und Bestätigung verfügbar.
Verwenden Sie die PreventUserExistenceErrors
-Einstellung eines Benutzerpool-App-Clients, um Fehler im Zusammenhang mit der Benutzerexistenz zu aktivieren oder zu deaktivieren. Wenn Sie einen neuen App-Client mit den Amazon Cognito Cognito-Benutzerpools erstellen APILEGACY
, PreventUserExistenceErrors
ist oder ist standardmäßig deaktiviert. In der Amazon Cognito Cognito-Konsole PreventUserExistenceErrors
ist die Option Benutzerexistenzfehler verhindern — eine Einstellung von ENABLED
für — standardmäßig ausgewählt. Gehen Sie wie folgt vor, um Ihre PreventUserExistenceErrors
Konfiguration zu aktualisieren:
-
Ändern Sie den Wert
PreventUserExistenceErrors
zwischenENABLED
undLEGACY
in einem UpdateUserPoolClientAPIAnfrage. -
Bearbeiten Sie Ihren App-Client in der Amazon Cognito Cognito-Konsole und ändern Sie den Status von Benutzerexistenzfehlern verhindern zwischen ausgewählt (
ENABLED
) und abgewählt (LEGACY
).
Wenn diese Eigenschaft den Wert von hatLEGACY
, gibt Ihr App-Client eine UserNotFoundException
Fehlerantwort zurück, wenn ein Benutzer versucht, sich mit einem Benutzernamen anzumelden, der in Ihrem Benutzerpool nicht existiert.
Wenn diese Eigenschaft den Wert von hatENABLED
, gibt Ihr App-Client die Nichtexistenz eines Benutzerkontos in Ihrem Benutzerpool nicht mit einem UserNotFoundException
Fehler an. Eine PreventUserExistenceErrors
Konfiguration von ENABLED
hat die folgenden Auswirkungen:
-
Amazon Cognito antwortet mit unspezifischen Informationen auf API Anfragen, bei denen die Antwort andernfalls ergeben könnte, dass ein gültiger Benutzer existiert.
-
Amazon Cognito „Anmeldung“ und „Passwort vergessen“ geben eine generische Antwort auf einen APIs Authentifizierungsfehler zurück. Die Fehlerantwort gibt an, dass der Benutzername oder das Passwort falsch ist.
-
Amazon Cognito Cognito-Kontobestätigung und Passwortwiederherstellung APIs geben statt einer teilweisen Darstellung der Kontaktinformationen eines Benutzers eine Antwort zurück, die besagt, dass ein Code an ein simuliertes Liefermedium gesendet wurde.
Die folgenden Informationen beschreiben das Verhalten von Benutzerpool-Vorgängen, wenn diese Option auf eingestellt PreventUserExistenceErrors
ist. ENABLED
Vorgänge zur Authentifizierung und Benutzererstellung
Sie können Fehlerantworten sowohl bei der Benutzername-Passwort-Authentifizierung als auch bei der Secure Remote Password () SRP -Authentifizierung konfigurieren. Sie können auch die Fehler anpassen, die Sie mit der benutzerdefinierten Authentifizierung zurückgeben. Die folgenden Benutzer APIs führen diese Authentifizierungsvorgänge aus:
-
AdminInitiateAuth
-
AdminRespondToAuthChallenge
-
InitiateAuth
-
RespondToAuthChallenge
In der folgenden Liste sehen Sie, wie Sie Fehlerantworten in Operationen zum Authentifizieren von Benutzern anpassen können.
- Authentifizierung mit Benutzername und Passwort
-
Um einen Benutzer mit
ADMIN_USER_PASSWORD_AUTH
und anzumeldenUSER_PASSWORD_AUTH
, geben Sie den Benutzernamen und das Passwort in eineAdminInitiateAuth
InitiateAuth
API OR-Anfrage ein. Amazon Cognito gibt einen generischenNotAuthorizedException
-Fehler zurück, wenn der Benutzername oder das Passwort falsch ist. - Sichere Remote-Passwortauthentifizierung (SRP)
-
Um einen Benutzer anzumelden
USER_SRP_AUTH
, geben Sie einen Benutzernamen und einenSRP_A
Parameter in eineAdminInitiateAuth
InitiateAuth
API Oder-Anfrage ein. Als Reaktion darauf kehrt Amazon Cognito zurückSRP_B
und salzt für den Benutzer. Wenn ein Benutzer nicht gefunden wird, gibt Amazon Cognito im ersten Schritt eine simulierte Antwort zurück, wie in 5054 beschrieben. RFCAmazon Cognito gibt dasselbe Salz und eine interne Benutzer-ID im UUIDFormat für dieselbe Kombination aus Benutzername und Benutzerpool zurück. Wenn Sie eine RespondToAuthChallenge
API Anfrage mit einem Passwortnachweis senden, gibt Amazon Cognito einen generischenNotAuthorizedException
Fehler zurück, wenn entweder der Benutzername oder das Passwort falsch ist.Anmerkung
Sie können eine generische Antwort mit Authentifizierung mit Benutzername und Passwort simulieren, wenn Sie verifizierungsbasierte Alias-Attribute verwenden und der unveränderliche Benutzername nicht als formatiert ist. UUID
- Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen
-
Wenn Sie den Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen verwenden und Fehlerantworten aktivieren, gibt
LambdaChallenge
einen booleschen Parameter namensUserNotFound
zurück. Dann wird er in der Anfrage vonDefineAuthChallenge
-,VerifyAuthChallenge
- undCreateAuthChallenge
-Lambda-Auslösern übergeben. Sie können diesen Auslöser verwenden, um benutzerdefinierte Autorisierungsherausforderungen für einen nicht vorhandenen Benutzer zu simulieren. Wenn Sie den Lambda–Auslöser der Vorauthentifizierung für einen nicht vorhandenen Benutzer aufrufen, gibt Amazon CognitoUserNotFound
zurück.
In der folgenden Liste sehen Sie, wie Sie Fehlerantworten in Operationen zum Erstellen von Benutzern anpassen können.
- SignUp
-
Die
SignUp
Operation kehrt immer zurück,UsernameExistsException
wenn ein Benutzername bereits vergeben ist. Wenn Sie nicht möchten, dass Amazon Cognito bei der Registrierung von Benutzern in Ihrer App einen FehlerUsernameExistsException
für E-Mail-Adressen und Telefonnummern zurückgibt, verwenden Sie verifizierungsbasierte Aliasattribute. Weitere Informationen zu Aliassen finden Sie unter Anpassen von Anmeldeattributen.Ein Beispiel dafür, wie Amazon Cognito die Verwendung von
SignUp
API Anfragen zur Erkennung von Benutzern in Ihrem Benutzerpool verhindern kann, finden Sie unterVermeiden von Fehlern UsernameExistsException in Bezug auf E-Mail-Adressen und Telefonnummern bei der Registrierung. - Importierte Benutzer
-
Wenn
PreventUserExistenceErrors
aktiviert ist, wird während der Authentifizierung importierter Benutzer ein allgemeinerNotAuthorizedException
-Fehler zurückgegeben, der angibt, dass entweder der Benutzername oder das Kennwort falsch war, anstattPasswordResetRequiredException
zurückzugeben. Weitere Informationen finden Sie unter Erfordern, dass importierte Benutzer ihre Kennwörter zurücksetzen. - Lambda-Auslöser für die Benutzermigration.
-
Amazon Cognito gibt eine simulierte Antwort für nicht vorhandene Benutzer zurück, wenn im ursprünglichen Ereigniskontext vom Lambda-Auslöser eine leere Antwort festgelegt wurde. Weitere Informationen finden Sie unter Lambda-Auslöser für die Benutzermigration.
Vermeiden von Fehlern UsernameExistsException
in Bezug auf E-Mail-Adressen und Telefonnummern bei der Registrierung
Das folgende Beispiel zeigt, wie Sie bei der Konfiguration von Alias-Attributen in Ihrem Benutzerpool verhindern können, dass doppelte E-Mail-Adressen und Telefonnummern bei SignUp
API Anfragen zu UsernameExistsException
Fehlern führen. Sie müssen Ihren Benutzerpool mit einer E-Mail-Adresse oder Telefonnummer als Aliasattribut erstellt haben. Weitere Informationen finden Sie im Abschnitt Anpassen von Anmeldeattributen unter Attribute für den Benutzerpool.
-
Jie meldet sich mit einem neuen Benutzernamen an und gibt auch die E-Mail-Adresse
jie@example.com
an. Amazon Cognito sendet einen Code an seine E-Mail-Adresse.Beispiel für einen AWS CLI Befehl
aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
Beispielantwort
{ "UserConfirmed": false, "UserSub": "
<subId>
", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } } -
Jie gibt den Code an, der ihm zur Bestätigung der E-Mail-Adresse zugesendet wurde. Damit ist seine Registrierung als Benutzer abgeschlossen.
Beispiel für einen AWS CLI Befehl
aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
-
Shirley registriert ein neues Benutzerkonto und gibt die E-Mail-Adresse
jie@example.com
an. Amazon Cognito gibt keinen FehlerUsernameExistsException
zurück und sendet einen Bestätigungscode an Jies E-Mail-Adresse.Beispiel für einen AWS CLI Befehl
aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
Beispielantwort
{ "UserConfirmed": false, "UserSub": "
<new subId>
", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } } -
In einem anderen Szenario ist Shirley Eigentümerin von
jie@example.com
. Shirley ruft den Code ab, den Amazon Cognito an Jies E-Mail-Adresse gesendet hat, und versucht, das Konto zu bestätigen.Beispiel für einen AWS CLI Befehl
aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
Beispielantwort
An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
Amazon Cognito gibt keinen Fehler auf Shirleys Anforderung aws cognito-idp sign-up
zurück, obwohl jie@example.com
einem vorhandenen Benutzer zugewiesen ist. Shirley muss nachweisen, dass die E-Mail-Adresse ihr gehört, bevor Amazon Cognito eine Fehlerantwort zurückgibt. In einem Benutzerpool mit Aliasattributen verhindert dieses Verhalten, dass die Öffentlichkeit SignUp
API zur Überprüfung verwendet wird, ob ein Benutzer mit einer bestimmten E-Mail-Adresse oder Telefonnummer existiert.
Dieses Verhalten unterscheidet sich von der Antwort, die Amazon Cognito auf eine SignUp
-Anforderung mit einem vorhandenen Benutzernamen zurückgibt, wie im folgenden Beispiel gezeigt wird. Shirley erfährt zwar aus dieser Antwort, dass ein Benutzer mit dem Benutzernamen jie
bereits vorhanden ist, sie erfährt jedoch nichts über die mit dem Benutzer verknüpften E-Mail-Adressen oder Telefonnummern.
CLI-Beispielbefehl
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD --user-attributes Name="email",Value="shirley@example.com"
Beispielantwort
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
Operationen zum Zurücksetzen des Passworts
Amazon Cognito gibt die folgenden Antworten auf Vorgänge zum Zurücksetzen von Benutzerpasswörtern zurück, wenn Sie Fehler bei vorhandenen Benutzern verhindern.
- ForgotPassword
-
Wenn ein Benutzer nicht gefunden wird, deaktiviert ist oder keinen verifizierten Übermittlungsmechanismus zum Wiederherstellen seines Kennworts hat, gibt Amazon Cognito
CodeDeliveryDetails
mit einem simulierten Bereitstellungsmedium für einen Benutzer zurück. Das simulierte Bereitstellungsmedium wird durch das Eingabe-Benutzernamensformat und die Verifizierungseinstellungen des Benutzerpools bestimmt. - ConfirmForgotPassword
-
Amazon Cognito gibt den
CodeMismatchException
-Fehler für Benutzer zurück, die nicht vorhanden oder deaktiviert sind. Wenn bei der Verwendung vonForgotPassword
kein Code angefordert wird, gibt Amazon Cognito denExpiredCodeException
-Fehler zurück.
Bestätigungsoperationen
Amazon Cognito gibt die folgenden Antworten auf Vorgänge zum Bestätigen und Verifizieren von Benutzern zurück, wenn Sie Fehler bei vorhandenen Benutzern verhindern.
- ResendConfirmationCode
-
Amazon Cognito gibt
CodeDeliveryDetails
für einen deaktivierten oder einen nicht vorhandenen Benutzer zurück. Amazon Cognito sendet einen Bestätigungscode an die E-Mail- oder Telefonnummer des bestehenden Benutzers. - ConfirmSignUp
-
ExpiredCodeException
gibt zurück, ob ein Code abgelaufen ist. Amazon Cognito gibtNotAuthorizedException
zurück, wenn ein Benutzer nicht autorisiert ist. Wenn der Code nicht den Erwartungen des Servers entspricht, gibt Amazon CognitoCodeMismatchException
zurück.