View a markdown version of this page

Mengelola metode otentikasi di AWS SDK - Amazon Cognito

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

Mengelola metode otentikasi di AWS SDK

Pengguna di kumpulan pengguna Amazon Cognito dapat masuk dengan berbagai opsi masuk awal, atau faktor. Untuk beberapa faktor, pengguna dapat menindaklanjuti dengan otentikasi multi-faktor (MFA). Faktor-faktor pertama ini termasuk nama pengguna dan kata sandi, kata sandi satu kali, kunci sandi, dan otentikasi khusus. Untuk informasi selengkapnya, lihat Alur otentikasi. Jika aplikasi Anda memiliki komponen UI bawaan dan mengimpor modul AWS SDK, Anda harus membangun logika aplikasi untuk autentikasi. Anda harus memilih salah satu dari dua metode utama dan dari metode itu, mekanisme otentikasi yang ingin Anda terapkan.

Anda dapat menerapkan otentikasi berbasis klien di mana aplikasi Anda, atau klien, mendeklarasikan jenis otentikasi di muka. Opsi Anda yang lain adalah autentikasi berbasis pilihan, di mana aplikasi Anda mengumpulkan nama pengguna dan meminta jenis autentikasi yang tersedia untuk pengguna. Anda dapat menerapkan model ini bersama-sama dalam aplikasi yang sama atau membagi antara klien aplikasi, sesuai dengan kebutuhan Anda. Setiap metode memiliki fitur yang unik untuk itu, misalnya otentikasi kustom dalam otentikasi berbasis klien dan tanpa kata sandi berbasis pilihan.

Dalam aplikasi yang dibuat khusus yang melakukan autentikasi dengan implementasi AWS SDK dari API kumpulan pengguna, Anda harus menyusun permintaan API agar selaras dengan konfigurasi kumpulan pengguna, konfigurasi klien aplikasi, dan preferensi sisi klien. InitiateAuthSesi yang dimulai dengan AuthFlow otentikasi berbasis pilihan USER_AUTH dimulai. Amazon Cognito merespons API Anda dengan tantangan metode otentikasi yang disukai atau daftar pilihan. Sesi yang dimulai dengan AuthFlow langsung CUSTOM_AUTH masuk ke otentikasi khusus dengan pemicu Lambda.

Beberapa metode otentikasi ditetapkan ke salah satu dari dua jenis aliran, dan beberapa metode tersedia di keduanya.

Choice-based otentikasi

Aplikasi Anda dapat meminta metode otentikasi berikut dalam otentikasi berbasis pilihan. Deklarasikan opsi-opsi ini dalam PREFERRED_CHALLENGE parameter InitiateAuthatau AdminInitiateAuth, atau dalam ChallengeName parameter atau. RespondToAuthChallengeAdminRespondToAuthChallenge

penting

Choice-based login memiliki dua prasyarat. Klien aplikasi Anda harus mengaktifkan alur ALLOW_USER_AUTH autentikasi, dan metode tanpa kata sandi dan kunci sandi (EMAIL_OTP,SMS_OTP,WEB_AUTHN) memerlukan kumpulan pengguna pada paket fitur Essentials atau Plus —metode tersebut tidak tersedia di tingkat Lite. PASSWORD(termasuk SRP) tersedia di semua paket fitur. Jika metode berbasis pilihan tidak muncul untuk pengguna Anda, konfirmasikan alur aplikasi-klien dan paket fitur sebelum pemecahan masalah lebih lanjut.

Untuk meninjau opsi ini dalam konteks API mereka, lihat ChallengeName di RespondToAuthChallenge.

Choice-based login mengeluarkan tantangan sebagai tanggapan atas permintaan awal Anda. Tantangan ini memverifikasi bahwa opsi yang diminta tersedia, atau menyediakan daftar pilihan yang tersedia. Aplikasi Anda dapat menampilkan pilihan ini kepada pengguna, yang kemudian memasukkan kredensyal untuk metode login pilihan mereka dan melanjutkan dengan otentikasi dalam tanggapan tantangan.

