Mit AWS Cognito möchte ich Dummy-Benutzer zu Testzwecken erstellen.
Ich verwende dann die AWS-Konsole , um einen solchen Benutzer zu erstellen, aber der Status des Benutzers ist festgelegt FORCE_CHANGE_PASSWORD
. Mit diesem Wert kann dieser Benutzer nicht authentifiziert werden.
Gibt es eine Möglichkeit, diesen Status zu ändern?
UPDATE Gleiches Verhalten beim Erstellen eines Benutzers über die CLI
amazon-web-services
aws-cli
amazon-cognito
Dominique Fläschchen
quelle
quelle
Antworten:
Entschuldigung, Sie haben Schwierigkeiten. Wir haben keinen einstufigen Prozess, bei dem Sie einfach Benutzer erstellen und direkt authentifizieren können. Möglicherweise ändern wir dies in Zukunft, damit Administratoren Kennwörter festlegen können, die von Benutzern direkt verwendet werden können. Wenn Sie Benutzer erstellen, die Benutzer entweder
AdminCreateUser
mit der App verwenden oder sich bei der App anmelden, sind zusätzliche Schritte erforderlich, die entweder dazu führen, dass Benutzer das Kennwort bei der Anmeldung ändern müssen, oder dass Benutzer die E-Mail- oder Telefonnummer überprüfen, um den Status des Benutzers in zu ändernCONFIRMED
.quelle
--permanent
Ich weiß, dass es eine Weile her ist, dachte aber, dass dies anderen Menschen helfen könnte, die auf diesen Beitrag stoßen.
Sie können die AWS-CLI verwenden, um das Benutzerkennwort zu ändern. Dies ist jedoch ein mehrstufiger Prozess:
Schritt 1: Holen Sie sich ein Sitzungstoken für den gewünschten Benutzer:
Schritt 2: Wenn Schritt 1 erfolgreich ist, antwortet er mit der Herausforderung
NEW_PASSWORD_REQUIRED
, anderen Herausforderungsparametern und dem Sitzungsschlüssel des Benutzers. Anschließend können Sie den zweiten Befehl ausführen, um die Challenge-Antwort auszugeben:Der obige Befehl sollte ein gültiges Authentifizierungsergebnis und entsprechende Token zurückgeben.
Wichtig: Damit dies funktioniert, MUSS im Cognito-Benutzerpool ein App-Client mit
ADMIN_NO_SRP_AUTH
Funktionalität konfiguriert sein ( Schritt 5 in diesem Dokument ).quelle
userAttributes.$FIELD_NAME=$VALUE
( github.com/aws/aws-sdk-js/issues/1290 ).--challenge-responses NEW_PASSWORD=password,USERNAME=username,userAttributes.picture=picture,userAttributes.name=name
Dies wurde schließlich zu AWSCLI hinzugefügt: https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html
Sie können das Passwort eines Benutzers ändern und den Status aktualisieren, indem Sie:
aws cognito-idp admin-set-user-password --user-pool-id <your user pool id> --username user1 --password password --permanent
Bevor Sie dies verwenden, müssen Sie möglicherweise Ihre AWS-CLI mithilfe folgender Informationen aktualisieren:
pip3 install awscli --upgrade
quelle
Fügen Sie diesen Code einfach nach
onSuccess: function (result) { ... },
Ihrer Anmeldefunktion hinzu. Ihr Benutzer hat dann den Status BESTÄTIGT .quelle
this
auf der komplett neuen Passwort-Herausforderung)Sie können diesen Benutzerstatus ändern,
FORCE_CHANGE_PASSWORD
indem SierespondToAuthChallenge()
den Benutzer wie folgt aufrufen :quelle
cognitoidentityserviceprovider.adminInitiateAuth({ AuthFlow: 'ADMIN_NO_SRP_AUTH', ClientId: 'your_own3j63rs8j16bxxxsto25db00obh', UserPoolId: 'us-east-1_DtNSUVT7n', AuthParameters: { USERNAME: 'user3', PASSWORD: 'original_password' } }, callback);
user3
wurde in der Konsole erstellt und zunächst das Passwort gegeben'original_password'
Ich bin mir nicht sicher, ob Sie immer noch damit kämpfen, aber um nur eine Reihe von Testbenutzern zu erstellen, habe ich Folgendes verwendet
awscli
:quelle
Sie können dies mit dem SDK amazon-cognito-identity-js lösen, indem Sie sich nach der Kontoerstellung mit dem temporären Kennwort authentifizieren
cognitoidentityserviceprovider.adminCreateUser()
undcognitoUser.completeNewPasswordChallenge()
innerhalb von ausführencognitoUser.authenticateUser( ,{newPasswordRequired})
- alles innerhalb der Funktion, die Ihren Benutzer erstellt.Ich verwende den folgenden Code in AWS Lambda, um aktivierte Cognito-Benutzerkonten zu erstellen. Ich bin sicher, es kann optimiert werden, seien Sie geduldig mit mir. Dies ist mein erster Beitrag und ich bin noch ziemlich neu in JavaScript.
quelle
Wenn Sie für Java SDK davon ausgehen, dass Ihr Cognito-Client eingerichtet ist und sich Ihr Benutzer im Status FORCE_CHANGE_PASSWORD befindet, können Sie Folgendes tun, um Ihren Benutzer BESTÄTIGT zu erhalten ... und dann wie gewohnt zu authentifizieren.
Hoffe, es hilft bei diesen Integrationstests (Entschuldigung für die Formatierung)
quelle
Grundsätzlich ist dies die gleiche Antwort, jedoch für .Net C # SDK:
Im Folgenden wird eine vollständige Erstellung des Administratorbenutzers mit dem gewünschten Benutzernamen und Kennwort durchgeführt. Mit dem folgenden Benutzermodell:
Sie können einen Benutzer erstellen und ihn gebrauchsfertig machen, indem Sie:
quelle
Wenn Sie versuchen, den Status als Administrator über die Konsole zu ändern. Führen Sie dann nach dem Erstellen des Benutzers die folgenden Schritte aus.
Schritt 2
Schritt 3 4 5 6
Schritt 7
Schritt 8
quelle
Ich weiß, dass es die gleiche Antwort ist, dachte aber, es könnte der
Go
Entwicklergemeinschaft helfen . Im Grunde geht es darum, eine Authentifizierungsanforderung zu initiieren, die Sitzung abzurufen und auf die Herausforderung zu antwortenNEW_PASSWORD_REQUIRED
Hier ist ein Unit-Test:
quelle
OK. Ich habe endlich Code, mit dem ein Administrator einen neuen Benutzer erstellen kann. Der Prozess läuft folgendermaßen ab:
Schritt 1 ist der schwierige Teil. Hier ist mein Code zum Erstellen eines Benutzers in Node JS:
Grundsätzlich müssen Sie einen zweiten Befehl senden, um zu erzwingen, dass die E-Mail als verifiziert betrachtet wird. Der Benutzer muss weiterhin zu seiner E-Mail gehen, um das temporäre Kennwort zu erhalten (das auch die E-Mail überprüft). Ohne diesen zweiten Anruf, bei dem die E-Mail auf "Verifiziert" gesetzt wird, erhalten Sie nicht den richtigen Rückruf, um das Kennwort zurückzusetzen.
quelle