Pemicu Lambda pra pendaftaran - Amazon Cognito

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

Pemicu Lambda pra pendaftaran

Anda mungkin ingin menyesuaikan proses pendaftaran di kumpulan pengguna yang memiliki opsi pendaftaran swalayan. Beberapa penggunaan umum dari pemicu pra pendaftaran adalah untuk melakukan analisis kustom dan pencatatan pengguna baru, menerapkan standar keamanan dan tata kelola, atau menautkan pengguna dari iDP pihak ketiga ke profil pengguna terkonsolidasi. Anda mungkin juga memiliki pengguna tepercaya yang tidak diharuskan menjalani verifikasi dan konfirmasi.

Sesaat sebelum Amazon Cognito mendaftarkan pengguna lokal atau federasi baru, ini mengaktifkan fungsi Lambda pra pendaftaran. Sebagai bagian dari proses pendaftaran, Anda dapat menggunakan fungsi ini untuk menganalisis peristiwa masuk dengan logika khusus, dan memodifikasi atau menolak pengguna baru.

Aliran Lambda pra pendaftaran

Alur pendaftaran klien

Pemicu Lambda pra pendaftaran - alur klien

Alur pendaftaran server

Pemicu Lambda pra pendaftaran - alur server

Permintaan tersebut mencakup data validasi dari klien. Data ini berasal dari ValidationData nilai yang diteruskan ke kumpulan pengguna SignUp dan AdminCreateUser API metode.

Parameter pemicu Lambda pra-pendaftaran

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
{ "request": { "userAttributes": { "string": "string", . . . }, "validationData": { "string": "string", . . . }, "clientMetadata": { "string": "string", . . . } }, "response": { "autoConfirmUser": "boolean", "autoVerifyPhone": "boolean", "autoVerifyEmail": "boolean" } }

Parameter permintaan pra-pendaftaran

userAttributes

Satu atau lebih pasangan nilai-nama yang mewakili atribut pengguna. Nama atribut adalah kuncinya.

validationData

Satu atau beberapa pasangan nilai kunci dengan data atribut pengguna yang diteruskan aplikasi Anda ke Amazon Cognito dalam permintaan untuk membuat pengguna baru. Kirim informasi ini ke fungsi Lambda Anda dalam ValidationData parameter AdminCreateUseratau SignUpAPIpermintaan Anda.

Amazon Cognito tidak menyetel ValidationData data Anda sebagai atribut pengguna yang Anda buat. ValidationData adalah informasi pengguna sementara yang Anda berikan untuk tujuan pemicu Lambda pra pendaftaran Anda.

clientMetadata

Satu atau lebih pasangan nilai-kunci yang dapat Anda berikan sebagai masukan kustom ke fungsi Lambda yang Anda tentukan untuk pemicu pra pendaftaran. Anda dapat meneruskan data ini ke fungsi Lambda Anda dengan menggunakan ClientMetadata parameter dalam API tindakan berikut: AdminCreateUser,, AdminRespondToAuthChallengeForgotPassword, dan. SignUp

Parameter respons pra pendaftaran

Dalam respons, Anda dapat mengatur autoConfirmUser ke true jika Anda ingin mengonfirmasi pengguna secara otomatis. Anda dapat mengatur autoVerifyEmail ke true untuk memverifikasi secara otomatis email pengguna. Anda dapat mengatur autoVerifyPhone ke true untuk memverifikasi secara otomatis nomor telepon pengguna.

catatan

Parameter responsautoVerifyPhone, autoVerifyEmail dan autoConfirmUser diabaikan oleh Amazon Cognito saat fungsi Lambda pra pendaftaran dipicu oleh. AdminCreateUser API

autoConfirmUser

Atur ke true untuk mengonfirmasi otomatis pengguna, atau false untuk sebaliknya.

autoVerifyEmail

Setel true untuk menetapkan alamat email pengguna yang mendaftar sebagai terverifikasi, atau false sebaliknya. Jika autoVerifyEmail diatur ke true, atribut email harus memiliki nilai yang valid dan bukan nol. Jika tidak, kesalahan akan terjadi dan pengguna tidak akan bisa menyelesaikan pendaftaran.

Jika email atribut dipilih sebagai alias, alias akan dibuat untuk alamat email pengguna saat autoVerifyEmail disetel. Jika alias dengan alamat email tersebut sudah ada, alias akan dipindahkan ke pengguna baru dan alamat email pengguna sebelumnya akan ditandai sebagai tidak diverifikasi. Untuk informasi selengkapnya, lihat Menyesuaikan atribut masuk.

autoVerifyPhone

Atur ke true untuk mengatur sebagai terverifikasi nomor telepon dari pengguna yang mendaftar, atau false untuk sebaliknya. Jika autoVerifyPhone diatur ke true, atribut phone_number harus memiliki nilai yang valid dan bukan nol. Jika tidak, kesalahan akan terjadi dan pengguna tidak akan bisa menyelesaikan pendaftaran.

Jika atribut phone_number dipilih sebagai alias, alias akan dibuat untuk nomor telepon pengguna ketika autoVerifyPhone diatur. Jika alias dengan nomor telepon tersebut sudah ada, alias akan dipindahkan ke pengguna baru dan nomor telepon pengguna sebelumnya akan ditandai sebagai tidak terverifikasi. Untuk informasi lebih lanjut, lihat Menyesuaikan atribut masuk.

Tutorial pendaftaran

Fungsi Lambda pra pendaftaran dipicu sebelum pengguna mendaftar. Lihat tutorial pendaftaran Amazon Cognito ini untuk JavaScript, Android, dan iOS.

Platform Tutorial
JavaScript Identitas SDK Mendaftar pengguna dengan JavaScript
Identitas Android SDK Mendaftar pengguna dengan Android
Identitas iOS SDK Mendaftar pengguna dengan iOS

Contoh pra pendaftaran: Konfirmasi otomatis pengguna dari domain terdaftar

Anda dapat menggunakan pemicu Lambda pra pendaftaran untuk menambahkan logika khusus yang memvalidasi pengguna baru yang mendaftar ke kumpulan pengguna Anda. Ini adalah contoh JavaScript program yang menunjukkan cara mendaftar pengguna baru. Ini memanggil pemicu Lambda pra-pendaftaran sebagai bagian dari otentikasi.

JavaScript
var attributeList = []; var dataEmail = { Name: "email", Value: "...", // your email here }; var dataPhoneNumber = { Name: "phone_number", Value: "...", // your phone number here with +country code and no delimiters in front }; var dataEmailDomain = { Name: "custom:domain", Value: "example.com", }; var attributeEmail = new AmazonCognitoIdentity.CognitoUserAttribute(dataEmail); var attributePhoneNumber = new AmazonCognitoIdentity.CognitoUserAttribute( dataPhoneNumber ); var attributeEmailDomain = new AmazonCognitoIdentity.CognitoUserAttribute( dataEmailDomain ); attributeList.push(attributeEmail); attributeList.push(attributePhoneNumber); attributeList.push(attributeEmailDomain); var cognitoUser; userPool.signUp( "username", "password", attributeList, null, function (err, result) { if (err) { alert(err); return; } cognitoUser = result.user; console.log("user name is " + cognitoUser.getUsername()); } );

Ini adalah sampel pemicu Lambda yang dipanggil tepat sebelum mendaftar dengan pemicu Lambda pra pendaftaran kolam pengguna. Ini menggunakan atribut kustom custom:domain untuk mengonfirmasi pengguna baru secara otomatis dari domain email tertentu. Setiap pengguna baru yang tidak berada dalam domain kustom akan ditambahkan ke kolam pengguna, tetapi tidak dikonfirmasi secara otomatis.

Node.js
exports.handler = (event, context, callback) => { // Set the user pool autoConfirmUser flag after validating the email domain event.response.autoConfirmUser = false; // Split the email address so we can compare domains var address = event.request.userAttributes.email.split("@"); // This example uses a custom attribute "custom:domain" if (event.request.userAttributes.hasOwnProperty("custom:domain")) { if (event.request.userAttributes["custom:domain"] === address[1]) { event.response.autoConfirmUser = true; } } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): # It sets the user pool autoConfirmUser flag after validating the email domain event['response']['autoConfirmUser'] = False # Split the email address so we can compare domains address = event['request']['userAttributes']['email'].split('@') # This example uses a custom attribute 'custom:domain' if 'custom:domain' in event['request']['userAttributes']: if event['request']['userAttributes']['custom:domain'] == address[1]: event['response']['autoConfirmUser'] = True # Return to Amazon Cognito return event

Amazon Cognito meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

JSON
{ "request": { "userAttributes": { "email": "testuser@example.com", "custom:domain": "example.com" } }, "response": {} }

Contoh pra pendaftaran: Konfirmasi otomatis dan verifikasi otomatis semua pengguna

Contoh ini mengonfirmasi semua pengguna dan mengatur atribut email dan phone_number pengguna menjadi terverifikasi jika atribut tersebut ada. Juga, jika aliasing diaktifkan, alias akan dibuat untuk phone_number dan email saat verifikasi otomatis diatur.

catatan

Jika alias dengan nomor telepon yang sama sudah ada, alias akan dipindahkan ke pengguna baru, dan phone_number pengguna sebelumnya akan ditandai sebagai belum diverifikasi. Hal yang sama berlaku untuk alamat email. Untuk mencegah hal ini terjadi, Anda dapat menggunakan kumpulan pengguna ListUsers APIuntuk melihat apakah ada pengguna yang sudah menggunakan nomor telepon atau alamat email pengguna baru sebagai alias.

Node.js
const handler = async (event) => { // Confirm the user event.response.autoConfirmUser = true; // Set the email as verified if it is in the request if (Object.hasOwn(event.request.userAttributes, "email")) { event.response.autoVerifyEmail = true; } // Set the phone number as verified if it is in the request if (Object.hasOwn(event.request.userAttributes, "phone_number")) { event.response.autoVerifyPhone = true; } return event; }; export { handler };
Python
def lambda_handler(event, context): # Confirm the user event['response']['autoConfirmUser'] = True # Set the email as verified if it is in the request if 'email' in event['request']['userAttributes']: event['response']['autoVerifyEmail'] = True # Set the phone number as verified if it is in the request if 'phone_number' in event['request']['userAttributes']: event['response']['autoVerifyPhone'] = True # Return to Amazon Cognito return event

Amazon Cognito meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

JSON
{ "request": { "userAttributes": { "email": "user@example.com", "phone_number": "+12065550100" } }, "response": {} }

Contoh pra pendaftaran: Tolak pendaftaran jika nama pengguna memiliki kurang dari lima karakter

Contoh ini memeriksa panjang nama pengguna dalam permintaan pendaftaran. Contoh mengembalikan kesalahan jika pengguna telah memasukkan nama yang panjangnya kurang dari lima karakter.

Node.js
exports.handler = (event, context, callback) => { // Impose a condition that the minimum length of the username is 5 is imposed on all user pools. if (event.userName.length < 5) { var error = new Error("Cannot register users with username less than the minimum length of 5"); // Return error to Amazon Cognito callback(error, event); } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): if len(event['userName']) < 5: raise Exception("Cannot register users with username less than the minimum length of 5") # Return to Amazon Cognito return event

Amazon Cognito meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

JSON
{ "userName": "rroe", "response": {} }