Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tentukan tantangan Auth pemicu Lambda
Pemicu tantangan autentikasi definisi adalah fungsi Lambda yang mempertahankan urutan tantangan dalam alur otentikasi khusus. Ini menyatakan keberhasilan atau kegagalan urutan tantangan, dan menetapkan tantangan berikutnya jika urutannya belum selesai.
- Menentukan tantangan autentikasi
-
Amazon Cognito memanggil pemicu ini untuk memulai alur autentikasi kustom.
Permintaan untuk pemicu Lambda ini berisi. session
session
Parameter adalah array yang berisi semua tantangan yang disajikan kepada pengguna dalam proses otentikasi saat ini. Permintaan juga mencakup hasil yang sesuai. session
Array menyimpan detail tantangan (ChallengeResult
) dalam urutan kronologis. Tantangan tersebut session[0]
merupakan tantangan pertama yang diterima pengguna.
Anda dapat meminta Amazon Cognito memverifikasi kata sandi pengguna sebelum mengeluarkan tantangan kustom Anda. Setiap pemicu Lambda yang terkait dalam kategori Autentikasi kuota tingkat permintaan akan berjalan saat Anda melakukan autentikasi dalam alur tantangan khusus. SRP Berikut adalah gambaran umum prosesnya:
-
Aplikasi Anda memulai proses masuk dengan memanggil
InitiateAuth
atau menggunakanAdminInitiateAuth
peta.AuthParameters
Parameter harus mencakupCHALLENGE_NAME: SRP_A,
dan nilai untukSRP_A
danUSERNAME
. -
Amazon Cognito memanggil pemicu Lambda tantangan autentikasi definisi Anda dengan sesi awal yang berisi dan.
challengeName: SRP_A
challengeResult: true
-
Setelah menerima masukan tersebut, fungsi Lambda Anda merespons dengan
challengeName: PASSWORD_VERIFIER
,issueTokens: false
,failAuthentication: false
. -
Jika verifikasi kata sandi berhasil, Amazon Cognito memanggil fungsi Lambda Anda lagi dengan sesi baru yang berisi dan.
challengeName: PASSWORD_VERIFIER
challengeResult: true
-
Untuk memulai tantangan kustom Anda, fungsi Lambda Anda merespons
challengeName: CUSTOM_CHALLENGE
denganissueTokens: false
,, dan.failAuthentication: false
Jika Anda tidak ingin memulai alur autentikasi kustom dengan verifikasi kata sandi, Anda dapat memulai masuk dengan petaAuthParameters
termasukCHALLENGE_NAME: CUSTOM_CHALLENGE
. -
Putaran tantangan berulang sampai semua tantangan terjawab.
Berikut ini adalah contoh InitiateAuth
permintaan awal yang mendahului otentikasi kustom dengan alur. SRP
{ "AuthFlow": "CUSTOM_AUTH", "ClientId": "1example23456789", "AuthParameters": { "CHALLENGE_NAME": "SRP_A", "USERNAME": "testuser", "SRP_A": "[SRP_A]", "SECRET_HASH": "[secret hash]" } }
Tentukan parameter pemicu Lambda tantangan Auth
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.
Tentukan parameter permintaan tantangan Auth
Saat Amazon Cognito memanggil fungsi Lambda Anda, Amazon Cognito menyediakan parameter berikut:
- userAttributes
-
Satu atau lebih pasangan nama-nilai yang mewakili atribut pengguna.
- userNotFound
-
Boolean yang diisi Amazon Cognito
PreventUserExistenceErrors
saat disetelENABLED
untuk klien kumpulan pengguna Anda. Nilaitrue
berarti bahwa id pengguna (nama pengguna, alamat email, dan detail lainnya) tidak cocok dengan pengguna yang ada. BilaPreventUserExistenceErrors
disetel keENABLED
, layanan tidak menginformasikan aplikasi pengguna yang tidak ada. Kami menyarankan agar fungsi Lambda Anda mempertahankan pengalaman pengguna yang sama dan memperhitungkan latensi. Dengan cara ini, pemanggil tidak dapat mendeteksi perilaku yang berbeda ketika pengguna ada atau tidak ada. - sesi
-
Array
ChallengeResult
elemen. Masing-masing berisi elemen-elemen berikut:- challengeName
-
Salah satu jenis tantangan berikut:
CUSTOM_CHALLENGE
,SRP_A
,PASSWORD_VERIFIER
,SMS_MFA
,EMAIL_OTP
SOFTWARE_TOKEN_MFA
,DEVICE_SRP_AUTH
,DEVICE_PASSWORD_VERIFIER
, atauADMIN_NO_SRP_AUTH
.Saat fungsi define auth challenge Anda mengeluarkan
PASSWORD_VERIFIER
tantangan bagi pengguna yang telah menyiapkan otentikasi multifaktor, Amazon Cognito menindaklanjutinya dengan,, atauSMS_MFA
tantangan.EMAIL_OTP
SOFTWARE_TOKEN_MFA
Ini adalah petunjuk untuk kode otentikasi multi-faktor. Dalam fungsi Anda, sertakan penanganan untuk acara masukan dariSMS_MFA
EMAIL_OTP
,, danSOFTWARE_TOKEN_MFA
tantangan. Anda tidak perlu memanggil MFA tantangan apa pun dalam fungsi define auth challenge Anda.penting
Saat fungsi Anda menentukan apakah pengguna telah berhasil diautentikasi dan Anda harus mengeluarkannya token, selalu periksa
challengeName
fungsi define auth challenge Anda dan verifikasi apakah itu cocok dengan nilai yang diharapkan. - challengeResult
-
Atur ke
true
jika pengguna berhasil menyelesaikan tantangan, ataufalse
untuk sebaliknya. - challengeMetadata
-
Nama Anda untuk tantangan kustom. Digunakan hanya jika
challengeName
adalahCUSTOM_CHALLENGE
.
- clientMetadata
-
Satu atau lebih pasangan nilai-kunci yang dapat Anda berikan sebagai masukan kustom ke fungsi Lambda yang Anda tentukan untuk pemicu menentukan tantangan autentikasi. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan
ClientMetadata
parameter dalam AdminRespondToAuthChallengedan RespondToAuthChallengeAPIoperasi. Permintaan yang memanggil fungsi define auth challenge tidak menyertakan data yang diteruskan dalam ClientMetadata parameter AdminInitiateAuthdan InitiateAuthAPIoperasi.
Tentukan parameter respons tantangan Auth
Dalam respons, Anda dapat mengembalikan tahap berikutnya dari proses autentikasi.
- challengeName
-
String yang berisi nama tantangan berikutnya. Jika Anda ingin menyajikan tantangan baru bagi pengguna Anda, tentukan nama tantangan di sini.
- issueTokens
-
Jika Anda menentukan bahwa pengguna telah menyelesaikan tantangan otentikasi dengan cukup, atur ke
true
. Jika pengguna belum cukup memenuhi tantangan, atur kefalse
. - failAuthentication
-
Jika Anda ingin mengakhiri proses otentikasi saat ini, atur ke
true
. Untuk melanjutkan proses otentikasi saat ini, atur kefalse
.
Tentukan contoh tantangan Auth
Contoh ini mendefinisikan serangkaian tantangan untuk otentikasi dan mengeluarkan token hanya jika pengguna telah menyelesaikan semua tantangan dengan sukses.