Wie setze ich Benutzerpasswörter in Amazon Cognito mithilfe der AWS-CLI zurück?

Lesedauer: 4 Minute
0

Ich muss lernen, wie man die AWS Command Line Interface (AWS CLI) verwendet, um Benutzern zu helfen, ihre Passwörter in Amazon Cognito zurückzusetzen oder zu ändern.

Lösung

Amazon-Cognito-Passwörter können mithilfe der AWS-CLI zurückgesetzt oder geändert werden. Ein Amazon-Cognito-Administrator kann einen Prozess zum Zurücksetzen des Passworts starten, um Benutzerpasswörter zurückzusetzen. Ein Amazon-Cognito-Benutzer kann sein Passwort selbst ändern, oder ein Amazon-Cognito-Administrator kann das Benutzerpasswort vorübergehend oder dauerhaft festlegen.

Benutzerpasswort zurücksetzen

Um einen Flow zum Zurücksetzen von Passwörtern zu starten, gehen ein Administrator und ein Benutzer wie folgt vor:

1.    Ein Administrator ruft die AdminResetUserPassword-API auf.

Wichtig: Ersetzen Sie in diesen Beispielbefehlen für das AWS Command Line Interface (AWS CLI) alle Instances von Beispielzeichenfolgen durch Ihre Werte. (Ersetzen Sie beispielsweise „example_user_pool_id“ durch Ihre Benutzerpool-ID.)

Beispiel für den Befehl admin-reset-user-password:

aws cognito-idp admin-reset-user-password --user-pool-id example_user_pool_id --username example_user_name

2.    Wenn das Passwort eines Benutzers zurückgesetzt wird und der Benutzer versucht, sich anzumelden, erhält er eine PasswordResetRequiredException-Ausnahme. Anschließend wird der Benutzer zum Ablauf zum Zurücksetzen des Passworts weitergeleitet.

Hinweis: Der Ablauf zum Zurücksetzen des Passworts ist derselbe wie der Password-vergessen-Flow.

3.    Der Benutzer mit einer verifizierten E-Mail-Adresse oder Telefonnummer erhält eine Nachricht mit einem Bestätigungscode, der zum Zurücksetzen seines Passworts erforderlich ist.

Arbeiten mit nicht verifizierten Benutzerattributen:

1.    Wenn der Benutzer keine verifizierte E-Mail-Adresse oder Telefonnummer hat, erhält der Administrator beim Aufrufen der **AdminResetUserPassword-**API die folgende Fehlermeldung:

An error occurred (InvalidParameterException) when calling the AdminResetUserPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number

2.    Um dieses Problem zu beheben, ruft der Administrator die AdminUpdateUserAttributes-API auf und setzt die Attribute email_verified oder phone_number_verified auf wahr.

Beispiel für den Befehl admin-update-user-attributes:

aws cognito-idp admin-update-user-attributes --user-pool-id example_user_pool_id --username example_user_name --user-attributes Name="email_verified",Value="true"

3.    Wenn der Benutzer den Bestätigungscode nicht erhält,befolgen Sie die bewährten Methoden zur Behebung des Problems.

Der Benutzer schließt den Passwort-vergessen-Flow ab:

1.    Nach Erhalt eines Bestätigungscodes kann der Benutzer ein neues Passwort erstellen, indem er die ConfirmForgotPassword-API aufruft.

Beispiel für den Befehl confirm-forgot-password:

aws cognito-idp confirm-forgot-password --client-id example_client_id --username example_user_name --confirmation-code example_code --password example_new password

Benutzerpasswort ändern

Benutzer können ihre Passwörter selbst ändern, und Administratoren legen Benutzerpasswörter vorübergehend oder dauerhaft fest. Um ein Benutzerpasswort zu ändern, führt ein Benutzer oder Administrator die folgenden Schritte aus:

Der Benutzer ändert ein Benutzerpasswort:

1.    Der Benutzer ruft die ChangePassword-API auf. Der Benutzer muss über ein gültiges Zugriffstoken verfügen, das von Amazon Cognito ausgestellt wurde, um die **ChangePassword-**API aufzurufen.

Beispiel für einen Befehl change-password:

aws cognito-idp change-password --previous-password example_old_password --proposed-password example_new_password --access-token valid_access_token

Der Administrator erstellt ein permanentes neues Benutzerpasswort:

1.    Der Administrator ruft die AdminSetUserPassword-API auf, um ein neues permanentes Passwort zu erstellen.

Beispiel admin-set-user-password, um das Benutzerpasswort dauerhaft zu ändern:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_new_password --permanent

2.    Nachdem der Administrator das Benutzerpasswort dauerhaft geändert hat, kann der Benutzer das neue Passwort verwenden, um sich bei der Anwendung anzumelden.

Der Administrator erstellt ein temporäres neues Benutzerpasswort:

1.    Der Administrator ruft die AdminSetUserPassword-API auf, um ein neues temporäres Passwort zu erstellen.

Beispiel admin-set-user-password, um das Benutzerpasswort vorübergehend zu ändern:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_temporary_password --no-permanent

Wenn der Administrator das Benutzerpasswort in ein temporäres Passwort ändert, muss der Benutzer zusätzliche Schritte unternehmen.

2.    Der Status des Benutzers ändert sich in „FORCE_CHANGE_PASSWORD“, nachdem die **AdminSetUserPassword-**API mit einem temporären Passwort aufgerufen wurde. Ein Benutzer, der versucht, sich anzumelden, indem er die InitiateAuth-API mit einem temporären Passwort aufruft, erhält eine Authentifizierungsabfrage „NEW_PASSWORD_REQUIRED“.

Beispiel für den Befehl initiate-auth:

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user_name,PASSWORD=example_temporary_password --client-id example_client_id

Ausgabe:

{
  "ChallengeName": "NEW_PASSWORD_REQUIRED",
  "Session": "AYA......",
  "ChallengeParameters": {
    "USER_ID_FOR_SRP": "544.....",
    "requiredAttributes": "[]",
    "userAttributes": "{\"email_verified\":\"true\",\"email\":\"user@example.com\"}"
  }
}

Hinweis: Die Gültigkeit des Sitzungstokens hängt von der Einstellung für die Sitzungsdauer des Authentifizierungsflows Ihres App-Clients ab. Standardmäßig beträgt die Sitzungsdauer dieses Sitzungstokens 3 Minuten. Informationen zum Ändern der Gültigkeit des Tokens finden Sie in den Schritten zum Konfigurieren der Sitzungsdauer des App-Client-Authentifizierungsflows.

3.    Der Benutzer reagiert auf die Herausforderung „NEW_PASSWORD_REQUIRED“, indem er die RespondToAuthChallenge-API mit dem Sitzungstoken aufruft, das er im vorherigen Schritt erhalten hat.

Beispiel für den Befehl respond-to-auth-challenge:

aws cognito-idp respond-to-auth-challenge --client-id example_client_id --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses USERNAME=example_username,NEW_PASSWORD="example_new_password" --session "example_session_token"

4.    Der Benutzer erhält ID-, Zugriffs- und Aktualisierungstoken und meldet sich bei der Anwendung an.

Wichtig: Wenn Ihr App-Client mit einem Client-Geheimnis im Benutzerpool konfiguriert ist, müssen Sie den geheimen Hash angeben. Weitere Informationen finden Sie unter Wie behebe ich den Fehler „Geheimer Hash für Client <client-id> kann nicht überprüft werden“ in meiner Amazon-Cognito-Benutzerpool-API?


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr