Dengan menggunakan AWS Cognito, saya ingin membuat pengguna tiruan untuk tujuan pengujian.
Saya kemudian menggunakan AWS Console untuk membuat pengguna tersebut, tetapi pengguna memiliki nya statusnya ditetapkan untuk FORCE_CHANGE_PASSWORD
. Dengan nilai tersebut, pengguna ini tidak dapat diautentikasi.
Apakah ada cara untuk mengubah status ini?
UPDATE Perilaku yang sama saat membuat pengguna dari CLI
amazon-web-services
aws-cli
amazon-cognito
Botol Dominique
sumber
sumber
Jawaban:
Maaf Anda mengalami kesulitan. Kami tidak memiliki proses satu langkah di mana Anda hanya dapat membuat pengguna dan mengautentikasi mereka secara langsung. Kami mungkin mengubahnya di masa mendatang seperti mengizinkan administrator untuk mengatur kata sandi yang dapat digunakan secara langsung oleh pengguna. Untuk saat ini, saat Anda membuat pengguna baik menggunakan
AdminCreateUser
atau dengan mendaftarkan pengguna dengan aplikasi, langkah-langkah tambahan diperlukan, baik memaksa pengguna untuk mengubah kata sandi saat masuk atau meminta pengguna memverifikasi email atau nomor telepon untuk mengubah status penggunaCONFIRMED
.sumber
--permanent
bendera: stackoverflow.com/a/56948249/3165552Saya tahu ini sudah lama tetapi saya pikir ini mungkin membantu orang lain yang menemukan posting ini.
Anda dapat menggunakan AWS CLI untuk mengubah kata sandi pengguna, bagaimanapun ini adalah proses multi langkah:
Langkah 1: Dapatkan token sesi untuk pengguna yang diinginkan:
Langkah 2: Jika langkah 1 berhasil, langkah itu akan merespons dengan tantangan
NEW_PASSWORD_REQUIRED
, parameter tantangan lain, dan kunci sesi pengguna. Kemudian, Anda dapat menjalankan perintah kedua untuk mengeluarkan respons tantangan: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 ""%
Perintah di atas harus mengembalikan Hasil Otentikasi yang valid dan Token yang sesuai.
Penting: Agar ini bekerja, Cognito User Pool HARUS memiliki klien Aplikasi yang dikonfigurasi dengan
ADMIN_NO_SRP_AUTH
fungsionalitas ( Langkah 5 dalam dokumen ini ).sumber
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
Ini akhirnya ditambahkan ke AWSCLI: https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html
Anda dapat mengubah kata sandi pengguna dan memperbarui status menggunakan:
aws cognito-idp admin-set-user-password --user-pool-id <your user pool id> --username user1 --password password --permanent
Sebelum menggunakan ini, Anda mungkin perlu memperbarui AWS CLI Anda menggunakan:
pip3 install awscli --upgrade
sumber
Cukup tambahkan kode ini setelah Anda
onSuccess: function (result) { ... },
dalam fungsi login Anda. Pengguna Anda kemudian akan memiliki status DIKONFIRMASI .sumber
this
pada tantangan kata sandi baru lengkap)Anda dapat mengubah status pengguna tersebut
FORCE_CHANGE_PASSWORD
dengan memanggilrespondToAuthChallenge()
pengguna seperti ini: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 });
sumber
cognitoidentityserviceprovider.adminInitiateAuth({ AuthFlow: 'ADMIN_NO_SRP_AUTH', ClientId: 'your_own3j63rs8j16bxxxsto25db00obh', UserPoolId: 'us-east-1_DtNSUVT7n', AuthParameters: { USERNAME: 'user3', PASSWORD: 'original_password' } }, callback);
user3
dibuat di konsol dan awalnya diberi kata sandi'original_password'
tidak yakin apakah Anda masih berjuang dengan ini tetapi untuk membuat sekelompok pengguna uji saja, saya menggunakan
awscli
seperti itu:sumber
MEMPERBARUI:
Saya sekarang menggunakan ini, diterjemahkan untuk memperkuat, di dalam NodeJS Lambda:
Saya menyetel kata sandi sementara dan kemudian menyetel ulang ke kata sandi yang diminta pengguna.
POSTING LAMA:
Anda dapat menyelesaikan ini menggunakan amazon-cognito-identity-js SDK dengan mengautentikasi dengan kata sandi sementara setelah pembuatan akun dengan
cognitoidentityserviceprovider.adminCreateUser()
, dan berjalan dicognitoUser.completeNewPasswordChallenge()
dalamcognitoUser.authenticateUser( ,{newPasswordRequired})
- semua di dalam fungsi yang membuat pengguna Anda.Saya menggunakan kode di bawah ini di dalam AWS lambda untuk membuat akun pengguna Cognito yang diaktifkan. Saya yakin bisa dioptimalkan, bersabarlah dengan saya. Ini adalah posting pertama saya, dan saya masih cukup baru mengenal JavaScript.
sumber
Untuk Java SDK, anggap klien Cognito Anda sudah disiapkan dan Anda memiliki pengguna dalam status FORCE_CHANGE_PASSWORD, Anda dapat melakukan hal berikut untuk membuat pengguna DIKONFIRMASI ... dan kemudian diautentikasi seperti biasa.
Semoga membantu dengan tes integrasi tersebut (Maaf tentang pemformatannya)
sumber
Pada dasarnya ini adalah jawaban yang sama tetapi untuk .Net C # SDK:
Berikut ini akan membuat pembuatan pengguna admin penuh dengan nama pengguna dan kata sandi yang diinginkan. Memiliki model Pengguna berikut:
Anda dapat membuat pengguna dan membuatnya siap untuk digunakan menggunakan:
sumber
Jika Anda mencoba mengubah status sebagai admin dari konsol. Kemudian ikuti langkah-langkah di bawah ini setelah membuat pengguna.
Langkah 2
langkah 3 4 5 6
langkah 7
langkah 8
sumber
Saya tahu Itu adalah jawaban yang sama, tetapi saya pikir itu mungkin membantu
Go
komunitas pengembang. pada dasarnya ini adalah memulai permintaan autentikasi, mendapatkan sesi, dan menanggapi tantanganNEW_PASSWORD_REQUIRED
Berikut tes unitnya:
sumber
BAIK. Saya akhirnya memiliki kode di mana administrator dapat membuat pengguna baru. Prosesnya berjalan seperti ini:
Langkah 1 adalah bagian yang sulit. Inilah kode saya untuk membuat pengguna di Node JS:
Pada dasarnya, Anda perlu mengirim perintah kedua untuk memaksa email dianggap diverifikasi. Pengguna masih perlu membuka emailnya untuk mendapatkan sandi sementara (yang juga memverifikasi email tersebut). Tetapi tanpa panggilan kedua yang mengatur email untuk diverifikasi, Anda tidak akan mendapatkan panggilan yang benar kembali untuk mengatur ulang kata sandinya.
sumber