Memigrasi pengguna pemicu Lambda - Amazon Cognito

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memigrasi pengguna pemicu Lambda

Saat pengguna tidak ada di kumpulan pengguna saat masuk dengan kata sandi, atau dalam alur lupa kata sandi, Amazon Cognito akan memanggil pemicu ini. Setelah fungsi Lambda berhasil dikembalikan, Amazon Cognito membuat pengguna di kolam pengguna. Untuk detail tentang alur autentikasi dengan pemicu Lambda migrasi pengguna, lihat. Mengimpor pengguna dengan pemicu Lambda migrasi pengguna

Untuk memigrasikan pengguna dari direktori pengguna yang ada ke kumpulan pengguna Amazon Cognito saat login, atau selama alur lupa kata sandi, gunakan pemicu Lambda ini.

Migrasikan sumber pemicu Lambda pengguna

triggerSource nilai Peristiwa
UserMigration_Authentication Migrasi pengguna saat masuk.
UserMigration_ForgotPassword Migrasi pengguna selama alur lupa kata sandi.

Migrasikan parameter pemicu Lambda pengguna

Permintaan yang diteruskan Amazon Cognito ke fungsi Lambda ini adalah kombinasi dari parameter di bawah ini dan parameter umum yang ditambahkan Amazon Cognito ke semua permintaan.

JSON
{ "userName": "string", "request": { "password": "string", "validationData": { "string": "string", . . . }, "clientMetadata": { "string": "string", . . . } }, "response": { "userAttributes": { "string": "string", . . . }, "finalUserStatus": "string", "messageAction": "string", "desiredDeliveryMediums": [ "string", . . .], "forceAliasCreation": boolean, "enableSMSMFA": boolean } }

Migrasikan parameter permintaan pengguna

userName

Nama pengguna yang dimasukkan pengguna saat masuk.

password

Kata sandi yang dimasukkan pengguna saat masuk. Amazon Cognito tidak mengirimkan nilai ini dalam permintaan yang diprakarsai oleh alur lupa kata sandi.

validationData

Satu atau beberapa pasangan nilai kunci yang berisi data validasi dalam permintaan login pengguna. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan ClientMetadata parameter dalam InitiateAuthdan AdminInitiateAuthAPItindakan.

clientMetadata

Satu atau beberapa pasangan nilai kunci yang dapat Anda berikan sebagai input khusus ke fungsi Lambda untuk pemicu pengguna yang bermigrasi. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan ClientMetadata parameter dalam AdminRespondToAuthChallengedan ForgotPasswordAPItindakan.

Migrasikan parameter respons pengguna

userAttributes

Bidang ini wajib diisi.

Bidang ini harus berisi satu atau beberapa pasangan nama-nilai yang disimpan Amazon Cognito di profil pengguna di kumpulan pengguna Anda dan digunakan sebagai atribut pengguna. Anda dapat menyertakan atribut pengguna standar dan kustom. Atribut kustom memerlukan prefiks custom: untuk membedakannya dari atribut standar. Untuk informasi selengkapnya, lihat Atribut khusus.

catatan

Untuk mengatur ulang kata sandi mereka dalam alur lupa kata sandi, pengguna harus memiliki alamat email terverifikasi atau nomor telepon terverifikasi. Amazon Cognito mengirimkan pesan yang berisi kode kata sandi reset ke alamat email atau nomor telepon di atribut pengguna.

Atribut Persyaratan
Atribut apa pun yang ditandai sebagai diperlukan saat Anda membuat kolam pengguna Jika ada atribut yang diperlukan yang hilang selama migrasi, Amazon Cognito menggunakan nilai default.
username

Diperlukan jika Anda mengonfigurasi kumpulan pengguna Anda dengan atribut alias selain nama pengguna untuk login, dan pengguna telah memasukkan nilai alias yang valid sebagai nama pengguna. Nilai alias ini dapat berupa alamat email, nama pengguna pilihan, atau nomor telepon.

Jika permintaan dan kumpulan pengguna memenuhi persyaratan alias, respons dari fungsi Anda harus menetapkan username parameter yang diterimanya ke atribut alias, Selain itu, respons harus menetapkan nilai Anda sendiri ke atribut. username Jika kumpulan pengguna Anda tidak memenuhi persyaratan yang diperlukan untuk memetakan yang diterima username ke alias, maka username parameter dalam respons harus sama persis dengan permintaan, atau dihilangkan.

catatan

usernameharus unik di kolam pengguna.