Anda memiliki opsi berbasis pilihan berikut dalam alur otentikasi Anda. Semua permintaan jenis ini mengharuskan aplikasi Anda terlebih dahulu mengumpulkan nama pengguna atau mengambilnya dari cache.

  1. Minta opsi AuthParameters dengan USERNAME hanya. Amazon Cognito mengembalikan tantangan. SELECT_CHALLENGE Dari sana, aplikasi Anda dapat meminta pengguna untuk memilih tantangan dan mengembalikan respons ini ke kumpulan pengguna Anda.

  2. Minta tantangan pilihan dengan AuthParameters of PREFERRED_CHALLENGE dan parameter tantangan pilihan Anda, jika ada. Misalnya, jika Anda meminta PREFERRED_CHALLENGE dariPASSWORD_SRP, Anda juga harus menyertakanSRP_A. Jika pengguna, kumpulan pengguna, dan klien aplikasi Anda semuanya dikonfigurasi untuk tantangan yang diinginkan, Amazon Cognito merespons dengan langkah berikutnya dalam tantangan tersebut, misalnya PASSWORD_VERIFIER dalam PASSWORD_SRP alur atau CodeDeliveryDetailsdi aliran dan. EMAIL_OTP SMS_OTP Jika tantangan yang disukai tidak tersedia, Amazon Cognito merespons dengan SELECT_CHALLENGE dan daftar tantangan yang tersedia.

  3. Masuk pengguna terlebih dahulu, lalu minta opsi otentikasi berbasis pilihan mereka. GetUserAuthFactorsPermintaan dengan token akses pengguna yang masuk mengembalikan faktor otentikasi berbasis pilihan yang tersedia dan pengaturan MFA mereka. Dengan opsi ini, pengguna dapat masuk dengan nama pengguna dan kata sandi terlebih dahulu, kemudian mengaktifkan bentuk otentikasi yang berbeda. Anda juga dapat menggunakan operasi ini untuk memeriksa opsi tambahan bagi pengguna yang telah masuk dengan tantangan yang diinginkan.

Untuk mengonfigurasi klien aplikasi Anda untuk autentikasi berbasis pilihan, tambahkan alur autentikasi yang ALLOW_USER_AUTH diizinkan. Anda juga harus memilih faktor berbasis pilihan yang ingin Anda izinkan dalam konfigurasi kumpulan pengguna Anda. Proses berikut menggambarkan bagaimana memilih faktor otentikasi berbasis pilihan.

Amazon Cognito console
Untuk mengonfigurasi opsi otentikasi berbasis pilihan di kumpulan pengguna
  1. Masuk ke AWS dan navigasikan ke konsol kumpulan pengguna Amazon Cognito. Pilih kumpulan pengguna atau buat yang baru.

  2. Dalam konfigurasi kumpulan pengguna Anda, pilih Sign-inmenu. Temukan Opsi untuk login berbasis pilihan dan pilih Edit.

  3. Opsi Kata Sandi selalu tersedia. Ini termasuk PASSWORD dan PASSWORD_SRP mengalir. Pilih Pilihan tambahan yang ingin Anda tambahkan ke opsi pengguna Anda. Anda dapat menambahkan Passkey forWEB_AUTHN, Pesan email kata sandi satu kali untukEMAIL_OTP, dan pesan SMS kata sandi satu kali untuk. SMS_OTP

  4. Pilih Simpan perubahan.

API/SDK

Badan sebagian CreateUserPoolatau UpdateUserPoolpermintaan berikut mengonfigurasi semua opsi yang tersedia untuk otentikasi berbasis pilihan.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN", "EMAIL_OTP", "SMS_OTP" ] } },

Client-based otentikasi

Client-based otentikasi mendukung alur otentikasi berikut. Deklarasikan opsi ini dalam AuthFlow parameter atau. InitiateAuthAdminInitiateAuth

  1. USER_PASSWORD_AUTH dan ADMIN_USER_PASSWORD_AUTH

    Sign-in dengan kata sandi persisten

    MFA setelah masuk

    Alur otentikasi ini setara dengan PASSWORD otentikasi berbasis pilihan.

  2. USER_SRP_AUTH

    Sign-in dengan kata sandi persisten dan muatan aman

    MFA setelah masuk

    Alur otentikasi ini setara dengan PASSWORD_SRP otentikasi berbasis pilihan.

  3. REFRESH_TOKEN_AUTH

    Segarkan token

    Alur otentikasi ini hanya tersedia dalam otentikasi berbasis klien.

  4. CUSTOM_AUTH

    Autentikasi kustom

    Alur otentikasi ini hanya tersedia dalam otentikasi berbasis klien.

Dengan autentikasi berbasis klien, Amazon Cognito mengasumsikan bahwa Anda telah menentukan cara pengguna Anda ingin mengautentikasi sebelum mereka memulai alur otentikasi. Logika penentuan faktor masuk yang ingin diberikan pengguna harus ditentukan dengan pengaturan default atau permintaan khusus, lalu dideklarasikan dalam permintaan pertama ke kumpulan pengguna Anda. InitiateAuthPermintaan mendeklarasikan login AuthFlow yang secara langsung sesuai dengan salah satu opsi yang tercantum, misalnya. USER_SRP_AUTH Dengan deklarasi ini, permintaan juga mencakup parameter untuk memulai otentikasi, misalnyaUSERNAME,SECRET_HASH, danSRP_A. Amazon Cognito mungkin menindaklanjuti permintaan ini dengan tantangan tambahan seperti PASSWORD_VERIFIER untuk SRP atau SOFTWARE_TOKEN_MFA untuk masuk kata sandi dengan TOTP MFA.

