Korzystając z AWS Cognito, chcę stworzyć fałszywych użytkowników do celów testowych.
Następnie używam konsoli AWS do tworzenia takiego użytkownika, ale ten użytkownik ma ustawiony statusFORCE_CHANGE_PASSWORD
. Przy tej wartości ten użytkownik nie może zostać uwierzytelniony.
Czy istnieje sposób na zmianę tego statusu?
UPDATE To samo zachowanie podczas tworzenia użytkownika z CLI
amazon-web-services
aws-cli
amazon-cognito
Fiolka Dominique
źródło
źródło
Odpowiedzi:
Przepraszamy, masz trudności. Nie mamy jednoetapowego procesu, w którym można po prostu tworzyć użytkowników i bezpośrednio ich uwierzytelniać. W przyszłości możemy to zmienić, na przykład zezwalając administratorom na ustawianie haseł, których użytkownicy mogą bezpośrednio używać. Na razie, gdy tworzysz użytkowników za pomocą aplikacji
AdminCreateUser
lub rejestrując użytkowników w aplikacji, wymagane są dodatkowe kroki, zmuszające użytkowników do zmiany hasła po zalogowaniu lub wymagające weryfikacji adresu e-mail lub numeru telefonu w celu zmiany statusu użytkownika naCONFIRMED
.źródło
--permanent
flagi: stackoverflow.com/a/56948249/3165552Wiem, że minęło trochę czasu, ale pomyślałem, że może to pomóc innym osobom, które natknęły się na ten post.
Możesz użyć interfejsu AWS CLI, aby zmienić hasło użytkownika, jednak jest to proces wieloetapowy:
Krok 1: Uzyskaj token sesji dla wybranego użytkownika:
Krok 2: Jeśli krok 1 zakończy się powodzeniem, odpowie wyzwaniem
NEW_PASSWORD_REQUIRED
, innymi parametrami wyzwania i kluczem sesji użytkownika. Następnie możesz uruchomić drugie polecenie, aby wydać odpowiedź na wyzwanie:aws cognito-idp admin-respond-to-auth-challenge --user-pool-id %USER POOL ID% --client-id %CLIENT ID% --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=%DESIRED PASSWORD%,USERNAME=%USERS USERNAME% --session %SESSION KEY FROM PREVIOUS COMMAND with ""%
Powyższe polecenie powinno zwrócić prawidłowy wynik uwierzytelnienia i odpowiednie tokeny.
Ważne: aby to zadziałało, pula użytkowników Cognito MUSI mieć skonfigurowanego klienta aplikacji z
ADMIN_NO_SRP_AUTH
funkcjonalnością ( krok 5 w tym dokumencie ).źródło
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
To zostało ostatecznie dodane do AWSCLI: https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html
Możesz zmienić hasło użytkownika i zaktualizować stan za pomocą:
aws cognito-idp admin-set-user-password --user-pool-id <your user pool id> --username user1 --password password --permanent
Przed użyciem tego może być konieczne zaktualizowanie interfejsu wiersza polecenia AWS za pomocą:
pip3 install awscli --upgrade
źródło
Po prostu dodaj ten kod po swojej
onSuccess: function (result) { ... },
funkcji logowania. Twój użytkownik będzie miał wtedy status POTWIERDZONY .źródło
this
wyzwań związanych z nowym hasłem)Możesz zmienić ten status użytkownika
FORCE_CHANGE_PASSWORD
, dzwoniącrespondToAuthChallenge()
do użytkownika w ten sposób:var params = { ChallengeName: 'NEW_PASSWORD_REQUIRED', ClientId: 'your_own3j6...0obh', ChallengeResponses: { USERNAME: 'user3', NEW_PASSWORD: 'changed12345' }, Session: 'xxxxxxxxxxZDMcRu-5u...sCvrmZb6tHY' }; cognitoidentityserviceprovider.respondToAuthChallenge(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });
źródło
cognitoidentityserviceprovider.adminInitiateAuth({ AuthFlow: 'ADMIN_NO_SRP_AUTH', ClientId: 'your_own3j63rs8j16bxxxsto25db00obh', UserPoolId: 'us-east-1_DtNSUVT7n', AuthParameters: { USERNAME: 'user3', PASSWORD: 'original_password' } }, callback);
user3
został utworzony w konsoli i początkowo otrzymał hasło'original_password'
nie jestem pewien, czy nadal z tym walczysz, ale do tworzenia tylko grupy użytkowników testowych, użyłem
awscli
jako takiego:źródło
Jeśli próbujesz zmienić status jako administrator z konsoli. Następnie wykonaj poniższe czynności po utworzeniu użytkownika.
krok 2
krok 3 4 5 6
krok 7
krok 8
źródło
AKTUALIZACJA:
Pojawiły się pewne aktualizacje i klient Amplify nie jest już potrzebny. Po adminCreateUser () możesz teraz po prostu użyć
[https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html]
spowoduje to ustawienie użytkownika na „potwierdzone”.
AKTUALIZACJA:
Teraz używam tego, przetłumaczonego na wzmocnienie, wewnątrz NodeJS Lambda:
Ustawiam hasło tymczasowe, a następnie resetuję je do hasła żądanego przez użytkownika.
STARY POST:
Możesz rozwiązać ten problem za pomocą zestawu SDK amazon-cognito-identity-js, uwierzytelniając się tymczasowym hasłem po utworzeniu konta
cognitoidentityserviceprovider.adminCreateUser()
i uruchamiająccognitoUser.completeNewPasswordChallenge()
wcognitoUser.authenticateUser( ,{newPasswordRequired})
ramach funkcji, która tworzy użytkownika.Używam poniższego kodu wewnątrz lambdy AWS, aby utworzyć włączone konta użytkowników Cognito. Jestem pewien, że można to zoptymalizować, bądź do mnie cierpliwa. To jest mój pierwszy post, a ja wciąż jestem całkiem nowy w JavaScript.
źródło
W przypadku Java SDK, zakładając, że klient Cognito jest skonfigurowany, a użytkownik jest w stanie FORCE_CHANGE_PASSWORD, można wykonać następujące czynności, aby uzyskać POTWIERDZENIE użytkownika ... a następnie normalnie uwierzytelnić.
Mam nadzieję, że pomoże to w tych testach integracji (przepraszam za formatowanie)
źródło
Zasadniczo jest to ta sama odpowiedź, ale w przypadku zestawu SDK .Net C #:
Poniższe czynności spowodują utworzenie pełnego administratora z żądaną nazwą użytkownika i hasłem. Posiadanie następującego modelu użytkownika:
Możesz utworzyć użytkownika i przygotować go do użycia za pomocą:
źródło
Wiem, że to ta sama odpowiedź, ale pomyślałem, że może pomóc
Go
społeczności programistów. w zasadzie jest to zainicjowanie żądania autoryzacji, uzyskanie sesji i odpowiedź na wyzwanieNEW_PASSWORD_REQUIRED
Oto test jednostkowy:
źródło
DOBRZE. W końcu mam kod, w którym administrator może utworzyć nowego użytkownika. Proces przebiega następująco:
Krok 1 to najtrudniejsza część. Oto mój kod do tworzenia użytkownika w Node JS:
Zasadniczo musisz wysłać drugie polecenie, aby wymusić uznanie wiadomości e-mail za zweryfikowaną. Użytkownik nadal musi przejść do swojego adresu e-mail, aby uzyskać tymczasowe hasło (które również weryfikuje e-mail). Ale bez tego drugiego połączenia, które ustawia adres e-mail na zweryfikowany, nie otrzymasz odpowiedniego połączenia zwrotnego, aby zresetować hasło.
źródło