finalUserStatus

Anda dapat mengatur parameter ini CONFIRMED untuk mengonfirmasi pengguna secara otomatis sehingga mereka dapat masuk dengan kata sandi sebelumnya. Saat Anda mengatur penggunaCONFIRMED, mereka tidak perlu mengambil tindakan tambahan sebelum mereka dapat masuk. Jika Anda tidak menyetel atribut ini keCONFIRMED, itu disetel keRESET_REQUIRED.

RESET_REQUIREDIni berarti bahwa pengguna harus mengubah kata sandi mereka segera setelah migrasi saat login, dan aplikasi klien Anda harus menangani PasswordResetRequiredException selama alur autentikasi. finalUserStatus

catatan

Amazon Cognito tidak menerapkan kebijakan kekuatan kata sandi yang Anda konfigurasikan untuk kumpulan pengguna selama migrasi menggunakan pemicu Lambda. Jika kata sandi tidak memenuhi kebijakan kata sandi yang Anda konfigurasi, Amazon Cognito masih menerima kata sandi sehingga dapat terus memigrasi pengguna. Untuk memberlakukan kebijakan kekuatan kata sandi dan menolak kata sandi yang tidak memenuhi kebijakan, validasi kekuatan kata sandi dalam kode Anda. Kemudian, jika kata sandi tidak memenuhi kebijakan, setel finalUserStatus keRESET_REQUIRED.

messageAction

Anda dapat mengatur parameter ini untuk menolak SUPPRESS untuk mengirim pesan selamat datang yang biasanya dikirimkan Amazon Cognito ke pengguna baru. Jika fungsi Anda tidak mengembalikan parameter ini, Amazon Cognito mengirimkan pesan selamat datang.

desiredDeliveryMediums

Anda dapat mengatur parameter ini EMAIL untuk mengirim pesan selamat datang melalui email, atau SMS untuk mengirim pesan selamat datang olehSMS. Jika fungsi Anda tidak mengembalikan parameter ini, Amazon Cognito mengirimkan pesan selamat datang oleh. SMS

forceAliasCreation

Jika Anda menyetel parameter ini ke TRUE dan nomor telepon atau alamat email dalam UserAttributes parameter sudah ada sebagai alias dengan pengguna lain, API panggilan akan memigrasikan alias dari pengguna sebelumnya ke pengguna yang baru dibuat. Pengguna sebelumnya tidak dapat lagi masuk menggunakan alias itu.

Jika Anda menyetel parameter ini ke FALSE dan alias ada, Amazon Cognito tidak memigrasikan pengguna dan menampilkan kesalahan ke aplikasi klien.

Jika Anda tidak mengembalikan parameter ini, Amazon Cognito menganggap nilainya “salah”.

mengaktifkan SMSMFA

Setel parameter ini true agar pengguna yang dimigrasi melengkapi otentikasi multi-faktor (MFA) pesan SMS teks untuk masuk. Kumpulan pengguna Anda harus telah MFA diaktifkan. Atribut pengguna Anda dalam parameter permintaan harus menyertakan nomor telepon, atau migrasi pengguna tersebut akan gagal.

Contoh: Migrasikan pengguna dengan kata sandi yang ada

Contoh fungsi Lambda ini memigrasikan pengguna dengan kata sandi yang ada dan menekan pesan selamat datang dari Amazon Cognito.

Node.js
const validUsers = { belladonna: { password: "Test123", emailAddress: "bella@example.com" }, }; // Replace this mock with a call to a real authentication service. const authenticateUser = (username, password) => { if (validUsers[username] && validUsers[username].password === password) { return validUsers[username]; } return null; }; const lookupUser = (username) => { const user = validUsers[username]; if (user) { return { emailAddress: user.emailAddress }; } return null; }; const handler = async (event) => { if (event.triggerSource === "UserMigration_Authentication") { // Authenticate the user with your existing user directory service const user = authenticateUser(event.userName, event.request.password); if (user) { event.response.userAttributes = { email: user.emailAddress, email_verified: "true", }; event.response.finalUserStatus = "CONFIRMED"; event.response.messageAction = "SUPPRESS"; } } else if (event.triggerSource === "UserMigration_ForgotPassword") { // Look up the user in your existing user directory service const user = lookupUser(event.userName); if (user) { event.response.userAttributes = { email: user.emailAddress, // Required to enable password-reset code to be sent to user email_verified: "true", }; event.response.messageAction = "SUPPRESS"; } } return event; }; export { handler };