Untuk mengonfigurasi klien aplikasi Anda untuk autentikasi berbasis klien, tambahkan alur autentikasi apa pun selain alur autentikasi yang ALLOW_USER_AUTH diizinkan. Contohnya adalahALLOW_USER_PASSWORD_AUTH,ALLOW_CUSTOM_AUTH,ALLOW_REFRESH_TOKEN_AUTH. Untuk mengizinkan alur otentikasi berbasis klien, tidak diperlukan konfigurasi kumpulan pengguna tambahan.

Step-up otentikasi dengan aliran USER_AUTH

Anda meminta otentikasi step-up dalam USER_AUTH alur yang ada dengan InitiateAuthdan RespondToAuthChallengeoperasi. Tidak ada operasi API baru. Operasi sisi server yang sesuai, AdminInitiateAuthdan AdminRespondToAuthChallenge, mendukung parameter dan perilaku peningkatan yang sama, dan juga AdminInitiateAuth dapat secara opsional mengambil token akses. Alur ini berfungsi baik ketika pengguna memiliki token ID yang ada dan ketika pengguna mengautentikasi ke level target untuk pertama kalinya. Untuk informasi lebih lanjut tentang aliran, lihatContoh sesi otentikasi.

Untuk informasi selengkapnya tentang tingkat ACR dan nilai AMR, lihat. Tingkat otentikasi dengan klaim ACR dan AMR

catatan

Step-up otentikasi memerlukan paket fitur Essentials atau Plus.

Anda meneruskan parameter step-up di AuthParameters peta permintaan InitiateAuth (atauAdminInitiateAuth) Anda: yang baru TARGET_ACR_VALUES danMAX_AGE, bersama dengan yang adaUSERNAME,ACCESS_TOKEN, danPREFERRED_CHALLENGE. Untuk definisi dan batasan setiap parameter, lihat InitiateAuthdan AdminInitiateAuthdi Referensi API kumpulan pengguna Amazon Cognito.

Tabel berikut menjelaskan bagaimana Amazon Cognito merespons kombinasi parameter ini.

USER_AUTH meningkatkan perilaku otentikasi
Parameter Perilaku
TARGET_ACR_VALUESdanACCESS_TOKEN, dengan MAX_AGE puas Amazon Cognito meningkatkan pengguna dari faktor token saat ini ke tingkat kepuasan prioritas tertinggi.
TARGET_ACR_VALUESdanACCESS_TOKEN, dengan MAX_AGE tidak puas Amazon Cognito mengautentikasi pengguna dari awal menuju level target.
TARGET_ACR_VALUEStanpa ACCESS_TOKEN Amazon Cognito mengautentikasi pengguna dari awal menuju level target.
Tidak ada parameter USER_AUTHAliran berperilaku seperti halnya tanpa otentikasi step-up.

Ingatlah perilaku berikut saat Anda mendesain alur autentikasi step-up.

  • Step-up otentikasi adalah semua-atau-tidak sama sekali. Jika mencapai level target memerlukan beberapa tantangan, misalnya kata sandi dan TOTP untuk level 4, dan pengguna gagal dalam tantangan apa pun, upaya peningkatan gagal sepenuhnya. Amazon Cognito tidak mengeluarkan token perantara.

  • Jika token yang disajikan sudah memenuhi atau melebihi level yang diminta, Amazon Cognito mengembalikan kesalahan alih-alih mengeluarkan token baru. Ini mencegah aplikasi menggunakan otentikasi step-up sebagai mekanisme penyegaran token.

  • Pengguna harus sudah memiliki faktor untuk memenuhi tingkat yang diminta. Jika pengguna tidak memiliki faktor yang dikonfigurasi untuk memenuhi tingkat target yang diminta, Amazon Cognito mengembalikan kesalahan. Step-upotentikasi tidak meminta pengguna untuk mengatur faktor baru.

  • MFA adalah lantai. Jika pengaturan MFA pengguna atau kumpulan pengguna memerlukan MFA, proses masuk awal masih memberlakukan dan meminta tantangan MFA bahkan ketika level target lebih rendah dan sebaliknya tidak memerlukan MFA. MFA yang diminta oleh perlindungan ancaman (fitur keamanan lanjutan) juga diberlakukan pada proses masuk awal, bahkan ketika level ACR target yang diminta tidak memerlukan MFA. TARGET_ACR_VALUEStidak dapat menekan prompt MFA yang diperlukan. Paling-paling, target dapat memengaruhi mana dari beberapa faktor MFA yang diaktifkan yang diminta Amazon Cognito. Jika permintaan peningkatan menargetkan level yang lebih rendah, misalnya level 1, untuk pengguna yang diharuskan menggunakan MFA, Amazon Cognito secara diam-diam memberlakukan MFA yang diperlukan. Ini meningkatkan pengguna dan tidak mengembalikan kesalahan.

Meminta otentikasi step-up dengan TARGET_ACR_VALUES memerlukan paket fitur Essentials atau Plus. Untuk informasi selengkapnya, lihat Persyaratan rencana fitur.