

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

# Menggunakan fitur keamanan kumpulan pengguna Amazon Cognito
<a name="managing-security"></a>

Anda mungkin ingin mengamankan aplikasi Anda dari gangguan jaringan, menebak kata sandi, peniruan identitas pengguna, dan pendaftaran dan masuk berbahaya. Konfigurasi fitur keamanan kumpulan pengguna Amazon Cognito Anda dapat menjadi komponen kunci dalam arsitektur keamanan Anda. Keamanan aplikasi Anda adalah *tanggung jawab Pelanggan “Keamanan di cloud” seperti yang* dijelaskan dalam [Model Tanggung Jawab AWS Bersama](https://aws.amazon.com/compliance/shared-responsibility-model/). Alat dalam bagian ini berkontribusi pada kemampuan desain keamanan aplikasi Anda agar sejalan dengan tujuan ini.

Keputusan penting yang harus Anda buat saat mengonfigurasi kumpulan pengguna adalah apakah akan mengizinkan pendaftaran dan masuk publik. Beberapa opsi kumpulan pengguna seperti klien rahasia, pembuatan administratif dan konfirmasi pengguna, dan kumpulan pengguna tanpa domain, tunduk pada tingkat yang lebih kecil terhadap serangan melalui internet. Namun, kasus penggunaan umum adalah klien publik yang menerima pendaftaran dari siapa pun di internet dan mengirim semua operasi langsung ke kumpulan pengguna Anda. Dalam konfigurasi apa pun, tetapi terutama dalam hal konfigurasi publik ini, kami menyarankan Anda merencanakan dan menyebarkan kumpulan pengguna Anda dengan mempertimbangkan fitur keamanan. Keamanan yang tidak memadai juga dapat memengaruhi AWS tagihan Anda ketika sumber yang tidak diinginkan membuat pengguna aktif baru atau mencoba mengeksploitasi pengguna yang sudah ada.

MFA dan perlindungan ancaman berlaku untuk pengguna [lokal](cognito-terms.md#terms-localuser). Pihak ketiga IdPs bertanggung jawab atas postur keamanan [pengguna federasi](cognito-terms.md#terms-federateduser).Fitur keamanan kumpulan pengguna

**Autentikasi multi-faktor (MFA)**  
Minta kode yang dikirim oleh kumpulan pengguna Anda melalui email (dengan paket fitur Essentials atau Plus) atau pesan SMS, atau dari aplikasi autentikator, untuk mengonfirmasi login kumpulan pengguna.

**Perlindungan ancaman**  
Pantau login untuk indikator risiko dan terapkan MFA atau blokir masuk. Tambahkan klaim dan cakupan khusus untuk mengakses token. Kirim kode MFA melalui email.

**AWS WAF web ACLs**  
Periksa lalu lintas masuk ke [titik akhir kumpulan pengguna dan API otentikasi](authentication-flows-public-server-side.md#user-pools-API-operations) untuk aktivitas yang tidak diinginkan di lapisan jaringan dan aplikasi.

**Kepekaan kasus**  
Mencegah pembuatan pengguna yang alamat email atau nama pengguna yang disukai identik dengan pengguna lain kecuali untuk kasus karakter.

**Perlindungan penghapusan**  
Cegah sistem otomatis menghapus kumpulan pengguna Anda secara tidak sengaja. Memerlukan konfirmasi tambahan penghapusan kumpulan pengguna di. Konsol Manajemen AWS

**Kesalahan keberadaan pengguna**  
Lindungi dari pengungkapan nama pengguna dan alias yang ada di kumpulan pengguna Anda. Kembalikan kesalahan umum sebagai respons terhadap otentikasi yang gagal, apakah nama pengguna valid atau tidak.

**Topics**
+ [Menambahkan MFA ke kumpulan pengguna](user-pool-settings-mfa.md)
+ [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md)
+ [Kaitkan ACL AWS WAF web dengan kumpulan pengguna](user-pool-waf.md)
+ [Sensitivitas casing kumpulan pengguna](user-pool-case-sensitivity.md)
+ [Perlindungan penghapusan kumpulan pengguna](user-pool-settings-deletion-protection.md)
+ [Mengelola respons kesalahan keberadaan pengguna](cognito-user-pool-managing-errors.md)

# Menambahkan MFA ke kumpulan pengguna
<a name="user-pool-settings-mfa"></a>

MFA menambahkan *sesuatu yang Anda memiliki* faktor otentikasi ke *hal awal yang Anda tahu* faktor yang biasanya merupakan nama pengguna dan kata sandi. Anda dapat memilih pesan teks SMS, pesan email, atau kata sandi satu kali berbasis waktu (TOTP) sebagai faktor tambahan untuk masuk ke pengguna Anda yang memiliki kata sandi sebagai faktor otentikasi utama mereka.

Otentikasi multi-faktor (MFA) meningkatkan keamanan bagi [pengguna lokal](cognito-terms.md#terms-localuser) di aplikasi Anda. Dalam kasus [pengguna federasi](cognito-terms.md#terms-federateduser), Amazon Cognito mendelegasikan semua proses otentikasi ke IDP dan tidak menawarkan faktor otentikasi tambahan kepada mereka.

**catatan**  
Pertama kali pengguna baru masuk ke aplikasi Anda, Amazon Cognito mengeluarkan token OAuth 2.0, meskipun kumpulan pengguna Anda memerlukan MFA. Faktor otentikasi kedua saat pengguna Anda masuk untuk pertama kalinya adalah konfirmasi mereka atas pesan verifikasi yang dikirimkan Amazon Cognito kepada mereka. Jika kumpulan pengguna Anda memerlukan MFA, Amazon Cognito meminta pengguna Anda untuk mendaftarkan faktor masuk tambahan untuk digunakan selama setiap upaya masuk setelah yang pertama.

Dengan autentikasi adaptif, Anda dapat mengonfigurasi kumpulan pengguna agar memerlukan faktor otentikasi tambahan sebagai respons terhadap tingkat risiko yang meningkat. Untuk menambahkan autentikasi adaptif ke kolam pengguna Anda, lihat [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md).

Saat Anda mengatur MFA `required` untuk kumpulan pengguna, semua pengguna harus menyelesaikan MFA untuk masuk. Untuk masuk, setiap pengguna harus menyiapkan setidaknya satu faktor MFA. Ketika MFA diperlukan, Anda harus menyertakan pengaturan MFA dalam orientasi pengguna sehingga kumpulan pengguna Anda mengizinkan mereka untuk masuk.

Login terkelola meminta pengguna untuk mengatur MFA saat Anda mengatur MFA agar diperlukan. Saat Anda menetapkan MFA menjadi opsional di kumpulan pengguna Anda, login terkelola tidak meminta pengguna. Untuk bekerja dengan MFA opsional, Anda harus membuat antarmuka di aplikasi yang meminta pengguna untuk memilih apakah mereka ingin menyiapkan MFA, lalu memandu mereka melalui input API untuk memverifikasi faktor masuk tambahan mereka.

**Topics**
+ [Hal-hal yang perlu diketahui tentang MFA kumpulan pengguna](#user-pool-settings-mfa-prerequisites)
+ [Preferensi MFA pengguna](#user-pool-settings-mfa-preferences)
+ [Rincian logika MFA saat runtime pengguna](#user-pool-settings-mfa-user-outcomes)
+ [Konfigurasikan kumpulan pengguna untuk otentikasi multi-faktor](#user-pool-configuring-mfa)
+ [SMS dan pesan email MFA](user-pool-settings-mfa-sms-email-message.md)
+ [Token perangkat lunak TOTP MFA](user-pool-settings-mfa-totp.md)

## Hal-hal yang perlu diketahui tentang MFA kumpulan pengguna
<a name="user-pool-settings-mfa-prerequisites"></a>

Sebelum Anda mengatur MFA, pertimbangkan hal berikut:
+ Pengguna dapat memiliki MFA *atau* masuk dengan faktor tanpa kata sandi, dengan satu pengecualian: kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat Anda menyetelnya di kumpulan pengguna. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` `WebAuthnConfiguration`
  + Anda tidak dapat menyetel MFA ke required di kumpulan pengguna yang mendukung kata sandi [satu kali](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).
  + Anda tidak dapat menambahkan `EMAIL_OTP` atau `SMS_OTP` ke `AllowedFirstAuthFactors` saat MFA diperlukan di kumpulan pengguna Anda. Anda dapat menambahkan `WEB_AUTHN` kapan `FactorConfiguration` diatur ke`MULTI_FACTOR_WITH_USER_VERIFICATION`.
  + [Masuk berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) hanya penawaran `PASSWORD` dan `PASSWORD_SRP` faktor di semua klien aplikasi saat MFA diperlukan di kumpulan pengguna. Untuk informasi selengkapnya tentang alur nama pengguna-kata sandi, lihat [Masuk dengan kata sandi persisten](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) dan [Masuk dengan kata sandi persisten dan muatan aman](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) di bagian **Autentikasi panduan** ini.
  + Di kumpulan pengguna di mana MFA bersifat opsional, pengguna yang telah mengonfigurasi faktor MFA hanya dapat masuk dengan alur otentikasi nama pengguna kata sandi dalam login berbasis pilihan. Pengguna ini memenuhi syarat untuk semua alur [masuk berbasis klien](authentication-flows-selection-sdk.md#authentication-flows-selection-client).

  Tabel berikut menjelaskan pengaruh pengaturan MFA kumpulan pengguna dan konfigurasi pengguna faktor MFA pada kemampuan pengguna untuk masuk dengan faktor tanpa kata sandi.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/user-pool-settings-mfa.html)
+ Metode MFA pilihan pengguna memengaruhi metode yang dapat mereka gunakan untuk memulihkan kata sandi mereka. Pengguna yang MFA pilihannya adalah melalui pesan email tidak dapat menerima kode pengaturan ulang kata sandi melalui email. Pengguna yang MFA pilihannya melalui pesan SMS tidak dapat menerima kode pengaturan ulang kata sandi melalui SMS.

  Pengaturan [pemulihan kata sandi](managing-users-passwords.md#user-pool-password-reset-and-recovery) Anda harus menyediakan opsi alternatif ketika pengguna tidak memenuhi syarat untuk metode pengaturan ulang kata sandi pilihan Anda. Misalnya, mekanisme pemulihan Anda mungkin memiliki email sebagai prioritas pertama dan email MFA mungkin menjadi opsi di kumpulan pengguna Anda. Dalam hal ini, tambahkan pemulihan akun pesan SMS sebagai opsi kedua atau gunakan operasi API administratif untuk mengatur ulang kata sandi bagi pengguna tersebut.

  Amazon Cognito membalas permintaan pengaturan ulang kata sandi dari pengguna yang tidak memiliki metode pemulihan yang valid dengan respons kesalahan. `InvalidParameterException`

  Contoh badan permintaan untuk [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_Examples)menggambarkan `AccountRecoverySetting` tempat pengguna dapat kembali ke pemulihan melalui pesan SMS ketika pengaturan ulang kata sandi pesan email tidak tersedia.
+ Pengguna tidak dapat menerima kode MFA dan pengaturan ulang kata sandi di alamat email atau nomor telepon yang sama. Jika mereka menggunakan kata sandi satu kali (OTPs) dari pesan email untuk MFA, mereka harus menggunakan pesan SMS untuk pemulihan akun. Jika mereka menggunakan OTPs dari pesan SMS untuk MFA, mereka harus menggunakan pesan email untuk pemulihan akun. Di kumpulan pengguna dengan MFA, pengguna mungkin tidak dapat menyelesaikan pemulihan kata sandi swalayan jika mereka memiliki atribut untuk alamat email mereka tetapi tidak ada nomor telepon, atau nomor telepon mereka tetapi tidak ada alamat email.

  Untuk mencegah status di mana pengguna tidak dapat mengatur ulang kata sandi mereka di kumpulan pengguna dengan konfigurasi ini, setel `phone_number` [atribut `email` dan sesuai kebutuhan](user-pool-settings-attributes.md). Sebagai alternatif, Anda dapat mengatur proses yang selalu mengumpulkan dan mengatur atribut tersebut saat pengguna mendaftar atau ketika administrator membuat profil pengguna. *Ketika pengguna memiliki kedua atribut, Amazon Cognito secara otomatis mengirimkan kode reset kata sandi ke tujuan yang bukan faktor MFA pengguna.*
+ Saat Anda mengaktifkan MFA di kumpulan pengguna dan memilih **pesan SMS atau Pesan** **Email** sebagai faktor kedua, Anda dapat mengirim pesan ke nomor telepon atau atribut email yang belum Anda verifikasi di Amazon Cognito. Setelah pengguna Anda menyelesaikan MFA, Amazon Cognito menyetel `phone_number_verified` atribut atau ke. `email_verified` `true`
+ Setelah lima upaya gagal untuk menyajikan kode MFA, Amazon Cognito memulai proses penguncian batas waktu eksponensial yang dijelaskan di. [Perilaku penguncian untuk upaya masuk yang gagal](authentication.md#authentication-flow-lockout-behavior)
+ Jika akun Anda berada di kotak pasir SMS di Wilayah AWS yang berisi sumber daya Amazon Simple Notification Service (Amazon SNS) untuk kumpulan pengguna Anda, Anda harus memverifikasi nomor telepon di Amazon SNS sebelum dapat mengirim pesan SMS. Untuk informasi selengkapnya, lihat [Pengaturan pesan SMS untuk kolam pengguna Amazon Cognito](user-pool-sms-settings.md).
+ Untuk mengubah status MFA pengguna sebagai respons terhadap peristiwa yang terdeteksi dengan perlindungan ancaman, aktifkan MFA dan atur sebagai opsional di konsol kumpulan pengguna Amazon Cognito. Untuk informasi selengkapnya, lihat [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md).
+ Pesan email dan SMS mengharuskan pengguna Anda memiliki atribut alamat email dan nomor telepon masing-masing. Anda dapat mengatur `email` atau `phone_number` sebagai atribut yang diperlukan di kumpulan pengguna Anda. Dalam hal ini, pengguna tidak dapat menyelesaikan pendaftaran kecuali mereka memberikan nomor telepon. Jika Anda tidak menetapkan atribut ini seperti yang diperlukan tetapi ingin melakukan email atau pesan SMS MFA, Anda meminta pengguna untuk alamat email atau nomor telepon mereka ketika mereka mendaftar. Sebagai praktik terbaik, konfigurasikan kumpulan pengguna Anda untuk mengirim pesan kepada pengguna secara otomatis untuk [memverifikasi atribut ini](signing-up-users-in-your-app.md).

  Amazon Cognito menghitung nomor telepon atau alamat email sebagai terverifikasi jika pengguna telah berhasil menerima kode sementara melalui SMS atau pesan email dan mengembalikan kode itu dalam permintaan API. [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) Sebagai alternatif, tim Anda dapat mengatur nomor telepon dan menandainya sebagai terverifikasi dengan aplikasi administratif yang melakukan permintaan [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Jika Anda telah menetapkan MFA agar diperlukan dan Anda mengaktifkan lebih dari satu faktor otentikasi, Amazon Cognito meminta pengguna baru untuk memilih faktor MFA yang ingin mereka gunakan. Pengguna harus memiliki nomor telepon untuk mengatur pesan SMS MFA, dan alamat email untuk mengatur pesan email MFA. Jika pengguna tidak memiliki atribut yang ditentukan untuk MFA berbasis pesan yang tersedia, Amazon Cognito meminta mereka untuk menyiapkan TOTP MFA. Permintaan untuk memilih faktor MFA (`SELECT_MFA_TYPE`) dan untuk mengatur faktor yang dipilih (`MFA_SETUP`) datang sebagai respons tantangan terhadap [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)dan operasi [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

## Preferensi MFA pengguna
<a name="user-pool-settings-mfa-preferences"></a>

Pengguna dapat mengatur beberapa faktor MFA. Hanya satu yang bisa aktif. Anda dapat memilih preferensi MFA yang efektif untuk pengguna Anda di pengaturan kumpulan pengguna atau dari permintaan pengguna. Kumpulan pengguna meminta pengguna untuk kode MFA ketika pengaturan kumpulan pengguna dan pengaturan tingkat pengguna mereka sendiri memenuhi ketentuan berikut:

1. Anda mengatur MFA menjadi opsional atau wajib di kumpulan pengguna Anda.

1. Pengguna memiliki `phone_number` atribut `email` atau valid, atau telah menyiapkan aplikasi autentikator untuk TOTP.

1. Setidaknya satu faktor MFA aktif.

1. Satu faktor MFA ditetapkan sebagai pilihan.

### Cegah penggunaan faktor yang sama untuk masuk dan MFA
<a name="user-pool-settings-mfa-preferences-same-factor"></a>

Anda dapat mengonfigurasi kumpulan pengguna Anda dengan cara yang menjadikan satu faktor masuk sebagai satu-satunya opsi masuk dan MFA yang tersedia untuk beberapa atau semua pengguna. Hasil ini dapat terjadi ketika kasus penggunaan login utama Anda adalah pesan email atau kata sandi satu kali pesan SMS (). OTPs MFA pilihan pengguna mungkin jenis faktor yang sama dengan login mereka dalam kondisi berikut:
+ MFA diperlukan di kumpulan pengguna.
+ Email dan SMS OTP tersedia opsi masuk dan *MFA* di kumpulan pengguna.
+ Pengguna masuk dengan email atau pesan SMS OTP.
+ Mereka memiliki atribut alamat email tetapi tidak ada atribut nomor telepon, atau atribut nomor telepon tetapi tidak ada atribut alamat email.

Dalam skenario ini, pengguna dapat masuk dengan OTP email dan menyelesaikan MFA dengan OTP email. Opsi ini membatalkan fungsi penting MFA. Pengguna yang masuk dengan kata sandi satu kali harus dapat menggunakan metode pengiriman yang berbeda untuk masuk daripada untuk MFA. Ketika pengguna memiliki opsi SMS dan email, Amazon Cognito secara otomatis menetapkan faktor yang berbeda. Misalnya, ketika pengguna masuk dengan email OTP, MFA pilihan mereka adalah SMS OTP.

Ambil langkah-langkah berikut untuk mengatasi otentikasi faktor yang sama ketika kumpulan pengguna Anda mendukung otentikasi OTP untuk login dan MFA.

1. Aktifkan OTP email dan SMS sebagai faktor masuk.

1. Aktifkan email dan SMS OTP sebagai faktor MFA.

1. Kumpulkan

### Pengaturan kumpulan pengguna dan pengaruhnya pada opsi MFA
<a name="user-pool-settings-mfa-preferences-things-to-know"></a>

Konfigurasi kumpulan pengguna Anda memengaruhi metode MFA yang dapat dipilih pengguna. Berikut ini adalah beberapa pengaturan kumpulan pengguna yang memengaruhi kemampuan pengguna untuk mengatur MFA.
+ Dalam konfigurasi **otentikasi multi-faktor** di menu **Masuk** konsol Amazon Cognito, Anda dapat mengatur MFA ke opsional atau wajib, atau mematikannya. API yang setara dengan pengaturan ini adalah [MfaConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-MfaConfiguration)parameter`CreateUserPool`,`UpdateUserPool`, dan`SetUserPoolMfaConfig`.

  Juga dalam konfigurasi **otentikasi Multi-faktor**, pengaturan **metode MFA** menentukan faktor MFA yang dapat diatur pengguna. API yang setara dengan pengaturan ini adalah [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)operasi. 
+ Di menu **Masuk**, di bawah **Pemulihan akun pengguna**, Anda dapat mengonfigurasi cara kumpulan pengguna Anda mengirim pesan ke pengguna yang lupa kata sandi mereka. Metode MFA pengguna tidak dapat memiliki metode pengiriman MFA yang sama dengan metode pengiriman kumpulan pengguna untuk kode lupa kata sandi. Parameter API untuk metode pengiriman lupa-kata sandi adalah [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting)parameter dan. `CreateUserPool` `UpdateUserPool`

  Misalnya, pengguna tidak dapat mengatur MFA email ketika opsi pemulihan Anda hanya **Email**. Ini karena Anda tidak dapat mengaktifkan MFA email dan mengatur opsi pemulihan ke **Email hanya** di kumpulan pengguna yang sama. Ketika Anda mengatur opsi ini ke **Email jika tersedia, jika tidak SMS**, email adalah opsi pemulihan prioritas tetapi kumpulan pengguna Anda dapat kembali ke pesan SMS ketika pengguna tidak memenuhi syarat untuk pemulihan pesan email. Dalam skenario ini, pengguna dapat mengatur email MFA sebagai pilihan dan hanya dapat menerima pesan SMS ketika mereka mencoba untuk mengatur ulang kata sandi mereka.
+ Jika Anda menetapkan hanya satu metode MFA yang tersedia, Anda tidak perlu mengelola preferensi MFA pengguna.
+ Konfigurasi SMS aktif secara otomatis membuat pesan SMS menjadi metode MFA yang tersedia di kumpulan pengguna Anda.

  [Konfigurasi email](user-pool-email.md) aktif dengan sumber daya Amazon SES Anda sendiri di kumpulan pengguna, dan paket fitur Essentials atau Plus, secara otomatis menjadikan pesan email sebagai metode MFA yang tersedia di kumpulan pengguna Anda.
+ Saat Anda menyetel MFA ke required dalam kumpulan pengguna, pengguna tidak dapat mengaktifkan atau menonaktifkan metode MFA apa pun. Anda hanya dapat mengatur metode yang disukai.
+ Saat Anda menyetel MFA ke opsional di kumpulan pengguna, login terkelola tidak meminta pengguna untuk menyiapkan MFA, tetapi MFA meminta pengguna untuk kode MFA ketika mereka memiliki metode MFA yang disukai.
+ Saat Anda mengaktifkan [perlindungan ancaman](cognito-user-pool-settings-threat-protection.md) dan mengonfigurasi respons autentikasi adaptif dalam mode fungsi penuh, MFA harus opsional di kumpulan pengguna Anda. Salah satu opsi respons dengan otentikasi adaptif adalah meminta MFA bagi pengguna yang upaya masuknya dievaluasi untuk mengandung tingkat risiko.

  Pengaturan **Atribut wajib** di menu **Sign-up** konsol menentukan apakah pengguna harus memberikan alamat email atau nomor telepon untuk mendaftar di aplikasi Anda. Pesan email dan SMS menjadi faktor MFA yang memenuhi syarat ketika pengguna memiliki atribut yang sesuai. Parameter [Skema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) dari `CreateUserPool` set atribut seperti yang diperlukan.
+ Saat Anda menyetel MFA ke required di kumpulan pengguna dan pengguna masuk dengan login terkelola, Amazon Cognito meminta mereka untuk memilih metode MFA dari metode yang tersedia untuk kumpulan pengguna Anda. Login terkelola menangani pengumpulan alamat email atau nomor telepon dan pengaturan TOTP. Diagram berikut menunjukkan logika di balik opsi yang disajikan Amazon Cognito kepada pengguna.

### Konfigurasikan preferensi MFA untuk pengguna
<a name="user-pool-settings-mfa-preferences-configure"></a>

Anda dapat mengonfigurasi preferensi MFA untuk pengguna dalam model swalayan dengan otorisasi token akses, atau dalam model yang dikelola administrator dengan operasi API administratif. Operasi ini mengaktifkan atau menonaktifkan metode MFA dan menetapkan salah satu dari beberapa metode sebagai opsi yang disukai. Setelah pengguna Anda menetapkan preferensi MFA, Amazon Cognito meminta mereka saat masuk untuk memberikan kode dari metode MFA pilihan mereka. Pengguna yang belum menetapkan preferensi menerima prompt untuk memilih metode yang disukai dalam `SELECT_MFA_TYPE` tantangan.
+ Dalam model layanan mandiri pengguna atau aplikasi publik, [SetUserMfaPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html), yang diotorisasi dengan token akses pengguna yang masuk, menetapkan konfigurasi MFA.
+ Dalam aplikasi yang dikelola administrator atau rahasia,, diberi wewenang dengan AWS kredensil administratif [AdminSetUserPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html), menetapkan konfigurasi MFA.

Anda juga dapat mengatur preferensi MFA pengguna dari menu **Pengguna konsol** Amazon Cognito. Untuk informasi selengkapnya tentang model autentikasi publik dan rahasia di API kumpulan pengguna Amazon Cognito, lihat. [Memahami API, OIDC, dan otentikasi halaman login terkelola](authentication-flows-public-server-side.md#user-pools-API-operations)

## Rincian logika MFA saat runtime pengguna
<a name="user-pool-settings-mfa-user-outcomes"></a>

Untuk menentukan langkah-langkah yang harus diambil saat pengguna masuk, kumpulan pengguna Anda mengevaluasi preferensi MFA pengguna, atribut [pengguna,](user-pool-settings-attributes.md) pengaturan [MFA kumpulan](#user-pool-configuring-mfa) pengguna, tindakan perlindungan [ancaman,](cognito-user-pool-settings-adaptive-authentication.md) [dan](managing-users-passwords.md#user-pool-password-reset-and-recovery) pengaturan pemulihan akun swalayan. Kemudian menandatangani pengguna, meminta mereka untuk memilih metode MFA, meminta mereka untuk mengatur metode MFA, atau meminta mereka untuk MFA. Untuk menyiapkan metode MFA, pengguna harus memberikan [alamat email atau nomor telepon atau](user-pool-settings-mfa-sms-email-message.md) [mendaftarkan autentikator TOTP](user-pool-settings-mfa-totp.md#totp-mfa-set-up-api). Mereka juga dapat mengatur opsi MFA dan [mendaftarkan opsi yang disukai terlebih dahulu](#user-pool-settings-mfa-preferences-configure). Diagram berikut mencantumkan efek terperinci dari konfigurasi kumpulan pengguna pada upaya masuk segera setelah pendaftaran awal.

Logika yang diilustrasikan di sini berlaku untuk aplikasi berbasis SDK dan [login login terkelola](cognito-user-pools-managed-login.md), tetapi kurang terlihat dalam login terkelola. Saat Anda memecahkan masalah MFA, lakukan mundur dari hasil pengguna ke konfigurasi profil pengguna dan kumpulan pengguna yang berkontribusi pada keputusan tersebut.

![\[Diagram proses keputusan kumpulan pengguna Amazon Cognito untuk pemilihan MFA pengguna akhir.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-mfa-decision-tree.png)


Daftar berikut sesuai dengan penomoran dalam diagram logika keputusan dan menjelaskan setiap langkah secara rinci. A ![\[checkmark\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png) menunjukkan otentikasi yang berhasil dan kesimpulan dari aliran. A ![\[error\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/error.png) menunjukkan otentikasi yang tidak berhasil.

1. Pengguna menunjukkan nama pengguna atau nama pengguna dan kata sandi mereka di layar masuk Anda. Jika mereka tidak menunjukkan kredensil yang valid, permintaan masuk mereka ditolak. 

1. Jika mereka berhasil otentikasi nama pengguna kata sandi, tentukan apakah MFA diperlukan, opsional, atau tidak aktif. Jika tidak aktif, nama pengguna dan kata sandi yang benar menghasilkan otentikasi yang berhasil. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Jika MFA bersifat opsional, tentukan apakah pengguna sebelumnya telah menyiapkan autentikator TOTP. Jika mereka telah menyiapkan TOTP, minta TOTP MFA. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Tentukan apakah fitur otentikasi adaptif perlindungan ancaman telah mengharuskan pengguna untuk mengatur MFA. Jika MFA belum ditetapkan, pengguna akan masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

1. Jika MFA diperlukan atau otentikasi adaptif telah menetapkan MFA, tentukan apakah pengguna telah menetapkan faktor MFA sebagai diaktifkan dan disukai. Jika sudah, minta MFA dengan faktor itu. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

1. Jika pengguna belum menetapkan preferensi MFA, tentukan apakah pengguna telah mendaftarkan autentikator TOTP.

   1. Jika pengguna telah mendaftarkan autentikator TOTP, tentukan apakah TOTP MFA tersedia di kumpulan pengguna (TOTP MFA dapat dinonaktifkan setelah pengguna sebelumnya menyiapkan autentikator).

   1. Tentukan apakah pesan email atau MFA pesan SMS juga tersedia di kumpulan pengguna.

   1.  Jika tidak ada email atau SMS MFA yang tersedia, minta pengguna untuk TOTP MFA. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Jika email atau SMS MFA tersedia, tentukan apakah pengguna memiliki atribut `email` atau `phone_number` atribut yang sesuai. Jika demikian, atribut apa pun yang bukan metode utama untuk pemulihan akun swalayan dan diaktifkan untuk MFA tersedia bagi mereka.

   1. Minta pengguna dengan `SELECT_MFA_TYPE` tantangan dengan `MFAS_CAN_SELECT` opsi yang mencakup TOTP dan faktor MFA SMS atau email yang tersedia.

   1.  Minta pengguna untuk faktor yang mereka pilih dalam menanggapi `SELECT_MFA_TYPE` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

1. Jika pengguna belum mendaftarkan autentikator TOTP, atau jika mereka memiliki MFA TOTP saat ini dinonaktifkan, tentukan apakah pengguna memiliki atribut atau. `email` `phone_number`

1.  Jika pengguna hanya memiliki alamat email atau hanya nomor telepon, tentukan apakah atribut itu juga merupakan metode yang diimplementasikan oleh kumpulan pengguna untuk mengirim pesan pemulihan akun untuk pengaturan ulang kata sandi. Jika benar, mereka tidak dapat menyelesaikan proses masuk dengan MFA yang diperlukan dan Amazon Cognito mengembalikan kesalahan. Untuk mengaktifkan login untuk pengguna ini, Anda harus menambahkan atribut non-pemulihan atau mendaftarkan autentikator TOTP untuk mereka. ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/error.png)

   1. Jika mereka memiliki alamat email atau nomor telepon non-pemulihan yang tersedia, tentukan apakah faktor MFA email atau SMS yang sesuai diaktifkan.

   1. Jika mereka memiliki atribut alamat email non-pemulihan dan MFA email diaktifkan, minta mereka dengan `EMAIL_OTP` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Jika mereka memiliki atribut nomor telepon non-pemulihan dan SMS MFA diaktifkan, minta mereka dengan `SMS_MFA` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Jika mereka tidak memiliki atribut yang memenuhi syarat untuk faktor MFA email atau SMS yang diaktifkan, tentukan apakah TOTP MFA diaktifkan. Jika TOTP MFA dinonaktifkan, mereka tidak dapat menyelesaikan proses masuk dengan MFA yang diperlukan dan Amazon Cognito mengembalikan kesalahan. Untuk mengaktifkan login untuk pengguna ini, Anda harus menambahkan atribut non-pemulihan atau mendaftarkan autentikator TOTP untuk mereka. ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/error.png)
**catatan**  
Langkah ini telah dievaluasi sebagai **Tidak** jika pengguna memiliki autentikator TOTP tetapi TOTP MFA dinonaktifkan.

   1. Jika TOTP MFA diaktifkan, berikan `MFA_SETUP` tantangan kepada pengguna dalam opsi. `SOFTWARE_TOKEN_MFA` `MFAS_CAN_SETUP` Untuk menyelesaikan tantangan ini, Anda harus mendaftarkan autentikator TOTP secara terpisah untuk pengguna dan meresponsnya. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]}"`

   1. Setelah pengguna menanggapi `MFA_SETUP` tantangan dengan token sesi dari [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)permintaan, minta mereka dengan `SOFTWARE_TOKEN_MFA` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

1. Jika pengguna memiliki alamat email dan nomor telepon, tentukan atribut mana, jika ada, adalah metode utama untuk pesan pemulihan akun untuk pengaturan ulang kata sandi.

   1. Jika pemulihan akun swalayan dinonaktifkan, salah satu atribut dapat digunakan untuk MFA. Tentukan apakah salah satu atau kedua faktor MFA email dan SMS diaktifkan.

   1. Jika kedua atribut diaktifkan sebagai faktor MFA, minta pengguna dengan `SELECT_MFA_TYPE` tantangan dengan `MFAS_CAN_SELECT` opsi `SMS_MFA` dan. `EMAIL_OTP`

   1. Meminta mereka untuk faktor yang mereka pilih dalam menanggapi `SELECT_MFA_TYPE` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

   1. Jika hanya satu atribut yang merupakan faktor MFA yang memenuhi syarat, minta mereka dengan tantangan untuk faktor yang tersisa. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

      Hasil ini terjadi dalam skenario berikut.

      1. Ketika mereka memiliki `email` dan `phone_number` atribut, SMS dan email MFA diaktifkan, dan metode pemulihan akun utama adalah melalui email atau pesan SMS.

      1. Ketika mereka memiliki `email` dan `phone_number` atribut, hanya SMS MFA atau email MFA diaktifkan, dan pemulihan akun swalayan dinonaktifkan.

1. Jika pengguna belum mendaftarkan autentikator TOTP dan tidak memiliki `phone_number` atribut `email` atau atribut, minta mereka dengan tantangan. `MFA_SETUP` Daftar ini `MFAS_CAN_SETUP` mencakup semua faktor MFA yang diaktifkan di kumpulan pengguna yang bukan opsi pemulihan akun utama. Mereka dapat menanggapi tantangan ini dengan `ChallengeResponses` email atau TOTP MFA. Untuk mengatur SMS MFA, tambahkan atribut nomor telepon secara terpisah dan mulai ulang otentikasi.

   Untuk TOTP MFA, tanggapi dengan. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]"}`

   Untuk email MFA, tanggapi dengan. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "email": "[user's email address]"}`

   1. Meminta mereka untuk faktor yang mereka pilih dalam menanggapi `SELECT_MFA_TYPE` tantangan. Jika mereka berhasil menanggapi tantangan MFA, mereka masuk. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/checkmark.png)

## Konfigurasikan kumpulan pengguna untuk otentikasi multi-faktor
<a name="user-pool-configuring-mfa"></a>

Anda dapat mengonfigurasi MFA di konsol Amazon Cognito atau dengan operasi API dan metode [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)SDK.

**Untuk mengonfigurasi MFA di konsol Amazon Cognito**

1. Masuk ke [konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Pilih **Kolam Pengguna**.

1. Pilih kolam pengguna yang ada dari daftar, atau [buat kolam pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Pilih menu **Masuk**. **Temukan **otentikasi Multi-faktor** dan pilih Edit.**

1. Pilih metode **penegakan MFA** yang ingin Anda gunakan dengan kumpulan pengguna Anda.  
![\[Tangkapan layar dari konsol Amazon Cognito dengan opsi MFA.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-mfa.png)

   1. **Membutuhkan MFA**. Semua pengguna di kumpulan pengguna Anda harus masuk dengan kode SMS, email, atau kata sandi satu kali berbasis waktu (TOTP) tambahan sebagai faktor otentikasi tambahan.

   1. **MFA opsional**. Anda dapat memberi pengguna opsi untuk mendaftarkan faktor masuk tambahan namun tetap mengizinkan pengguna yang belum mengonfigurasi MFA untuk masuk. Jika Anda menggunakan otentikasi adaptif, pilih opsi ini. Untuk informasi selengkapnya tentang otentikasi adaptif, lihat. [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md)

   1. **Tidak ada MFA**. Pengguna Anda tidak dapat mendaftarkan faktor masuk tambahan.

1. Pilih **metode MFA** yang Anda dukung di aplikasi Anda. Anda dapat mengatur **pesan Email, pesan** **SMS**, atau **aplikasi Authenticator yang menghasilkan TOTP sebagai faktor kedua**.

1. Jika Anda menggunakan pesan teks SMS sebagai faktor kedua dan Anda belum mengonfigurasi peran IAM untuk digunakan dengan Amazon Simple Notification Service (Amazon SNS) untuk pesan SMS, buat satu di konsol. Di menu **Metode otentikasi** untuk kumpulan pengguna Anda, cari **SMS** dan pilih **Edit**. Anda juga dapat menggunakan peran yang ada yang memungkinkan Amazon Cognito mengirim pesan SMS ke pengguna untuk Anda. Untuk informasi lebih lanjut, lihat [Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

   Jika Anda menggunakan pesan email sebagai faktor kedua dan belum mengonfigurasi identitas asal untuk digunakan dengan Amazon Simple Email Service (Amazon SES) untuk pesan email, buat pesan di konsol. Anda harus memilih opsi **Kirim email dengan SES**. Di menu **Metode otentikasi** untuk kumpulan pengguna Anda, cari **Email** dan pilih **Edit**. Pilih **alamat email FROM** dari identitas terverifikasi yang tersedia dalam daftar. Jika Anda memilih domain terverifikasi, misalnya`example.com`, Anda juga harus mengonfigurasi **nama pengirim FROM** di domain terverifikasi, misalnya`admin-noreply@example.com`.

1. Pilih **Simpan perubahan**.

# SMS dan pesan email MFA
<a name="user-pool-settings-mfa-sms-email-message"></a>

Pesan MFA SMS dan email mengonfirmasi bahwa pengguna memiliki akses ke tujuan pesan sebelum mereka dapat masuk. Mereka mengonfirmasi bahwa mereka tidak hanya memiliki akses ke kata sandi, tetapi ke pesan SMS atau kotak masuk email pengguna asli. Amazon Cognito meminta agar pengguna memberikan kode singkat yang dikirim oleh kumpulan pengguna Anda setelah mereka berhasil memberikan nama pengguna dan kata sandi.

SMS dan pesan email MFA tidak memerlukan konfigurasi tambahan setelah pengguna Anda menambahkan alamat email atau nomor telepon ke profil mereka. Amazon Cognito dapat mengirim pesan ke alamat email dan nomor telepon yang tidak diverifikasi. Saat pengguna menyelesaikan MFA pertama mereka, Amazon Cognito menandai alamat email atau nomor telepon mereka sebagai terverifikasi.

Otentikasi MFA dimulai ketika pengguna dengan MFA memasukkan nama pengguna dan kata sandi mereka di aplikasi Anda. Aplikasi Anda mengirimkan parameter awal ini dalam metode SDK yang memanggil permintaan [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)atau [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API. Respons `ChallengeParameters` dalam API mencakup `CODE_DELIVERY_DESTINATION` nilai yang menunjukkan ke mana kode otorisasi dikirim. Dalam aplikasi Anda, tampilkan formulir yang meminta pengguna untuk memeriksa telepon mereka dan menyertakan elemen input untuk kode tersebut. Saat mereka memasukkan kode mereka, kirimkan dalam permintaan API respons tantangan untuk menyelesaikan proses masuk.

Setelah pengguna dengan MFA masuk dengan nama pengguna dan kata sandi di halaman [login terkelola](cognito-user-pools-managed-login.md), mereka secara otomatis diminta untuk kode MFA.

Kumpulan pengguna mengirim pesan SMS untuk MFA dan notifikasi Amazon Cognito lainnya dengan sumber daya Amazon Simple Notification Service (Amazon SNS) di sumber daya Anda. Akun AWS Demikian pula, kumpulan pengguna mengirim pesan email dengan sumber daya Amazon Simple Email Service (Amazon SES) di akun Anda. Layanan terkait ini dikenakan biaya sendiri pada AWS tagihan Anda untuk pengiriman pesan. Mereka juga memiliki persyaratan tambahan untuk mengirim pesan pada volume produksi. Lihat tautan berikut untuk informasi lebih lanjut:
+ [Pengaturan pesan SMS untuk kolam pengguna Amazon Cognito](user-pool-sms-settings.md)
+ [Harga SMS Seluruh Dunia](https://aws.amazon.com/sns/sms-pricing/)
+ [Pengaturan email untuk kumpulan pengguna Amazon Cognito](user-pool-email.md)
+ [Harga Amazon SES](https://aws.amazon.com/ses/pricing)

## Pertimbangan untuk SMS dan pesan email MFA
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ Untuk mengizinkan pengguna masuk dengan email MFA, kumpulan pengguna Anda harus memiliki opsi konfigurasi berikut:

  1. Anda memiliki paket fitur Plus atau Essentials di kumpulan pengguna Anda. Untuk informasi selengkapnya, lihat [Paket fitur kumpulan pengguna](cognito-sign-in-feature-plans.md).

  1. Kumpulan pengguna Anda mengirim pesan email dengan sumber daya Amazon SES Anda sendiri. Untuk informasi selengkapnya, lihat [Konfigurasi email Amazon SES](user-pool-email.md#user-pool-email-developer).
+ Kode MFA valid untuk **durasi sesi alur Autentikasi** yang Anda tetapkan untuk klien aplikasi.

  Setel durasi sesi alur autentikasi di konsol Amazon Cognito di menu Klien **aplikasi saat **Anda** Mengedit klien aplikasi**. Anda juga dapat mengatur durasi sesi alur autentikasi dalam permintaan `CreateUserPoolClient` atau `UpdateUserPoolClient` API. Untuk informasi selengkapnya, lihat [Contoh sesi otentikasi](authentication.md#amazon-cognito-user-pools-authentication-flow).
+ Ketika pengguna berhasil memberikan kode dari SMS atau pesan email yang dikirim Amazon Cognito ke nomor telepon atau alamat email yang tidak diverifikasi, Amazon Cognito menandai atribut yang sesuai sebagai terverifikasi.
+ Agar pengguna dapat melakukan perubahan layanan mandiri pada nilai nomor telepon atau alamat email yang terkait dengan MFA, mereka harus masuk dan mengotorisasi permintaan dengan token akses. Jika mereka tidak dapat mengakses nomor telepon atau alamat email mereka saat ini, mereka tidak dapat masuk. Tim Anda harus mengubah nilai ini dengan AWS kredensi administrator dalam permintaan [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Setelah [mengonfigurasi SMS](user-pool-sms-settings.md) di kumpulan pengguna, Anda tidak dapat menonaktifkan pesan SMS sebagai faktor MFA yang tersedia.

# Token perangkat lunak TOTP MFA
<a name="user-pool-settings-mfa-totp"></a>

Saat Anda mengatur MFA token perangkat lunak TOTP di kumpulan pengguna Anda, pengguna Anda masuk dengan nama pengguna dan kata sandi, lalu menggunakan TOTP untuk menyelesaikan otentikasi. Setelah pengguna Anda menetapkan dan memverifikasi nama pengguna dan kata sandi, mereka dapat mengaktifkan token perangkat lunak TOTP untuk MFA. Jika aplikasi Anda menggunakan login terkelola Amazon Cognito untuk login pengguna, pengguna Anda akan mengirimkan nama pengguna dan kata sandi mereka, lalu mengirimkan kata sandi TOTP pada halaman login tambahan.

Anda dapat mengaktifkan TOTP MFA untuk kumpulan pengguna di konsol Amazon Cognito, atau Anda dapat menggunakan operasi API Amazon Cognito. Di tingkat kumpulan pengguna, Anda dapat menelepon [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)untuk mengkonfigurasi MFA dan mengaktifkan TOTP MFA.

**catatan**  
Jika Anda belum mengaktifkan MFA token perangkat lunak TOTP untuk kumpulan pengguna, Amazon Cognito tidak dapat menggunakan token untuk mengaitkan atau memverifikasi pengguna. Dalam hal ini, pengguna menerima `SoftwareTokenMFANotFoundException` pengecualian dengan deskripsi`Software Token MFA has not been enabled by the userPool`. Jika Anda menonaktifkan token perangkat lunak MFA untuk kumpulan pengguna nanti, pengguna yang sebelumnya mengaitkan dan memverifikasi token TOTP dapat terus menggunakannya untuk MFA.

Mengonfigurasi TOTP untuk pengguna Anda adalah proses multi-langkah di mana pengguna Anda menerima kode rahasia yang divalidasi dengan memasukkan kata sandi satu kali. Selanjutnya, Anda dapat mengaktifkan TOTP MFA untuk pengguna Anda atau mengatur TOTP sebagai metode MFA pilihan untuk pengguna Anda.

Saat mengonfigurasi kumpulan pengguna agar mewajibkan TOTP MFA dan pengguna mendaftar ke aplikasi dalam login terkelola, Amazon Cognito akan mengotomatiskan proses pengguna. Amazon Cognito meminta pengguna Anda untuk memilih metode MFA, menampilkan kode QR untuk menyiapkan aplikasi autentikator mereka, dan memverifikasi pendaftaran MFA mereka. Di kumpulan pengguna tempat Anda mengizinkan pengguna untuk memilih antara SMS dan TOTP MFA, Amazon Cognito juga memberi pengguna Anda pilihan metode.

**penting**  
Bila Anda memiliki ACL AWS WAF web yang terkait dengan kumpulan pengguna, dan aturan di ACL web Anda menyajikan CAPTCHA, ini dapat menyebabkan kesalahan yang tidak dapat dipulihkan dalam pendaftaran TOTP login terkelola. Untuk membuat aturan yang memiliki tindakan CAPTCHA dan tidak memengaruhi TOTP login terkelola, lihat. [Mengkonfigurasi ACL AWS WAF web Anda untuk login terkelola TOTP MFA](#totp-waf) Untuk informasi selengkapnya tentang AWS WAF web ACLs dan Amazon Cognito, lihat. [Kaitkan ACL AWS WAF web dengan kumpulan pengguna](user-pool-waf.md)

Untuk mengimplementasikan TOTP MFA di UI yang dibuat khusus dengan SDK AWS dan API kumpulan pengguna Amazon [Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html), lihat. [Mengkonfigurasi TOTP MFA untuk pengguna](#totp-mfa-set-up-api)

Untuk menambahkan MFA ke kolam pengguna Anda, lihat [Menambahkan MFA ke kumpulan pengguna](user-pool-settings-mfa.md).

**Pertimbangan dan batasan TOTP MFA**

1. Amazon Cognito mendukung token perangkat lunak MFA melalui aplikasi autentikator yang menghasilkan kode TOTP. Amazon Cognito tidak mendukung MFA berbasis perangkat keras.

1. Ketika kumpulan pengguna Anda memerlukan TOTP untuk pengguna yang belum mengonfigurasinya, pengguna Anda menerima token akses satu kali yang dapat digunakan aplikasi Anda untuk mengaktifkan TOTP MFA bagi pengguna. Upaya masuk berikutnya gagal hingga pengguna Anda mendaftarkan faktor masuk TOTP tambahan.
   + Pengguna yang mendaftar di kumpulan pengguna Anda dengan operasi `SignUp` API atau melalui login terkelola menerima token satu kali saat pengguna menyelesaikan pendaftaran.
   + Setelah Anda membuat pengguna, dan pengguna menetapkan kata sandi awal mereka, Amazon Cognito mengeluarkan token satu kali dari login terkelola ke pengguna. Jika Anda menetapkan kata sandi permanen untuk pengguna, Amazon Cognito mengeluarkan token satu kali saat pengguna pertama kali masuk.
   + Amazon Cognito tidak mengeluarkan token satu kali ke pengguna yang dibuat administrator yang masuk dengan operasi atau API. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Setelah pengguna Anda berhasil dalam tantangan untuk mengatur kata sandi awal mereka, atau jika Anda menetapkan kata sandi permanen untuk pengguna, Amazon Cognito segera menantang pengguna untuk mengatur MFA.

1. Jika pengguna di kumpulan pengguna yang memerlukan MFA telah menerima token akses satu kali tetapi belum menyiapkan TOTP MFA, pengguna tidak dapat masuk dengan login terkelola hingga mereka menyiapkan MFA. Alih-alih token akses, Anda dapat menggunakan nilai `session` respons dari `MFA_SETUP` tantangan ke [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)atau [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)dalam [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)permintaan.

1. Jika pengguna Anda telah menyiapkan TOTP, mereka dapat menggunakannya untuk MFA, bahkan jika Anda menonaktifkan TOTP untuk kumpulan pengguna nanti.

1. Amazon Cognito hanya menerima TOTPs dari aplikasi autentikator yang menghasilkan kode dengan fungsi hash HMAC. SHA1 Kode yang dihasilkan dengan hashing SHA-256 mengembalikan kesalahan. `Code mismatch`

## Mengkonfigurasi TOTP MFA untuk pengguna
<a name="totp-mfa-set-up-api"></a>

Saat pengguna pertama kali masuk, aplikasi Anda menggunakan token akses satu kali untuk membuat kunci pribadi TOTP dan menyajikannya kepada pengguna Anda dalam format teks atau kode QR. Pengguna Anda mengonfigurasi aplikasi autentikatornya dan menyediakan TOTP untuk upaya masuk berikutnya. Aplikasi atau login terkelola Anda menyajikan TOTP ke Amazon Cognito dalam respons tantangan MFA.

Dalam beberapa keadaan, login terkelola meminta pengguna baru untuk menyiapkan autentikator TOTP. Untuk informasi selengkapnya, lihat. [Rincian logika MFA saat runtime pengguna](user-pool-settings-mfa.md#user-pool-settings-mfa-user-outcomes)

**Topics**
+ [Kaitkan token perangkat lunak TOTP](#user-pool-settings-mfa-totp-associate-token)
+ [Verifikasi token TOTP](#user-pool-settings-mfa-totp-verification)
+ [Masuk dengan TOTP MFA](#user-pool-settings-mfa-totp-sign-in)
+ [Hapus token TOTP](#user-pool-settings-mfa-totp-remove)

### Kaitkan token perangkat lunak TOTP
<a name="user-pool-settings-mfa-totp-associate-token"></a>

Untuk mengaitkan token TOTP, kirimkan kode rahasia kepada pengguna Anda yang harus mereka validasi dengan kata sandi satu kali. Mengaitkan token membutuhkan tiga langkah.

1. Saat pengguna Anda memilih token perangkat lunak TOTP MFA, panggil [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)untuk mengembalikan kode kunci rahasia bersama unik yang dihasilkan untuk akun pengguna. Anda dapat mengotorisasi AssociateSoftwareToken dengan token akses atau string sesi. 

1. Aplikasi Anda menyajikan kunci pribadi kepada pengguna, atau kode QR yang Anda hasilkan dari kunci pribadi. Pengguna Anda harus memasukkan kunci ke dalam aplikasi penghasil total seperti Google Authenticator, baik dengan memindai kode QR yang dihasilkan aplikasi Anda dari kunci pribadi atau dengan memasukkan kunci secara manual.

1. Pengguna Anda memasukkan kunci, atau memindai kode QR ke aplikasi autentikator seperti Google Authenticator, dan aplikasi mulai menghasilkan kode.

### Verifikasi token TOTP
<a name="user-pool-settings-mfa-totp-verification"></a>

Selanjutnya, verifikasi token TOTP. Minta kode sampel dari pengguna Anda dan berikan ke layanan Amazon Cognito untuk mengonfirmasi bahwa pengguna berhasil membuat kode TOTP, sebagai berikut.

1. Aplikasi Anda meminta pengguna Anda untuk kode untuk menunjukkan bahwa mereka telah menyiapkan aplikasi autentikator mereka dengan benar.

1. Aplikasi autentikator pengguna menampilkan kata sandi sementara. Aplikasi autentikator mendasarkan kata sandi pada kunci rahasia yang Anda berikan kepada pengguna.

1. Pengguna Anda memasukkan kata sandi sementara mereka. Aplikasi Anda meneruskan kata sandi sementara ke Amazon Cognito dalam permintaan `[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)` API.

1.  Amazon Cognito telah mempertahankan kunci rahasia yang terkait dengan pengguna, dan menghasilkan TOTP dan membandingkannya dengan yang disediakan pengguna Anda. Jika cocok, `VerifySoftwareToken` mengembalikan `SUCCESS` respons.

1. Amazon Cognito mengaitkan faktor TOTP dengan pengguna.

1. Jika `VerifySoftwareToken` operasi mengembalikan `ERROR` respons, pastikan jam pengguna sudah benar dan belum melebihi jumlah percobaan ulang maksimum. Amazon Cognito menerima token TOTP yang berada dalam waktu 30 detik sebelum atau sesudah upaya, untuk memperhitungkan kemiringan jam kecil. Setelah Anda menyelesaikan masalah, coba VerifySoftwareToken operasi lagi.

### Masuk dengan TOTP MFA
<a name="user-pool-settings-mfa-totp-sign-in"></a>

Pada titik ini, pengguna Anda masuk dengan kata sandi satu kali berbasis waktu. Prosesnya adalah sebagai berikut.

1. Pengguna Anda memasukkan nama pengguna dan kata sandi mereka untuk masuk ke aplikasi klien Anda.

1. Tantangan MFA TOTP dipanggil, dan pengguna Anda diminta oleh aplikasi Anda untuk memasukkan kata sandi sementara.

1. Pengguna Anda mendapatkan kata sandi sementara dari aplikasi penghasil TOTP terkait.

1. Pengguna Anda memasukkan kode TOTP ke aplikasi klien Anda. Aplikasi Anda akan memberitahukan layanan Amazon Cognito untuk memverifikasinya. Untuk setiap login, [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)harus dipanggil untuk mendapatkan respons terhadap tantangan otentikasi TOTP yang baru.

1. Jika token diverifikasi oleh Amazon Cognito, masuk berhasil dan pengguna Anda melanjutkan dengan alur autentikasi. 

### Hapus token TOTP
<a name="user-pool-settings-mfa-totp-remove"></a>

Terakhir, aplikasi Anda harus mengizinkan pengguna untuk menonaktifkan konfigurasi TOTP mereka. Saat ini, Anda tidak dapat menghapus token perangkat lunak TOTP pengguna. Untuk mengganti token perangkat lunak pengguna Anda, kaitkan dan verifikasi token perangkat lunak baru. Untuk menonaktifkan TOTP MFA bagi pengguna, [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)hubungi untuk memodifikasi pengguna Anda agar tidak menggunakan MFA, atau hanya SMS MFA.

1. Buat antarmuka di aplikasi Anda untuk pengguna yang ingin mengatur ulang MFA. Minta pengguna di antarmuka ini untuk memasukkan kata sandi mereka.

1. Jika Amazon Cognito mengembalikan tantangan MFA TOTP, perbarui preferensi MFA pengguna Anda. [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)

1. Di aplikasi Anda, komunikasikan kepada pengguna Anda bahwa mereka telah menonaktifkan MFA dan minta mereka untuk masuk lagi.

## Mengkonfigurasi ACL AWS WAF web Anda untuk login terkelola TOTP MFA
<a name="totp-waf"></a>

Bila Anda memiliki ACL AWS WAF web yang terkait dengan kumpulan pengguna, dan aturan di ACL web Anda menyajikan CAPTCHA, ini dapat menyebabkan kesalahan yang tidak dapat dipulihkan dalam pendaftaran TOTP login terkelola. AWS WAF Aturan CAPTCHA *hanya* memiliki efek ini pada TOTP MFA dalam login terkelola dan UI yang dihosting klasik. SMS MFA tidak terpengaruh.

Amazon Cognito menampilkan kesalahan berikut ketika aturan CAPTCHA Anda tidak mengizinkan pengguna menyelesaikan penyiapan TOTP MFA. 

Permintaan tidak diizinkan karena captcha WAF.

Kesalahan ini terjadi saat AWS WAF meminta CAPTCHA sebagai respons [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)dan permintaan [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)API yang dibuat oleh kumpulan pengguna Anda di latar belakang. Untuk membuat aturan yang memiliki tindakan CAPTCHA dan tidak memengaruhi TOTP di halaman login terkelola, kecualikan nilai `x-amzn-cognito-operation-name` header `AssociateSoftwareToken` dan `VerifySoftwareToken` dari tindakan CAPTCHA dalam aturan Anda.

Screenshot berikut menunjukkan contoh AWS WAF aturan yang menerapkan tindakan CAPTCHA untuk semua permintaan yang tidak memiliki nilai `x-amzn-cognito-operation-name` header atau. `AssociateSoftwareToken` `VerifySoftwareToken`

![\[Screenshot dari AWS WAF aturan yang menerapkan tindakan CAPTCHA untuk semua permintaan yang tidak memiliki nilai x-amzn-cognito-operation-name header atau. AssociateSoftwareToken VerifySoftwareToken\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-WAF-rule-TOTP.png)


Untuk informasi selengkapnya tentang AWS WAF web ACLs dan Amazon Cognito, lihat. [Kaitkan ACL AWS WAF web dengan kumpulan pengguna](user-pool-waf.md)

# Keamanan tingkat lanjut dengan perlindungan ancaman
<a name="cognito-user-pool-settings-threat-protection"></a>

Setelah membuat kumpulan pengguna, Anda memiliki akses ke **Perlindungan ancaman** di menu navigasi di konsol Amazon Cognito. Anda dapat mengaktifkan fitur perlindungan ancaman dan menyesuaikan tindakan yang diambil sebagai respons terhadap risiko yang berbeda. Atau Anda dapat menggunakan mode audit untuk mengumpulkan metrik risiko yang terdeteksi tanpa menerapkan mitigasi keamanan apa pun. Dalam mode audit, perlindungan ancaman menerbitkan metrik ke Amazon. CloudWatch Anda dapat melihat metrik setelah Amazon Cognito menghasilkan acara pertamanya. Lihat [Melihat metrik perlindungan ancaman](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Perlindungan ancaman, sebelumnya disebut *fitur keamanan canggih*, adalah seperangkat alat pemantauan untuk aktivitas yang tidak diinginkan di kumpulan pengguna Anda, dan alat konfigurasi untuk secara otomatis mematikan aktivitas yang berpotensi berbahaya. Perlindungan ancaman memiliki opsi konfigurasi yang berbeda untuk operasi otentikasi standar dan kustom. Misalnya, Anda mungkin ingin mengirim pemberitahuan ke pengguna dengan login autentikasi kustom yang mencurigakan, di mana Anda telah menyiapkan faktor keamanan tambahan, tetapi memblokir pengguna pada tingkat risiko yang sama dengan otentikasi nama pengguna-kata sandi dasar.

Perlindungan ancaman tersedia dalam paket fitur Plus. Untuk informasi selengkapnya, lihat [Paket fitur kumpulan pengguna](cognito-sign-in-feature-plans.md).

Opsi kumpulan pengguna berikut adalah komponen perlindungan ancaman.

**Kredensi yang dikompromikan**  
Pengguna menggunakan kembali kata sandi untuk beberapa akun pengguna. Fitur kredensi yang dikompromikan dari Amazon Cognito mengkompilasi data dari kebocoran publik nama pengguna dan kata sandi, dan membandingkan kredensil pengguna Anda dengan daftar kredensional yang bocor. Deteksi kredensil yang dikompromikan juga memeriksa kata sandi yang umum ditebak. Anda dapat memeriksa kredensyal yang dikompromikan dalam alur otentikasi username-and-password standar di kumpulan pengguna. Amazon Cognito tidak mendeteksi kredensi yang dikompromikan dalam kata sandi jarak jauh aman (SRP) atau otentikasi khusus.  
Anda dapat memilih tindakan pengguna yang meminta pemeriksaan kredenal yang disusupi, dan tindakan yang Anda ingin dilakukan Amazon Cognito sebagai tanggapan. ****Untuk peristiwa login, pendaftaran, dan perubahan kata sandi, Amazon Cognito dapat Memblokir proses masuk, atau Izinkan masuk.**** Dalam kedua kasus tersebut, Amazon Cognito menghasilkan log aktivitas pengguna tempat Anda dapat menemukan informasi lebih lanjut tentang acara tersebut.  
**Pelajari selengkapnya**  
[Bekerja dengan deteksi kredensial-terkompromikan](cognito-user-pool-settings-compromised-credentials.md)

**Otentikasi adaptif**  
Amazon Cognito dapat meninjau informasi lokasi dan perangkat dari permintaan masuk pengguna Anda dan menerapkan respons otomatis untuk mengamankan akun pengguna di kumpulan pengguna Anda dari aktivitas mencurigakan. Anda dapat memantau aktivitas pengguna dan mengotomatiskan respons ke tingkat risiko yang terdeteksi di username-password dan SRP, serta autentikasi kustom.  
Saat Anda mengaktifkan perlindungan ancaman, Amazon Cognito memberikan skor risiko untuk aktivitas pengguna. Anda dapat menetapkan respons otomatis terhadap aktivitas mencurigakan: Anda dapat Memerlukan **MFA**, **Memblokir proses masuk**, atau hanya mencatat detail aktivitas dan skor risiko. Anda juga dapat secara otomatis mengirim pesan email yang memberi tahu pengguna Anda tentang aktivitas mencurigakan sehingga mereka dapat mengatur ulang kata sandi mereka atau mengambil tindakan mandiri lainnya.  
**Pelajari selengkapnya**  
[Bekerja dengan otentikasi adaptif](cognito-user-pool-settings-adaptive-authentication.md)

**Daftar Izin dan Denylist Alamat IP**  
Dengan perlindungan ancaman Amazon Cognito dalam mode **fungsi penuh**, Anda dapat membuat alamat IP **Selalu blokir dan Selalu** **izinkan pengecualian**. Sesi dari alamat IP pada daftar pengecualian **Selalu blokir** tidak ditetapkan tingkat risiko dengan autentikasi adaptif, dan tidak dapat masuk ke kumpulan pengguna Anda.  

**Hal-hal yang perlu diketahui tentang daftar izin alamat IP dan daftar blokir**
+ Anda harus mengekspresikan **Selalu blokir** dan **Selalu izinkan** dalam format CIDR, misalnya`192.0.2.0/24`, topeng 24-bit, atau`192.0.2.252/32`, satu alamat IP.
+  Perangkat dengan alamat IP dalam rentang IP **Selalu blokir** tidak dapat mendaftar atau masuk dengan aplikasi login berbasis SDK atau terkelola, tetapi mereka dapat masuk dengan pihak ketiga. IdPs 
+ **Selalu izinkan** dan **Selalu blokir** daftar tidak memengaruhi penyegaran token.
+ Amazon Cognito tidak menerapkan aturan MFA otentikasi adaptif ke perangkat dari rentang IP **Selalu izinkan**, tetapi menerapkan aturan kredensial-kompromi.

**Ekspor log**  
Perlindungan ancaman mencatat detail terperinci dari permintaan otentikasi pengguna ke kumpulan pengguna Anda. Log ini menampilkan penilaian ancaman, informasi pengguna, dan metadata sesi seperti lokasi dan perangkat. Anda dapat membuat arsip eksternal dari log ini untuk retensi dan analisis. Pengguna Amazon Cognito mengumpulkan log perlindungan ancaman ekspor ke Amazon S3 CloudWatch , Log, dan Amazon Data Firehose. Untuk informasi selengkapnya, lihat [Melihat dan mengekspor riwayat acara pengguna](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).  
**Pelajari selengkapnya**  
[Mengekspor log aktivitas pengguna untuk perlindungan dari ancaman](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity)

**Topics**
+ [Pertimbangan dan batasan untuk perlindungan ancaman](#cognito-user-pool-threat-protection-considerations)
+ [Mengaktifkan perlindungan ancaman di kumpulan pengguna](#cognito-user-pool-threat-protection-activating)
+ [Konsep penegakan perlindungan ancaman](#cognito-user-pool-settings-threat-protection-threat-protection-enforcement)
+ [Perlindungan ancaman untuk otentikasi standar dan otentikasi khusus](#cognito-user-pool-settings-threat-protection-threat-protection-types)
+ [Prasyarat perlindungan ancaman](#cognito-user-pool-threat-protection-prerequisites)
+ [Menyiapkan perlindungan ancaman](#cognito-user-pool-settings-configure-threat-protection)
+ [Bekerja dengan deteksi kredensial-terkompromikan](cognito-user-pool-settings-compromised-credentials.md)
+ [Bekerja dengan otentikasi adaptif](cognito-user-pool-settings-adaptive-authentication.md)
+ [Mengumpulkan data untuk perlindungan ancaman dalam aplikasi](user-pool-settings-viewing-threat-protection-app.md)

## Pertimbangan dan batasan untuk perlindungan ancaman
<a name="cognito-user-pool-threat-protection-considerations"></a>

**Opsi perlindungan ancaman berbeda antara alur otentikasi**  
Amazon Cognito mendukung otentikasi adaptif dan deteksi kredensial-kompromi dengan alur otentikasi dan. `USER_PASSWORD_AUTH` `ADMIN_USER_PASSWORD_AUTH` Anda hanya dapat mengaktifkan otentikasi adaptif untuk. `USER_SRP_AUTH` Anda tidak dapat menggunakan perlindungan ancaman dengan login federasi.

**Selalu blokir IPs berkontribusi untuk meminta kuota**  
Permintaan yang diblokir dari alamat IP pada daftar pengecualian **Selalu blokir** di kumpulan pengguna Anda berkontribusi pada [kuota tingkat permintaan](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#category_operations) untuk kumpulan pengguna Anda.

**Perlindungan ancaman tidak menerapkan batas tarif**  
Beberapa lalu lintas berbahaya memiliki karakteristik volume permintaan yang tinggi, seperti serangan penolakan layanan terdistribusi (DDoS). Peringkat risiko yang diterapkan Amazon Cognito untuk lalu lintas masuk adalah per permintaan dan tidak memperhitungkan volume permintaan. Permintaan individu dalam peristiwa volume tinggi mungkin menerima skor risiko dan respons otomatis untuk alasan lapisan aplikasi yang tidak terkait dengan peran mereka dalam serangan volumetrik. Untuk menerapkan pertahanan terhadap serangan volumetrik di kumpulan pengguna Anda, tambahkan web. AWS WAF ACLs Untuk informasi selengkapnya, lihat [Kaitkan ACL AWS WAF web dengan kumpulan pengguna](user-pool-waf.md).

**Perlindungan ancaman tidak memengaruhi permintaan M2M**  
Hibah kredensi klien dimaksudkan untuk otorisasi machine-to-machine (M2M) tanpa koneksi ke akun pengguna. Perlindungan ancaman hanya memantau akun pengguna dan kata sandi di kumpulan pengguna Anda. Untuk menerapkan fitur keamanan dengan aktivitas M2M Anda, pertimbangkan kemampuan AWS WAF untuk memantau tingkat permintaan dan konten. Untuk informasi selengkapnya, lihat [Kaitkan ACL AWS WAF web dengan kumpulan pengguna](user-pool-waf.md).

## Mengaktifkan perlindungan ancaman di kumpulan pengguna
<a name="cognito-user-pool-threat-protection-activating"></a>

------
#### [ Amazon Cognito user pools console ]

**Untuk mengaktifkan perlindungan ancaman untuk kumpulan pengguna**

1. Masuk ke [Konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home). Jika diminta, masukkan AWS kredensil Anda.

1. Pilih **Kolam Pengguna**.

1. Pilih kolam pengguna yang ada dari daftar, atau [buat kolam pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Jika Anda belum melakukannya, aktifkan paket fitur Plus dari menu **Pengaturan**.

1. Pilih menu **Perlindungan ancaman** dan pilih **Aktifkan**.

1. Pilih **Simpan perubahan**.

------
#### [ API ]

Tetapkan paket fitur Anda ke Plus dalam permintaan [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Contoh sebagian badan permintaan berikut menetapkan perlindungan ancaman ke mode fungsi penuh. Untuk permintaan contoh lengkap, lihat [Contoh](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples).

```
"UserPoolAddOns": { 
      "AdvancedSecurityMode": "ENFORCED"
   }
```

------

Perlindungan ancaman adalah istilah kolektif untuk fitur yang memantau operasi pengguna untuk tanda-tanda pengambilalihan akun dan secara otomatis merespons akun pengguna yang aman. Anda dapat menerapkan pengaturan perlindungan ancaman kepada pengguna saat mereka masuk dengan alur otentikasi standar dan kustom.

Perlindungan ancaman [menghasilkan log](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history) yang merinci proses masuk, keluar, dan aktivitas pengguna lainnya. Anda dapat mengekspor log ini ke sistem pihak ketiga. Untuk informasi selengkapnya, lihat [Melihat dan mengekspor riwayat acara pengguna](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).

## Konsep penegakan perlindungan ancaman
<a name="cognito-user-pool-settings-threat-protection-threat-protection-enforcement"></a>

Perlindungan ancaman dimulai dalam mode *audit saja* di mana kumpulan pengguna Anda memantau aktivitas pengguna, menetapkan tingkat risiko, dan menghasilkan log. Sebagai praktik terbaik, jalankan dalam mode audit saja selama dua minggu atau lebih sebelum Anda mengaktifkan mode fungsi *penuh*. Mode fungsi penuh mencakup serangkaian reaksi otomatis terhadap aktivitas berisiko yang terdeteksi dan kata sandi yang dikompromikan. Dengan mode khusus audit, Anda dapat memantau penilaian ancaman yang dilakukan Amazon Cognito. Anda juga dapat [memberikan umpan balik](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-feedback) yang melatih fitur pada positif palsu dan negatif.

Anda dapat mengonfigurasi penegakan perlindungan ancaman di tingkat kumpulan pengguna untuk mencakup semua klien aplikasi di kumpulan pengguna, dan pada tingkat klien aplikasi individual. Konfigurasi perlindungan ancaman klien aplikasi mengesampingkan konfigurasi kumpulan pengguna. Untuk mengonfigurasi perlindungan ancaman untuk klien aplikasi, navigasikan ke setelan klien **aplikasi dari menu Klien aplikasi** kumpulan pengguna Anda di konsol Amazon Cognito. Di sana, Anda dapat **Menggunakan pengaturan tingkat klien** dan mengonfigurasi penegakan hukum eksklusif untuk klien aplikasi.

Selain itu, Anda dapat mengonfigurasi perlindungan ancaman secara terpisah untuk jenis otentikasi standar dan kustom.

## Perlindungan ancaman untuk otentikasi standar dan otentikasi khusus
<a name="cognito-user-pool-settings-threat-protection-threat-protection-types"></a>

Cara Anda dapat mengonfigurasi perlindungan ancaman bergantung pada jenis otentikasi yang Anda lakukan di kumpulan pengguna dan klien aplikasi Anda. Masing-masing jenis otentikasi berikut dapat memiliki mode penegakan dan respons otomatis mereka sendiri.

**Otentikasi standar**  
*Otentikasi standar* adalah login pengguna, sign-out dan manajemen kata sandi dengan alur nama pengguna-kata sandi dan login terkelola. Perlindungan ancaman Amazon Cognito memantau operasi untuk indikator risiko saat masuk dengan login terkelola atau menggunakan parameter API `AuthFlow` berikut:    
**[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)**  
`USER_PASSWORD_AUTH`,`USER_SRP_AUTH`. Fitur kredensi yang disusupi tidak memiliki akses ke kata sandi `USER_SRP_AUTH` saat masuk, dan tidak memantau atau menindaklanjuti peristiwa dengan alur ini.  
**[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)**  
`ADMIN_USER_PASSWORD_AUTH`,`USER_SRP_AUTH`. Fitur kredensi yang disusupi tidak memiliki akses ke kata sandi `USER_SRP_AUTH` saat masuk, dan tidak memantau atau menindaklanjuti peristiwa dengan alur ini.
Anda dapat mengatur **mode Penegakan** untuk otentikasi standar **hanya untuk Audit** atau **fungsi Penuh**. Untuk menonaktifkan pemantauan ancaman untuk otentikasi standar, tetapkan perlindungan ancaman ke **No enforcement**.

**Autentikasi kustom**  
*Otentikasi khusus* adalah login pengguna dengan pemicu [Lambda tantangan khusus](user-pool-lambda-challenge.md). Anda tidak dapat melakukan otentikasi khusus di login terkelola. Perlindungan ancaman Amazon Cognito memantau operasi untuk indikator risiko saat mereka masuk dengan `AuthFlow` parameter API `CUSTOM_AUTH` dan`InitiateAuth`. `AdminInitiateAuth`  
Anda dapat mengatur **mode Penegakan** untuk autentikasi kustom **hanya untuk Audit**, **Fungsi penuh**, atau **Tidak ada penegakan hukum**. Opsi **Tanpa penegakan** menonaktifkan pemantauan ancaman untuk otentikasi khusus tanpa memengaruhi fitur perlindungan ancaman lainnya.

## Prasyarat perlindungan ancaman
<a name="cognito-user-pool-threat-protection-prerequisites"></a>

Sebelum memulai, Anda perlu melakukan hal berikut:
+ Kolam pengguna dengan klien aplikasi. Untuk informasi selengkapnya, lihat [Memulai dengan kumpulan pengguna](getting-started-user-pools.md).
+ Atur Autentikasi Multi-Faktor (MFA) ke **Opsional** di konsol Amazon Cognito untuk menggunakan fitur autentikasi adaptif berbasis risiko. Untuk informasi selengkapnya, lihat [Menambahkan MFA ke kumpulan pengguna](user-pool-settings-mfa.md).
+ Jika Anda menggunakan notifikasi email, buka [konsol Amazon SES](https://console.aws.amazon.com/ses/home) untuk mengonfigurasi dan memverifikasi alamat email atau domain yang akan digunakan dengan notifikasi email Anda. Untuk informasi lebih lanjut tentang Amazon SES, lihat [Memverifikasi Identitas di Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).

## Menyiapkan perlindungan ancaman
<a name="cognito-user-pool-settings-configure-threat-protection"></a>

Ikuti petunjuk ini untuk mengatur perlindungan ancaman kumpulan pengguna.

**catatan**  
Untuk menyiapkan konfigurasi perlindungan ancaman yang berbeda untuk klien aplikasi di konsol kumpulan pengguna Amazon Cognito, pilih klien aplikasi dari menu Klien aplikasi dan pilih **Gunakan** setelan tingkat **klien**.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengonfigurasi perlindungan ancaman untuk kumpulan pengguna**

1. Masuk ke [Konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home). Jika diminta, masukkan AWS kredensil Anda.

1. Pilih **Kolam Pengguna**.

1. Pilih kolam pengguna yang ada dari daftar, atau [buat kolam pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Pilih menu **Perlindungan ancaman** dan pilih **Aktifkan**.

1. Pilih metode perlindungan ancaman yang ingin Anda konfigurasikan: **Otentikasi standar dan kustom**. Anda dapat mengatur mode penegakan yang berbeda untuk otentikasi kustom dan standar, tetapi mereka berbagi konfigurasi respons otomatis dalam mode **fungsi penuh**.

1. Pilih **Edit**.

1. Pilih **mode Penegakan**. Untuk segera merespons risiko yang terdeteksi, pilih **Fungsi lengkap** dan konfigurasikan respons otomatis untuk kredensi yang dikompromikan dan otentikasi adaptif. Untuk mengumpulkan informasi di log tingkat pengguna dan masuk CloudWatch, pilih **Audit** saja.

   Kami menyarankan agar Anda menjaga perlindungan ancaman dalam mode audit selama dua minggu sebelum mengaktifkan tindakan. Selama waktu ini, Amazon Cognito dapat mempelajari pola penggunaan pengguna aplikasi Anda dan Anda dapat memberikan umpan balik peristiwa untuk menyesuaikan respons.

1. Jika Anda memilih **Audit saja**, pilih **Simpan perubahan**. Jika Anda memilih **Fungsi penuh**:

   1. **Pilih apakah Anda akan mengambil tindakan **Kustom** atau menggunakan atau **Cognito default untuk menanggapi dugaan kredensial** Terkompromi.** **Cognito default** adalah:

      1. **Mendeteksi kredenal yang dikompromikan **saat Masuk, **Mendaftar****, dan Perubahan Kata Sandi.**

      1. **Menanggapi kredenal yang dikompromikan dengan tindakan Blokir login.**

   1. Jika Anda memilih Tindakan **kustom** untuk **kredensial yang dikompromikan**, pilih tindakan kumpulan pengguna yang akan digunakan Amazon Cognito untuk **deteksi Peristiwa** dan tanggapan **kredenal yang dikompromikan yang Anda** ingin dilakukan Amazon Cognito. Anda dapat **Memblokir proses masuk atau **Izinkan masuk**** dengan kredenal yang dicurigai disusupi.

   1. Pilih cara menanggapi upaya masuk berbahaya di bawah Autentikasi **adaptif**. Pilih apakah Anda akan mengambil tindakan **Kustom** atau menggunakan atau **Cognito default** untuk menanggapi aktivitas berbahaya yang dicurigai. Saat Anda memilih **Cognito default,** Amazon Cognito memblokir proses masuk di semua tingkat risiko dan tidak memberi tahu pengguna.

   1. Jika Anda memilih Tindakan **kustom** untuk **otentikasi Adaptif**, pilih Tindakan **respons risiko otomatis** yang akan diambil Amazon Cognito sebagai respons terhadap risiko yang terdeteksi berdasarkan tingkat keparahan. Ketika Anda menetapkan respons terhadap tingkat risiko, Anda tidak dapat menetapkan respons yang kurang membatasi ke tingkat risiko yang lebih tinggi. Anda dapat menetapkan tanggapan berikut untuk tingkat risiko:

      1. **Izinkan masuk** - Jangan mengambil tindakan pencegahan.

      1. **MFA opsional** - Jika pengguna memiliki MFA yang dikonfigurasi, Amazon Cognito akan selalu meminta pengguna untuk memberikan SMS tambahan atau faktor kata sandi satu kali berbasis waktu (TOTP) saat mereka masuk. Jika pengguna belum mengonfigurasikan autentikasi multifaktor (MFA), mereka dapat melanjutkan masuk seperti biasa.

      1. **Memerlukan MFA** - Jika pengguna memiliki MFA yang dikonfigurasi, Amazon Cognito akan selalu meminta pengguna untuk memberikan SMS atau faktor TOTP tambahan saat mereka masuk. Jika pengguna belum mengonfigurasikan autentikasi multifaktor (MFA), Amazon Cognito akan meminta mereka mengonfigurasikan MFA. Sebelum Anda secara otomatis memerlukan MFA untuk pengguna Anda, konfigurasikan mekanisme di aplikasi Anda untuk menangkap nomor telepon untuk SMS MFA, atau untuk mendaftarkan aplikasi autentikator untuk TOTP MFA.

      1. **Blokir masuk** - Cegah pengguna masuk.

      1. **Beri tahu pengguna** - Kirim pesan email ke pengguna dengan informasi tentang risiko yang terdeteksi Amazon Cognito dan respons yang telah Anda ambil. Anda dapat menyesuaikan template pesan email untuk pesan yang Anda kirim.

1. Jika Anda memilih **Beri tahu pengguna** pada langkah sebelumnya, Anda dapat menyesuaikan pengaturan pengiriman email dan templat pesan email untuk autentikasi adaptif.

   1. Di bawah **Konfigurasi email**, pilih **Wilayah SES**, **DARI alamat email**, **DARI nama pengirim**, dan alamat **email BALAS-KE yang ingin Anda gunakan dengan autentikasi** adaptif. Untuk informasi selengkapnya tentang mengintegrasikan pesan email kumpulan pengguna Anda dengan Amazon Simple Email Service, lihat [Pengaturan email untuk kumpulan pengguna Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html).  
![\[Riwayat peristiwa pengguna\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-advanced-security-ses-notification.png)

   1. Perluas **template Email** untuk menyesuaikan notifikasi autentikasi adaptif dengan pesan email versi HTML dan teks biasa. Untuk mempelajari lebih lanjut tentang templat pesan email, lihat[Template pesan](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

1. Perluas **pengecualian alamat IP** untuk membuat daftar **Always-allow** atau **Always-block** atau rentang IPv6 alamat yang akan selalu diizinkan IPv4 atau diblokir, terlepas dari penilaian risiko perlindungan ancaman. Tentukan rentang alamat IP di [Notasi CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (seperti 192.168.100.0/24).

1. Pilih **Simpan perubahan**.

------
#### [ API (user pool) ]

Untuk mengatur konfigurasi perlindungan ancaman untuk kumpulan pengguna, kirim permintaan [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API yang menyertakan `UserPoolId` parameter, tetapi bukan `ClientId` parameter. Berikut ini adalah contoh badan permintaan untuk kumpulan pengguna. Konfigurasi risiko ini mengambil serangkaian tindakan yang meningkat berdasarkan tingkat keparahan risiko dan memberi tahu pengguna di semua tingkat risiko. Ini menerapkan blok kredensial-dikompromikan untuk operasi pendaftaran.

Untuk menerapkan konfigurasi ini, Anda harus menyetel `AdvancedSecurityMode` ke `ENFORCED` dalam permintaan terpisah [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Untuk informasi selengkapnya tentang template placeholder seperti `{username}` dalam contoh ini, lihat. [Mengkonfigurasi MFA, otentikasi, verifikasi, dan pesan undangan](cognito-user-pool-settings-message-customizations.md)

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_IF_CONFIGURED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ],
      "SkippedIPRangeList": [ "203.0.113.0/24" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ API (app client) ]

Untuk mengatur konfigurasi perlindungan ancaman untuk klien aplikasi, kirim permintaan [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API yang menyertakan `UserPoolId` parameter dan `ClientId` parameter. Berikut ini adalah contoh badan permintaan untuk klien aplikasi. Konfigurasi risiko ini lebih parah daripada konfigurasi kumpulan pengguna, memblokir entri berisiko tinggi. Ini juga menerapkan blok kredensial-kompromi untuk operasi pendaftaran, masuk, dan mengatur ulang kata sandi.

Untuk menerapkan konfigurasi ini, Anda harus menyetel `AdvancedSecurityMode` ke `ENFORCED` dalam permintaan terpisah [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Untuk informasi selengkapnya tentang template placeholder seperti `{username}` dalam contoh ini, lihat. [Mengkonfigurasi MFA, otentikasi, verifikasi, dan pesan undangan](cognito-user-pool-settings-message-customizations.md)

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "BLOCK",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "ClientId": "1example23456789",
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ],
      "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

# Bekerja dengan deteksi kredensial-terkompromikan
<a name="cognito-user-pool-settings-compromised-credentials"></a>

Amazon Cognito dapat mendeteksi apakah nama pengguna dan kata sandi pengguna telah disusupi di tempat lain. Hal ini dapat terjadi ketika pengguna menggunakan kembali kredensi di lebih dari satu situs, atau ketika mereka menggunakan kata sandi yang tidak aman. Amazon Cognito memeriksa [pengguna lokal](cognito-terms.md#terms-localuser) yang masuk dengan nama pengguna dan kata sandi, login terkelola, dan dengan Amazon Cognito API.

Dari menu **perlindungan Ancaman** konsol Amazon Cognito, Anda dapat mengonfigurasi kredensyal yang **dikompromikan**. Konfigurasikan **deteksi Peristiwa** untuk memilih peristiwa pengguna yang ingin Anda pantau untuk kredensi yang disusupi. Konfigurasikan **tanggapan kredensil yang dikompromikan** untuk memilih apakah akan mengizinkan atau memblokir pengguna jika kredensil yang disusupi terdeteksi. Amazon Cognito dapat memeriksa kredensyal yang disusupi selama proses masuk, pendaftaran, dan perubahan kata sandi.

Saat memilih **Izinkan masuk**, Anda dapat meninjau CloudWatch Log Amazon untuk memantau evaluasi yang dibuat Amazon Cognito pada peristiwa pengguna. Untuk informasi selengkapnya, lihat [Melihat metrik perlindungan ancaman](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics). Saat Anda memilih **Blokir proses masuk, Amazon Cognito** mencegah proses masuk oleh pengguna yang menggunakan kredensi yang disusupi. Saat Amazon Cognito memblokir proses masuk untuk pengguna, Amazon Cognito akan menyetel akses pengguna. [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html)`RESET_REQUIRED` Pengguna dengan `RESET_REQUIRED` status harus mengubah kata sandi mereka sebelum mereka dapat masuk lagi.

Kredensi yang dikompromikan dapat memeriksa kata sandi untuk aktivitas pengguna berikut.

**Daftar**  
Kumpulan pengguna Anda memeriksa kata sandi yang dikirimkan pengguna dalam [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)operasi dan dari halaman pendaftaran login terkelola untuk indikator kompromi.

**Masuk**  
Kumpulan pengguna Anda memeriksa kata sandi yang dikirimkan pengguna dalam login berbasis kata sandi untuk indikator kompromi. Amazon Cognito dapat meninjau `ADMIN_USER_PASSWORD_AUTH` aliran masuk [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), `USER_PASSWORD_AUTH` aliran masuk [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), dan `PASSWORD` opsi `USER_AUTH` aliran di keduanya.  
Saat ini, Amazon Cognito tidak memeriksa kredensyal yang dikompromikan untuk operasi masuk dengan alur Kata Sandi Jarak Jauh Aman (SRP). SRP mengirimkan bukti kata sandi yang di-hash saat masuk. Amazon Cognito tidak memiliki akses ke kata sandi secara internal, sehingga hanya dapat mengevaluasi kata sandi yang diberikan klien Anda dalam teks biasa.

**Pengaturan ulang kata sandi**  
Kumpulan pengguna Anda memeriksa indikator kompromi dalam operasi yang menetapkan kata sandi pengguna baru dengan operasi pengaturan ulang kata sandi [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)swalayan. Kode yang diperlukan untuk operasi ini dihasilkan oleh [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)dan [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html).  
Kredensi yang dikompromikan tidak memeriksa kata sandi yang ditetapkan administrator sementara atau permanen yang disetel dengan. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Namun, dengan kata sandi sementara, kumpulan pengguna Anda memeriksa kata sandi dari respons terhadap `NEW_PASSWORD_REQUIRED` tantangan di dalam [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)dan [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html).

Untuk menambahkan perlindungan kredensial yang dikompromikan ke kolam pengguna Anda, lihat [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md).

# Bekerja dengan otentikasi adaptif
<a name="cognito-user-pool-settings-adaptive-authentication"></a>

Dengan autentikasi adaptif, Anda dapat mengonfigurasi kumpulan pengguna untuk memblokir login yang mencurigakan atau menambahkan otentikasi faktor kedua sebagai respons terhadap peningkatan tingkat risiko. Untuk setiap upaya masuk, Amazon Cognito menghasilkan skor risiko untuk seberapa besar kemungkinan permintaan masuk berasal dari sumber yang dikompromikan. Skor risiko ini didasarkan pada faktor perangkat dan pengguna yang disediakan aplikasi Anda, dan faktor lain yang diperoleh Amazon Cognito dari permintaan tersebut. Beberapa faktor yang berkontribusi terhadap evaluasi risiko oleh Amazon Cognito adalah alamat IP, agen pengguna, dan jarak geografis dari upaya masuk lainnya. Autentikasi adaptif dapat mengaktifkan atau memerlukan otentikasi multi-faktor (MFA) untuk pengguna di kumpulan pengguna Anda saat Amazon Cognito mendeteksi risiko dalam sesi pengguna, dan pengguna belum memilih metode MFA. Ketika Anda mengaktifkan MFA untuk pengguna, mereka selalu menerima tantangan untuk menyediakan atau mengatur faktor kedua selama otentikasi, terlepas dari bagaimana Anda mengonfigurasi otentikasi adaptif. Dari sudut pandang pengguna, aplikasi Anda menawarkan untuk membantu mereka menyiapkan MFA, dan secara opsional Amazon Cognito mencegah mereka masuk lagi hingga mereka mengonfigurasi faktor tambahan.

Amazon Cognito menerbitkan metrik tentang upaya masuk, tingkat risikonya, dan tantangan yang gagal ke Amazon. CloudWatch Untuk informasi selengkapnya, lihat [Melihat metrik perlindungan ancaman](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Untuk menambahkan autentikasi adaptif ke kolam pengguna Anda, lihat [Keamanan tingkat lanjut dengan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md).

**Topics**
+ [Ikhtisar otentikasi adaptif](#security-cognito-user-pool-settings-adaptive-authentication-overview)
+ [Menambahkan perangkat pengguna dan data sesi ke permintaan API](#user-pool-settings-adaptive-authentication-device-fingerprint)
+ [Melihat dan mengekspor riwayat acara pengguna](#user-pool-settings-adaptive-authentication-event-user-history)
+ [Memberikan umpan balik acara](#user-pool-settings-adaptive-authentication-feedback)
+ [Mengirim pesan notifikasi](#user-pool-settings-adaptive-authentication-messages)

## Ikhtisar otentikasi adaptif
<a name="security-cognito-user-pool-settings-adaptive-authentication-overview"></a>

Dari menu **Perlindungan ancaman** di konsol Amazon Cognito, Anda dapat memilih pengaturan untuk otentikasi adaptif, termasuk tindakan apa yang harus diambil pada tingkat risiko yang berbeda dan penyesuaian pesan notifikasi kepada pengguna. Anda dapat menetapkan konfigurasi perlindungan ancaman global untuk semua klien aplikasi Anda, tetapi menerapkan konfigurasi tingkat klien ke klien aplikasi individual.

**Autentikasi adaptif Amazon Cognito menetapkan salah satu tingkat risiko berikut untuk setiap sesi pengguna: **Tinggi**, **Sedang**, **Rendah**, atau Tanpa Risiko.**

**Pertimbangkan opsi Anda dengan cermat saat mengubah **metode Penegakan** dari **hanya Audit ke Fungsi** Penuh.** Respons otomatis yang Anda terapkan pada tingkat risiko memengaruhi tingkat risiko yang diberikan Amazon Cognito ke sesi pengguna berikutnya dengan karakteristik yang sama. Misalnya, setelah Anda memilih untuk tidak mengambil tindakan, atau **Izinkan**, sesi pengguna yang awalnya dievaluasi Amazon Cognito berisiko tinggi, Amazon Cognito menganggap sesi serupa memiliki risiko lebih rendah.


**Untuk setiap tingkat risiko, Anda dapat memilih dari opsi berikut:**  

|  Opsi  |  Tindakan  | 
| --- | --- | 
| Izinkan | Pengguna dapat masuk tanpa faktor tambahan. | 
| MFA opsional | Pengguna yang memiliki faktor kedua yang dikonfigurasi harus menyelesaikan tantangan faktor kedua untuk masuk. Nomor telepon untuk SMS dan token perangkat lunak TOTP adalah faktor kedua yang tersedia. Pengguna tanpa faktor kedua yang dikonfigurasi dapat masuk hanya dengan satu set kredensil. | 
| Memerlukan MFA | Pengguna yang memiliki faktor kedua yang dikonfigurasi harus menyelesaikan tantangan faktor kedua untuk masuk. Amazon Cognito memblokir proses masuk untuk pengguna yang tidak memiliki faktor kedua yang dikonfigurasi. | 
| Blokir | Amazon Cognito memblokir semua upaya masuk pada tingkat risiko yang ditentukan. | 

**catatan**  
Anda tidak perlu memverifikasi nomor telepon untuk menggunakannya untuk SMS sebagai faktor otentikasi kedua.

## Menambahkan perangkat pengguna dan data sesi ke permintaan API
<a name="user-pool-settings-adaptive-authentication-device-fingerprint"></a>

Anda dapat mengumpulkan dan meneruskan informasi tentang sesi pengguna Anda ke perlindungan ancaman Amazon Cognito saat Anda menggunakan API untuk mendaftarkannya, masuk, dan mengatur ulang kata sandi mereka. Informasi ini mencakup alamat IP pengguna Anda dan pengenal perangkat unik.

Anda mungkin memiliki perangkat jaringan perantara antara pengguna dan Amazon Cognito, seperti layanan proxy atau server aplikasi. Anda dapat mengumpulkan data konteks pengguna dan meneruskannya ke Amazon Cognito sehingga autentikasi adaptif menghitung risiko Anda berdasarkan karakteristik titik akhir pengguna, bukan server atau proxy Anda. Jika aplikasi sisi klien Anda memanggil operasi Amazon Cognito API secara langsung, autentikasi adaptif secara otomatis mencatat alamat IP sumber. Namun, itu tidak merekam informasi perangkat lain seperti `user-agent` kecuali Anda juga mengumpulkan sidik jari perangkat.

Hasilkan data ini dengan pustaka pengumpulan data konteks Amazon Cognito dan kirimkan ke perlindungan ancaman Amazon Cognito dengan [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ContextDataType.html)parameter dan. [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html) Pustaka pengumpulan data konteks disertakan dalam file AWS SDKs. Untuk informasi selengkapnya, lihat [Mengintegrasikan otentikasi dan otorisasi Amazon Cognito dengan aplikasi web dan seluler](cognito-integrate-apps.md). Anda dapat mengirimkan `ContextData` jika Anda memiliki paket fitur Plus. Untuk informasi selengkapnya, lihat [Menyiapkan perlindungan ancaman](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-configure-threat-protection).

Saat Anda memanggil operasi API yang diautentikasi Amazon Cognito berikut dari server aplikasi Anda, teruskan IP perangkat pengguna dalam parameter. `ContextData` Selain itu, berikan nama server, jalur server, dan data sidik jari perangkat yang dikodekan.
+ [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ [AdminRespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

Saat Anda memanggil operasi API Amazon Cognito yang tidak diautentikasi, Anda dapat mengirimkan ke perlindungan ancaman Amazon `UserContextData` Cognito. Data ini mencakup sidik jari perangkat dalam `EncodedData` parameter. Anda juga dapat mengirimkan `IpAddress` parameter di Anda `UserContextData` jika Anda memenuhi ketentuan berikut:
+ Kumpulan pengguna Anda ada di paket fitur Plus. Untuk informasi selengkapnya, lihat [Paket fitur kumpulan pengguna](cognito-sign-in-feature-plans.md).
+ Klien aplikasi Anda memiliki rahasia klien. Untuk informasi selengkapnya, lihat [Pengaturan khusus aplikasi dengan klien aplikasi](user-pool-settings-client-apps.md).
+ Anda telah mengaktifkan **Terima data konteks pengguna tambahan** di klien aplikasi Anda. Untuk informasi selengkapnya, lihat [Menerima data konteks pengguna tambahan ()Konsol Manajemen AWS](#user-pool-settings-adaptive-authentication-accept-user-context-data).

Aplikasi Anda dapat mengisi `UserContextData` parameter dengan data sidik jari perangkat yang dikodekan dan alamat IP perangkat pengguna dalam operasi API Amazon Cognito yang tidak diautentikasi berikut.
+ [InitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ [RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)
+ [SignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+ [ConfirmSignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [ForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [ConfirmForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [ResendConfirmationCode ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)

### Menerima data konteks pengguna tambahan ()Konsol Manajemen AWS
<a name="user-pool-settings-adaptive-authentication-accept-user-context-data"></a>

Kumpulan pengguna Anda menerima alamat IP dalam `UserContextData` parameter setelah Anda mengaktifkan fitur **Terima data konteks pengguna tambahan**. Anda tidak perlu mengaktifkan fitur ini jika:
+ Pengguna Anda hanya masuk dengan operasi API yang diautentikasi seperti [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), dan Anda menggunakan `ContextData` parameternya.
+ Anda hanya ingin operasi API Anda yang tidak diautentikasi mengirim sidik jari perangkat, tetapi bukan alamat IP, ke perlindungan ancaman Amazon Cognito.

Perbarui klien aplikasi Anda sebagai berikut di konsol Amazon Cognito untuk menambahkan dukungan untuk data konteks pengguna tambahan.

1. Masuk ke [konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Di panel navigasi, pilih **Kelola Kolam Pengguna Anda**, lalu pilih kolam pengguna yang ingin Anda edit.

1. Pilih menu **Klien aplikasi**.

1. Pilih atau buat klien aplikasi. Untuk informasi selengkapnya, lihat [Mengonfigurasi klien aplikasi kumpulan pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html).

1. Pilih **Edit** dari wadah **informasi klien App**.

1. Di **pengaturan autentikasi lanjutan** untuk klien aplikasi Anda, pilih **Terima data konteks pengguna tambahan**.

1. Pilih **Simpan perubahan**.

Untuk mengonfigurasi klien aplikasi agar menerima data konteks pengguna di Amazon Cognito API, setel `EnablePropagateAdditionalUserContextData` ke `true` dalam permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)atau [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)permintaan. Untuk informasi tentang cara bekerja dengan perlindungan ancaman di web atau aplikasi seluler Anda, lihat[Mengumpulkan data untuk perlindungan ancaman dalam aplikasi](user-pool-settings-viewing-threat-protection-app.md). Saat aplikasi memanggil Amazon Cognito dari server, kumpulkan data konteks pengguna dari sisi klien. Berikut ini adalah contoh yang menggunakan metode JavaScript `getData` SDK.

```
var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);
```

Saat mendesain aplikasi untuk menggunakan autentikasi adaptif, kami sarankan Anda memasukkan SDK Amazon Cognito terbaru ke dalam aplikasi Anda.. Versi terbaru SDK mengumpulkan informasi sidik jari perangkat seperti ID perangkat, model, dan zona waktu. Untuk informasi selengkapnya tentang Amazon Cognito SDKs, lihat [Menginstal SDK kumpulan pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sdk-links.html). Perlindungan ancaman Amazon Cognito hanya menyimpan dan menetapkan skor risiko untuk peristiwa yang dikirimkan aplikasi Anda dalam format yang benar. Jika Amazon Cognito mengembalikan respons kesalahan, periksa apakah permintaan Anda menyertakan hash rahasia yang valid dan `IPaddress` parameternya valid IPv4 atau alamat. IPv6 

**`ContextData`dan `UserContextData` sumber daya**
+ AWS Amplify SDK for Android: [GetUserContextData](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserPool.java#L626)
+ AWS Amplify SDK for iOS: [userContextData](https://github.com/aws-amplify/aws-sdk-ios/blob/d3cd4fa0086b526f2f5c9c6c58880c9da7004c66/AWSCognitoIdentityProviderASF/AWSCognitoIdentityProviderASF.m#L21)
+ JavaScript: [amazon-cognito-advanced-security-data.min.js](https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js)

## Melihat dan mengekspor riwayat acara pengguna
<a name="user-pool-settings-adaptive-authentication-event-user-history"></a>

Amazon Cognito menghasilkan log untuk setiap peristiwa autentikasi oleh pengguna saat Anda mengaktifkan perlindungan ancaman. Secara default, Anda dapat melihat log pengguna di menu **Pengguna** di konsol Amazon Cognito atau dengan operasi [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)API. Anda juga dapat mengekspor peristiwa ini ke sistem eksternal seperti CloudWatch Log, Amazon S3, atau Amazon Data Firehose. Fitur ekspor dapat membuat informasi keamanan tentang aktivitas pengguna di aplikasi Anda lebih mudah diakses oleh sistem analisis keamanan Anda sendiri.

**Topics**
+ [Melihat riwayat acara pengguna (Konsol Manajemen AWS)](#user-pool-settings-adaptive-authentication-event-user-history-console)
+ [Melihat riwayat acara pengguna (API/CLI)](#user-pool-settings-adaptive-authentication-event-user-history-api-cli)
+ [Mengekspor acara otentikasi pengguna](#user-pool-settings-adaptive-authentication-event-user-history-exporting)

### Melihat riwayat acara pengguna (Konsol Manajemen AWS)
<a name="user-pool-settings-adaptive-authentication-event-user-history-console"></a>

Untuk melihat riwayat login pengguna, Anda dapat memilih pengguna dari menu **Pengguna di konsol** Amazon Cognito. Amazon Cognito mempertahankan riwayat peristiwa pengguna selama dua tahun.

![\[Riwayat peristiwa pengguna\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-advanced-security-event-history.png)


Setiap acara masuk memiliki ID acara. Acara ini juga memiliki data konteks yang sesuai, seperti lokasi, detail perangkat, dan hasil deteksi risiko.

Anda juga dapat menghubungkan ID acara dengan token yang dikeluarkan Amazon Cognito pada saat merekam acara. ID dan token akses menyertakan ID peristiwa ini dalam muatannya. Amazon Cognito juga menghubungkan penggunaan token refresh dengan ID acara asli. Anda dapat melacak ID peristiwa asli kembali ke ID peristiwa login yang mengakibatkan penerbitan token Amazon Cognito. Anda dapat melacak penggunaan token dalam sistem Anda ke acara otentikasi tertentu. Untuk informasi selengkapnya, lihat [Memahami kumpulan pengguna token web JSON () JWTs](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

### Melihat riwayat acara pengguna (API/CLI)
<a name="user-pool-settings-adaptive-authentication-event-user-history-api-cli"></a>

[Anda dapat melakukan kueri riwayat peristiwa pengguna dengan operasi Amazon Cognito API [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)atau dengan AWS Command Line Interface (AWS CLI) dengan admin-list-user-auth -events.](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-list-user-auth-events.html)

------
#### [ AdminListUserAuthEvents request ]

Badan permintaan berikut untuk `AdminListUserAuthEvents` mengembalikan log aktivitas terbaru untuk satu pengguna.

```
{
  "UserPoolId": "us-west-2_EXAMPLE", 
  "Username": "myexampleuser", 
  "MaxResults": 1
}
```

------
#### [ admin-list-user-auth-events request ]

Permintaan berikut untuk `admin-list-user-auth-events` mengembalikan log aktivitas terbaru untuk satu pengguna.

```
aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
```

------
#### [ Response ]

Amazon Cognito mengembalikan badan respons JSON yang sama ke kedua permintaan. Berikut ini adalah contoh respons untuk peristiwa login login terkelola yang tidak ditemukan mengandung faktor risiko:

```
{
    "AuthEvents": [
        {
            "EventId": "[event ID]",
            "EventType": "SignIn",
            "CreationDate": "[Timestamp]",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.168.2.1",
                "DeviceName": "Chrome 125, Windows 10",
                "Timezone": "-07:00",
                "City": "Bellevue",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "[event ID]#[Timestamp]"
}
```

------

### Mengekspor acara otentikasi pengguna
<a name="user-pool-settings-adaptive-authentication-event-user-history-exporting"></a>

Konfigurasikan kumpulan pengguna Anda untuk mengekspor peristiwa pengguna dari perlindungan ancaman ke sistem eksternal. Sistem eksternal yang didukung—Amazon S3, CloudWatch Log, dan Amazon Data Firehose—dapat menambah biaya AWS tagihan Anda untuk data yang Anda kirim atau ambil. Untuk informasi selengkapnya, lihat [Mengekspor log aktivitas pengguna untuk perlindungan dari ancaman](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity).

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke [konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Pilih **Kolam Pengguna**.

1. Pilih kolam pengguna yang ada dari daftar, atau [buat kolam pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Pilih menu **Log streaming**. Pilih **Edit**.

1. Di bawah **Status log**, pilih kotak centang di samping **Aktifkan ekspor log aktivitas pengguna**.

1. Di bagian **Tujuan pencatatan**, pilih Layanan AWS yang ingin Anda tangani log: **grup CloudWatch log**, **aliran Amazon Data Firehose**, atau bucket **S3**.

1. Pilihan Anda akan mengisi pemilih sumber daya dengan jenis sumber daya yang sesuai. Pilih grup log, aliran, atau bucket dari daftar. Anda juga dapat memilih tombol **Buat** untuk menavigasi ke Konsol Manajemen AWS untuk layanan yang dipilih dan membuat sumber daya baru.

1. Pilih **Simpan perubahan**.

------
#### [ API ]

Pilih satu jenis tujuan untuk log aktivitas pengguna Anda.

Berikut ini adalah contoh badan `SetLogDeliveryConfiguration` permintaan yang menetapkan aliran Firehose sebagai tujuan log.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Berikut ini adalah contoh badan `SetLogDeliveryConfiguration` permintaan yang menetapkan bucket Amazon S3 sebagai tujuan log.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Berikut ini adalah contoh badan `SetLogDeliveryConfiguration` permintaan yang menetapkan grup CloudWatch log sebagai tujuan log.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Memberikan umpan balik acara
<a name="user-pool-settings-adaptive-authentication-feedback"></a>

Umpan balik peristiwa mempengaruhi evaluasi risiko secara real time dan meningkatkan algoritma evaluasi risiko dari waktu ke waktu. Anda dapat memberikan umpan balik tentang validitas upaya masuk melalui konsol Amazon Cognito dan operasi API. 

**catatan**  
Umpan balik acara Anda memengaruhi tingkat risiko yang diberikan Amazon Cognito ke sesi pengguna berikutnya dengan karakteristik yang sama.

Di konsol Amazon Cognito, pilih pengguna dari menu **Pengguna** dan pilih **Berikan umpan balik peristiwa**. Anda dapat meninjau detail acara dan **Set sebagai valid** atau **Set sebagai tidak valid**.

Konsol mencantumkan riwayat masuk dalam detail pengguna di menu **Pengguna**. Jika Anda memilih entri, Anda dapat menandai acara sebagai valid atau tidak valid. Anda juga dapat memberikan umpan balik melalui operasi API kumpulan pengguna [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html), dan melalui AWS CLI perintah [admin-update-auth-event-feedback](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-auth-event-feedback.html). 

Saat Anda memilih **Setel sebagai valid** di konsol Amazon Cognito atau memberikan `FeedbackValue` nilai `valid` di API, Anda memberi tahu Amazon Cognito bahwa Anda mempercayai sesi pengguna di mana Amazon Cognito telah mengevaluasi beberapa tingkat risiko. Jika Anda memilih **Setel sebagai tidak valid** di konsol Amazon Cognito atau memberikan `FeedbackValue` nilai `invalid` di API, Anda memberi tahu Amazon Cognito bahwa Anda tidak mempercayai sesi pengguna, atau Anda tidak percaya bahwa Amazon Cognito mengevaluasi tingkat risiko yang cukup tinggi.

## Mengirim pesan notifikasi
<a name="user-pool-settings-adaptive-authentication-messages"></a>

Dengan perlindungan ancaman, Amazon Cognito dapat memberi tahu pengguna Anda tentang upaya masuk yang berisiko. Amazon Cognito juga dapat meminta pengguna untuk memilih tautan untuk menunjukkan apakah proses masuk valid atau tidak valid. Amazon Cognito menggunakan umpan balik ini untuk meningkatkan akurasi deteksi risiko untuk kumpulan pengguna Anda. 

**catatan**  
Amazon Cognito hanya mengirimkan pesan notifikasi kepada pengguna saat tindakan mereka menghasilkan respons risiko otomatis: memblokir proses masuk, mengizinkan masuk, mengatur MFA ke opsional, atau memerlukan MFA. Beberapa permintaan mungkin diberi tingkat risiko tetapi tidak menghasilkan respons risiko otomatis autentikasi adaptif; untuk ini, kumpulan pengguna Anda tidak mengirim pemberitahuan. Misalnya, kata sandi yang salah mungkin dicatat dengan peringkat risiko, tetapi respons oleh Amazon Cognito adalah gagal masuk, bukan untuk menerapkan aturan otentikasi adaptif.

Di bagian **Respons risiko otomatis** pilih **Beri tahu Pengguna** untuk kasus berisiko rendah, sedang, atau tinggi.

![\[Beri tahu pengguna\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-adaptive-auth.png)


Amazon Cognito mengirimkan pemberitahuan email kepada pengguna Anda terlepas dari apakah mereka telah memverifikasi alamat email mereka.

Anda dapat menyesuaikan pesan email pemberitahuan, dan memberikan versi teks biasa dan HTML dari pesan-pesan ini. Untuk menyesuaikan notifikasi email Anda, buka **Templat email** dari **pesan autentikasi adaptif** dalam konfigurasi perlindungan ancaman Anda. Untuk mempelajari selengkapnya tentang templat email, lihat [Template pesan](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

# Mengumpulkan data untuk perlindungan ancaman dalam aplikasi
<a name="user-pool-settings-viewing-threat-protection-app"></a>

[Autentikasi adaptif](cognito-user-pool-settings-adaptive-authentication.md) Amazon Cognito mengevaluasi tingkat risiko untuk upaya pengambilalihan akun dari detail kontekstual upaya masuk pengguna. Aplikasi Anda harus menambahkan *data konteks* ke permintaan API sehingga perlindungan ancaman Amazon Cognito dapat mengevaluasi risiko dengan lebih akurat. Data konteks adalah informasi seperti alamat IP, agen browser, informasi perangkat, dan header permintaan yang memberikan informasi kontekstual tentang bagaimana pengguna terhubung ke kumpulan pengguna Anda.

Tanggung jawab utama aplikasi yang mengirimkan konteks ini ke Amazon Cognito adalah `EncodedData` parameter dalam permintaan otentikasi ke kumpulan pengguna. Untuk menambahkan data ini ke permintaan, Anda dapat menerapkan Amazon Cognito dengan SDK yang secara otomatis menghasilkan informasi ini untuk Anda, atau Anda dapat menerapkan modul untuk, JavaScript iOS, atau Android yang mengumpulkan data ini. Aplikasi *khusus klien* yang membuat permintaan langsung ke Amazon Cognito harus diterapkan. AWS Amplify SDKs Aplikasi *client-server* yang memiliki server perantara atau komponen API harus mengimplementasikan modul SDK terpisah.

Dalam skenario berikut, front end otentikasi Anda mengelola pengumpulan data konteks pengguna tanpa konfigurasi tambahan:
+ Login terkelola secara otomatis mengumpulkan dan mengirimkan data konteks ke perlindungan ancaman.
+ Semua AWS Amplify pustaka memiliki pengumpulan data konteks yang dibangun ke dalam metode otentikasi mereka.

## Mengirimkan data konteks pengguna dalam aplikasi khusus klien dengan Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Gambaran umum pengumpulan data untuk perlindungan ancaman dalam aplikasi Amplify.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


Amplify SDKs mendukung klien seluler yang mengautentikasi dengan Amazon Cognito secara langsung. Klien semacam ini membuat permintaan API langsung ke operasi API publik Amazon Cognito. Amplify klien secara otomatis mengumpulkan data konteks untuk perlindungan ancaman secara default.

Amplify aplikasi dengan JavaScript pengecualian. Mereka membutuhkan penambahan [JavaScript modul](#user-pool-settings-viewing-threat-protection-app-additional-resources-js) yang mengumpulkan data konteks pengguna.

Biasanya, aplikasi dalam konfigurasi ini menggunakan operasi API yang tidak diautentikasi seperti [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)dan. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)Objek membantu mengevaluasi risiko lebih akurat untuk operasi ini. Amplify SDKs menambahkan informasi perangkat dan sesi ke `EncodedData` parameter. `UserContextData`

## Mengumpulkan data konteks dalam aplikasi client-server
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

Beberapa aplikasi memiliki tingkat front-end yang mengumpulkan data otentikasi pengguna dan tingkat back-end aplikasi yang mengirimkan permintaan otentikasi ke Amazon Cognito. Ini adalah arsitektur umum di server web dan aplikasi yang didukung oleh layanan mikro. Dalam aplikasi ini, Anda harus mengimpor pustaka pengumpulan data konteks publik.

![\[Ikhtisar otentikasi sisi server dengan data konteks perlindungan ancaman di. JavaScript\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


Biasanya, server aplikasi dalam konfigurasi ini menggunakan operasi API yang diautentikasi seperti [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)dan [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)Objek membantu Amazon Cognito mengevaluasi risiko lebih akurat untuk operasi ini. Konten `ContextData` adalah data yang dikodekan yang dilewatkan oleh front end Anda ke server Anda, dan detail tambahan dari permintaan HTTP pengguna ke server Anda. Detail konteks tambahan ini, seperti header HTTP dan alamat IP, memberikan server aplikasi Anda dengan karakteristik lingkungan pengguna.

Server aplikasi Anda mungkin juga melakukan login dengan operasi API yang tidak diautentikasi seperti dan. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)Objek menginformasikan analisis risiko perlindungan ancaman dalam operasi ini. Operasi di pustaka pengumpulan data konteks publik yang tersedia menambahkan informasi keamanan ke `EncodedData` parameter dalam permintaan otentikasi. Selain itu, konfigurasikan kumpulan pengguna Anda untuk menerima data konteks tambahan dan menambahkan IP sumber pengguna ke `IpAddress` parameter`UserContextData`.

**Untuk menambahkan data konteks ke aplikasi client-server**

1. Di aplikasi front-end Anda, kumpulkan data konteks yang dikodekan dari klien dengan [iOS, Android,](#user-pool-settings-viewing-threat-protection-app-additional-resources) atau modul. JavaScript 

1. Lulus data yang dikodekan dan detail permintaan otentikasi ke server aplikasi Anda.

1. Di server aplikasi Anda, ekstrak alamat IP pengguna, header HTTP yang relevan, nama server yang diminta, dan jalur yang diminta dari permintaan HTTP. Isi nilai ini ke [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)parameter permintaan API Anda ke Amazon Cognito.

1. Isi `EncodedData` parameter permintaan API Anda dengan data perangkat yang dikodekan yang dikumpulkan modul SDK Anda. `ContextData` Tambahkan data konteks ini ke permintaan otentikasi.

## Pustaka data konteks untuk aplikasi client-server
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

`amazon-cognito-advanced-security-data.min.js`Modul mengumpulkan `EncodedData` bahwa Anda dapat meneruskan ke server aplikasi Anda.

Tambahkan `amazon-cognito-advanced-security-data.min.js` modul ke JavaScript konfigurasi Anda. Ganti `<region>` dengan Wilayah AWS dari daftar berikut:`us-east-1`,`us-east-2`,`us-west-2`,`eu-west-1`,`eu-west-2`, atau`eu-central-1`.

```
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
```

Untuk menghasilkan `encodedContextData` objek yang dapat Anda gunakan dalam `EncodedData` parameter, tambahkan yang berikut ini ke sumber JavaScript aplikasi Anda:

```
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
```

### iOS/Swift
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Untuk menghasilkan data konteks, aplikasi iOS dapat mengintegrasikan [AWSCognitoIdentityProvidermodul](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) [SDK for iOS Mobile](https://github.com/aws-amplify/aws-sdk-ios/tree/main) ASF.

Untuk mengumpulkan data konteks yang dikodekan untuk perlindungan ancaman, tambahkan cuplikan berikut ke aplikasi Anda:

```
import AWSCognitoIdentityProviderASF

let deviceId = getDeviceId()
let encodedContextData = AWSCognitoIdentityProviderASF.userContextData(
                            userPoolId, 
                            username: username, 
                            deviceId: deviceId, 
                            userPoolClientId: userPoolClientId)
                                
/**
 * Reuse DeviceId from keychain or generate one for the first time.
 */
func getDeviceId() -> String {
    let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId")
    
   if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) {
        return existingDeviceId
    }

    let newDeviceId = UUID().uuidString
    self.keychain.setString(newDeviceId, forKey: deviceIdKey)
    return newDeviceId
}

/**
 * Get a namespaced keychain key given a namespace and key
 */    
func getKeyChainKey(namespace: String, key: String) -> String {
    return "\(namespace).\(key)"
}
```

### Android
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Untuk menghasilkan data konteks, aplikasi Android dapat mengintegrasikan [aws-android-sdk-cognitoidentityprovidermodul](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf) [Mobile SDK for](https://github.com/aws-amplify/aws-sdk-android/tree/main) Android -asf.

Untuk mengumpulkan data konteks yang dikodekan untuk perlindungan ancaman, tambahkan cuplikan berikut ke aplikasi Anda:

```
UserContextDataProvider provider = UserContextDataProvider.getInstance();
// context here is android application context.
String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);
```

# Kaitkan ACL AWS WAF web dengan kumpulan pengguna
<a name="user-pool-waf"></a>

AWS WAF adalah firewall aplikasi web. Dengan daftar kontrol akses AWS WAF web (web ACL), Anda dapat melindungi kumpulan pengguna dari permintaan yang tidak diinginkan ke UI yang dihosting klasik, login terkelola, dan titik akhir layanan Amazon Cognito API. ACL web memberi Anda kontrol halus atas semua permintaan web HTTPS yang ditanggapi oleh kumpulan pengguna Anda. Untuk informasi selengkapnya tentang AWS WAF web ACLs, lihat [Mengelola dan menggunakan daftar kontrol akses web (web ACL)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) di *Panduan AWS WAF Pengembang*.

Jika Anda memiliki ACL AWS WAF web yang terkait dengan kumpulan pengguna, Amazon Cognito meneruskan header dan konten permintaan non-rahasia yang dipilih dari pengguna Anda. AWS WAF AWS WAF memeriksa isi permintaan, membandingkannya dengan aturan yang Anda tentukan di ACL web Anda, dan mengembalikan respons ke Amazon Cognito.

## Hal-hal yang perlu diketahui tentang AWS WAF web ACLs dan Amazon Cognito
<a name="user-pool-waf-things-to-know"></a>
+ Anda tidak dapat mengonfigurasi aturan ACL web agar sesuai dengan informasi identitas pribadi (PII) dalam permintaan kumpulan pengguna, misalnya nama pengguna, kata sandi, nomor telepon, atau alamat email. Data ini tidak akan tersedia untuk AWS WAF. Sebagai gantinya, konfigurasikan aturan ACL web Anda agar sesuai dengan data sesi di header, jalur, dan badan seperti alamat IP, agen browser, dan operasi API yang diminta.
+ Kondisi aturan ACL Web hanya dapat mengembalikan respons blok kustom ke permintaan **pertama** pengguna ke halaman login terkelola interaktif pengguna. Ketika koneksi berikutnya cocok dengan kondisi respons blok kustom, mereka mengembalikan kode status kustom Anda, header, dan tanggapan pengalihan, tetapi pesan blok default.
+ Permintaan yang diblokir AWS WAF tidak dihitung terhadap kuota tingkat permintaan untuk jenis permintaan apa pun. AWS WAF Handler dipanggil sebelum penangan pelambatan tingkat API.
+ Saat Anda membuat ACL web, sejumlah kecil waktu berlalu sebelum ACL web sepenuhnya disebarkan dan tersedia untuk Amazon Cognito. Waktu propagasi bisa dari beberapa detik hingga beberapa menit. AWS WAF mengembalikan a [https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)ketika Anda mencoba untuk mengaitkan ACL web sebelum sepenuhnya disebarkan.
+ Anda dapat mengaitkan satu ACL web dengan setiap kumpulan pengguna.
+ Permintaan Anda mungkin menghasilkan muatan yang lebih besar dari batas apa yang AWS WAF dapat diperiksa. Lihat [Penanganan komponen permintaan ukuran besar](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) di *Panduan AWS WAF Pengembang* untuk mempelajari cara mengonfigurasi cara AWS WAF menangani permintaan oversize dari Amazon Cognito.
+ Anda tidak dapat mengaitkan ACL web yang menggunakan [pencegahan pengambilalihan akun Kontrol AWS WAF Penipuan (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) dengan kumpulan pengguna Amazon Cognito. Fitur ATP ada di grup aturan `AWS-AWSManagedRulesATPRuleSet` terkelola. Sebelum Anda mengaitkan ACL web dengan kumpulan pengguna, pastikan bahwa ACL tidak menggunakan grup aturan terkelola ini.
+ Bila Anda memiliki ACL AWS WAF web yang terkait dengan kumpulan pengguna, dan aturan di ACL web Anda menyajikan CAPTCHA, ini dapat menyebabkan kesalahan yang tidak dapat dipulihkan dalam pendaftaran TOTP login terkelola. Untuk membuat aturan yang memiliki tindakan CAPTCHA dan tidak memengaruhi TOTP login terkelola, lihat. [Mengkonfigurasi ACL AWS WAF web Anda untuk login terkelola TOTP MFA](user-pool-settings-mfa-totp.md#totp-waf)

AWS WAF memeriksa permintaan ke titik akhir berikut.

**Login terkelola dan UI yang dihosting klasik**  
Permintaan ke semua titik akhir di. [Titik akhir kumpulan pengguna dan referensi login terkelola](cognito-userpools-server-contract-reference.md)

**Operasi API publik**  
Permintaan dari aplikasi Anda ke Amazon Cognito API yang tidak menggunakan AWS kredensyal untuk mengotorisasi. Ini termasuk operasi API seperti [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html), dan [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html). Operasi API yang berada dalam lingkup AWS WAF tidak memerlukan otentikasi dengan AWS kredensil. Mereka tidak diautentikasi, atau diotorisasi dengan string sesi atau token akses. Untuk informasi selengkapnya, lihat [Daftar operasi API yang dikelompokkan berdasarkan model otorisasi](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

Anda dapat mengonfigurasi aturan di ACL web Anda dengan tindakan aturan yang **Menghitung, **Mengizinkan****, **Memblokir**, atau menampilkan **CAPTCHA** sebagai respons terhadap permintaan yang cocok dengan aturan. Untuk informasi selengkapnya, lihat [AWS WAF aturan](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) di *Panduan AWS WAF Pengembang*. Bergantung pada tindakan aturan, Anda dapat menyesuaikan respons yang dikembalikan Amazon Cognito ke pengguna Anda.

**penting**  
Opsi Anda untuk menyesuaikan respons kesalahan bergantung pada cara Anda membuat permintaan API.  
Anda dapat menyesuaikan kode kesalahan dan badan respons permintaan login terkelola. Anda hanya dapat menyajikan CAPTCHA untuk dipecahkan oleh pengguna Anda dalam login terkelola.
Untuk permintaan yang Anda buat dengan [API kumpulan pengguna](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) Amazon Cognito, Anda dapat menyesuaikan badan respons permintaan yang menerima respons **Blokir**. Anda juga dapat menentukan kode kesalahan khusus dalam kisaran 400-499.
The AWS Command Line Interface (AWS CLI) dan AWS SDKs mengembalikan `ForbiddenException` kesalahan ke permintaan yang menghasilkan respons **Block** atau **CAPTCHA**.

## Mengaitkan ACL web dengan kumpulan pengguna Anda
<a name="user-pool-waf-setting-up"></a>

Untuk bekerja dengan ACL web di kumpulan pengguna Anda, prinsipal AWS Identity and Access Management (IAM) Anda harus memiliki Amazon AWS WAF Cognito dan izin berikut. Untuk informasi tentang AWS WAF izin, lihat [izin AWS WAF API di Panduan AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) *Pengembang*.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

[Meskipun Anda harus memberikan izin IAM, tindakan yang tercantum hanya izin dan tidak sesuai dengan operasi API apa pun.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)

**AWS WAF Untuk mengaktifkan kumpulan pengguna Anda dan mengaitkan ACL web**

1. Masuk ke [konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Di panel navigasi, pilih **Kumpulan Pengguna**, dan pilih kumpulan pengguna yang ingin Anda edit.

1. Pilih **AWS WAF**tab di bagian **Keamanan**.

1. Pilih **Edit**.

1. Pilih **Gunakan AWS WAF dengan kumpulan pengguna Anda**.  
![\[Screenshot dari kotak AWS WAF dialog dengan Gunakan AWS WAF dengan kumpulan pengguna Anda dipilih.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/cup-WAF-console.png)

1. Pilih **ACL AWS WAF Web** yang sudah Anda buat, atau pilih **Buat ACL web AWS WAF** untuk membuatnya di AWS WAF sesi baru di. Konsol Manajemen AWS

1. Pilih **Simpan perubahan**.

Untuk mengaitkan ACL web secara terprogram dengan kumpulan pengguna Anda di AWS Command Line Interface atau SDK, gunakan [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) dari API. AWS WAF Amazon Cognito tidak memiliki operasi API terpisah yang mengaitkan ACL web.

## Menguji dan mencatat AWS WAF web ACLs
<a name="user-pool-waf-evaluating-and-logging"></a>

Saat Anda menetapkan tindakan aturan ke **Count** di ACL web Anda, AWS WAF tambahkan permintaan ke hitungan permintaan yang cocok dengan aturan. Untuk menguji ACL web dengan kumpulan pengguna Anda, tetapkan tindakan aturan ke **Hitung** dan pertimbangkan volume permintaan yang cocok dengan setiap aturan. Misalnya, jika aturan yang ingin disetel ke tindakan **Blokir** cocok dengan sejumlah besar permintaan yang Anda tentukan sebagai lalu lintas pengguna normal, Anda mungkin perlu mengonfigurasi ulang aturan Anda. Untuk informasi selengkapnya, lihat [Menguji dan menyetel AWS WAF perlindungan Anda](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html) di Panduan *AWS WAF Pengembang*.

Anda juga dapat mengonfigurasi header permintaan log AWS WAF ke grup CloudWatch log Amazon Logs, bucket Amazon Simple Storage Service (Amazon S3), atau Amazon Data Firehose. Anda dapat mengidentifikasi permintaan Amazon Cognito yang Anda buat dengan API kumpulan pengguna oleh dan`x-amzn-cognito-client-id`. `x-amzn-cognito-operation-name` Permintaan login terkelola hanya menyertakan `x-amzn-cognito-client-id` header. Untuk informasi selengkapnya, lihat [Mencatat lalu lintas ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) di *Panduan AWS WAF Pengembang*.

AWS WAF web ACLs tersedia di semua [paket fitur](cognito-sign-in-feature-plans.md) kumpulan pengguna. Fitur keamanan AWS WAF pelengkap perlindungan ancaman Amazon Cognito. Anda dapat mengaktifkan kedua fitur di kumpulan pengguna. AWS WAF tagihan secara terpisah untuk pemeriksaan permintaan kumpulan pengguna. Untuk informasi selengkapnya, silakan lihat [Harga AWS WAF](https://aws.amazon.com/waf/pricing).

Data AWS WAF permintaan logging tunduk pada penagihan tambahan oleh layanan tempat Anda menargetkan log Anda. Untuk informasi selengkapnya, lihat [Harga untuk mencatat informasi lalu lintas ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing) di *Panduan AWS WAF Pengembang*.

# Sensitivitas casing kumpulan pengguna
<a name="user-pool-case-sensitivity"></a>

Kumpulan pengguna Amazon Cognito yang Anda buat secara default tidak peka huruf besar/kecil. Konsol Manajemen AWS Jika kumpulan pengguna tidak peka huruf besar/kecil, *user@example.com* dan *User@example.com* merujuk ke pengguna yang sama. Ketika nama pengguna dalam kumpulan pengguna tidak peka huruf besar/kecil, `email` atribut `preferred_username` and juga tidak peka huruf besar/kecil.

Ketidakpekaan kasus berlaku tidak hanya untuk input atribut, tetapi juga output. Nilai atribut huruf campuran dalam kumpulan pengguna yang tidak peka huruf kecil diratakan menjadi huruf kecil dalam output teks kumpulan pengguna. [Contoh output teks kumpulan pengguna adalah respons [UserInfo](userinfo-endpoint.md), respons kueri pengguna seperti keluaran [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html), dan peristiwa masukan ke pemicu Lambda.](cognito-user-pools-working-with-lambda-triggers.md)

Untuk memperhitungkan setelan sensitivitas huruf besar kumpulan pengguna, identifikasi pengguna dalam kode aplikasi Anda berdasarkan atribut pengguna alternatif. Karena kasus nama pengguna, nama pengguna yang disukai, atau atribut alamat email dapat bervariasi di profil pengguna yang berbeda, rujuk ke `sub` atribut. Anda juga dapat membuat atribut kustom yang tidak dapat diubah di kumpulan pengguna, dan menetapkan nilai pengenal unik Anda sendiri ke atribut di setiap profil pengguna baru. Saat pertama kali membuat pengguna, Anda dapat menulis nilai ke atribut kustom yang tidak dapat diubah yang Anda buat.

**catatan**  
Terlepas dari pengaturan sensitivitas kasus kumpulan pengguna Anda, Amazon Cognito mengharuskan pengguna gabungan dari penyedia identitas SAMP atau OIDC (iDP) meneruskan klaim atau unik dan peka huruf besar/kecil. `NameId` `sub` Untuk informasi selengkapnya tentang sensitivitas kasus pengenal unik dan SAMP IdPs, lihat. [Menerapkan masuk SAMP yang diinitasikan SP](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication)

Membuat kumpulan pengguna yang peka huruf besar/kecil  
Jika Anda membuat resource dengan operasi AWS Command Line Interface (AWS CLI) dan API seperti [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html), Anda harus menyetel `CaseSensitive` parameter Boolean ke`false`. Pengaturan ini membuat kumpulan pengguna yang tidak peka huruf besar/kecil. Jika Anda tidak menentukan nilai, `CaseSensitive` defaultnya. `true` Kumpulan pengguna yang Anda buat di konsol Amazon Cognito tidak peka huruf besar/kecil. Untuk menghasilkan kumpulan pengguna yang peka huruf besar/kecil, Anda harus menggunakan operasi. `CreateUserPool` Sebelum 12 Februari 2020, kumpulan pengguna default menjadi peka huruf besar/kecil terlepas dari platformnya.   
Di menu **Masuk** Konsol Manajemen AWS dan di `UsernameConfiguration` properti [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration), Anda dapat meninjau pengaturan sensitivitas kasus untuk setiap kumpulan pengguna di akun Anda.

Migrasi ke kumpulan pengguna baru  
Karena potensi konflik antar profil pengguna, Anda tidak dapat mengubah kumpulan pengguna Amazon Cognito dari peka huruf besar/kecil menjadi tidak peka huruf besar/kecil. Sebagai gantinya, memigrasikan pengguna Anda ke kumpulan pengguna baru. Anda harus membuat kode migrasi untuk menyelesaikan konflik terkait kasus. Kode ini harus mengembalikan pengguna baru yang unik atau menolak upaya masuk saat mendeteksi konflik. Di kumpulan pengguna baru yang tidak peka huruf besar/kecil, tetapkan file. [Memigrasi pengguna pemicu Lambda](user-pool-lambda-migrate-user.md) AWS Lambda Fungsi ini dapat membuat pengguna di kumpulan pengguna baru yang tidak peka huruf besar/kecil. Ketika pengguna gagal masuk dengan kumpulan pengguna yang tidak peka huruf besar/kecil, fungsi Lambda menemukan dan menduplikasi pengguna dari kumpulan pengguna yang peka huruf besar/kecil. Anda juga dapat mengaktifkan pemicu [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)Lambda pengguna yang bermigrasi pada acara. Amazon Cognito meneruskan informasi pengguna dan metadata peristiwa dari tindakan masuk atau pemulihan kata sandi ke fungsi Lambda Anda. Anda dapat menggunakan data peristiwa untuk mengelola konflik antara nama pengguna dan alamat email saat fungsi Anda membuat pengguna baru di kumpulan pengguna yang tidak peka huruf besar/kecil. Konflik ini antara nama pengguna dan alamat email yang unik di kumpulan pengguna yang peka huruf besar/kecil, tetapi identik dalam kumpulan pengguna yang tidak peka huruf besar/kecil.   
Untuk informasi selengkapnya tentang cara menggunakan pemicu Lambda pengguna yang bermigrasi di antara kumpulan pengguna Amazon Cognito, [lihat Memigrasi Pengguna ke kumpulan pengguna Amazon Cognito](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/) di blog. AWS 

# Perlindungan penghapusan kumpulan pengguna
<a name="user-pool-settings-deletion-protection"></a>

Untuk membuatnya agar administrator Anda tidak sengaja menghapus kumpulan pengguna Anda, aktifkan perlindungan penghapusan. Dengan proteksi penghapusan aktif, Anda harus mengonfirmasi bahwa Anda ingin menghapus kumpulan pengguna sebelum menghapusnya. Saat Anda menghapus kumpulan pengguna di Konsol Manajemen AWS, Anda dapat menonaktifkan perlindungan penghapusan secara bersamaan. Saat Anda menerima prompt untuk menonaktifkan perlindungan penghapusan dan mengonfirmasi niat Anda untuk menghapus, seperti yang ditunjukkan pada gambar berikut, Amazon Cognito menghapus kumpulan pengguna Anda.

![\[Tangkapan layar dari Konsol Manajemen AWS menampilkan prompt untuk menghapus kumpulan pengguna dengan prompt yang disertakan untuk juga menonaktifkan perlindungan penghapusan.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/amazon-cognito-delete-user-pool-deactivate-deletion-protection.png)


Saat Anda ingin menghapus kumpulan pengguna dengan permintaan Amazon Cognito API, Anda harus terlebih dahulu mengubahnya `DeletionProtection` `Inactive` dalam permintaan. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) Jika Anda tidak menonaktifkan perlindungan penghapusan, Amazon Cognito mengembalikan kesalahan. `InvalidParameterException` Setelah Anda menonaktifkan perlindungan penghapusan, Anda dapat menghapus kumpulan pengguna dalam permintaan. [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html)

Amazon Cognito mengaktifkan **perlindungan Penghapusan** secara default saat Anda membuat kumpulan pengguna baru di. Konsol Manajemen AWS Saat Anda membuat kumpulan pengguna dengan `CreateUserPool` API, perlindungan penghapusan tidak aktif secara default. Untuk menggunakan fitur ini di kumpulan pengguna yang Anda buat dengan AWS CLI atau AWS SDK, setel `DeletionProtection` parameternya. `True`

Anda dapat mengaktifkan atau menonaktifkan status perlindungan penghapusan di wadah **perlindungan Penghapusan** di menu **Pengaturan** di konsol Amazon Cognito.

# Untuk mengkonfigurasi perlindungan penghapusan


1. Masuk ke [Konsol Amazon Cognito](https://console.aws.amazon.com/cognito/home). Anda mungkin diminta untuk AWS kredensialnya.

1. Pilih **Kolam Pengguna**.

1. Pilih kolam pengguna yang ada dari daftar, atau [buat kolam pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Pilih menu **Pengaturan** dan arahkan ke tab **Perlindungan Penghapusan.** Pilih **Aktifkan** atau **Nonaktifkan**.

1. Konfirmasikan pilihan Anda dalam dialog berikutnya.

# Mengelola respons kesalahan keberadaan pengguna
<a name="cognito-user-pool-managing-errors"></a>

Amazon Cognito mendukung penyesuaian respons kesalahan yang dikembalikan oleh kumpulan pengguna. Respons kesalahan khusus tersedia untuk pembuatan dan otentikasi pengguna, pemulihan kata sandi, dan operasi konfirmasi.

Gunakan pengaturan `PreventUserExistenceErrors` dari klien aplikasi kolam pengguna untuk mengaktifkan atau menonaktifkan keberadaan pengguna terkait kesalahan. Saat Anda membuat klien aplikasi baru dengan API kumpulan pengguna Amazon Cognito, `PreventUserExistenceErrors` secara default`LEGACY`, atau dinonaktifkan. Di konsol Amazon Cognito, opsi **Cegah kesalahan keberadaan pengguna** —setelan `ENABLED` untuk `PreventUserExistenceErrors` —dipilih secara default. Untuk memperbarui `PreventUserExistenceErrors` konfigurasi Anda, lakukan salah satu hal berikut:
+ Ubah nilai `PreventUserExistenceErrors` antara `ENABLED` dan `LEGACY` dalam permintaan [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API.
+ Edit klien aplikasi Anda di konsol Amazon Cognito dan ubah status **Cegah kesalahan keberadaan pengguna** antara selected (`ENABLED`) dan deselected (). `LEGACY`

Jika properti ini memiliki nilai`LEGACY`, klien aplikasi Anda akan menampilkan respons `UserNotFoundException` kesalahan saat pengguna mencoba masuk dengan nama pengguna yang tidak ada di kumpulan pengguna Anda.

Jika properti ini memiliki nilai`ENABLED`, klien aplikasi Anda tidak mengungkapkan tidak adanya akun pengguna di kumpulan pengguna Anda dengan `UserNotFoundException` kesalahan. `PreventUserExistenceErrors`Konfigurasi `ENABLED` memiliki efek berikut ketika Anda mengirimkan permintaan untuk nama pengguna yang tidak ada:
+ Amazon Cognito merespons dengan informasi nonspesifik terhadap permintaan API di mana tanggapannya mungkin mengungkapkan bahwa ada pengguna yang valid.
+ [Amazon Cognito mengembalikan respons kegagalan autentikasi generik ke permintaan lupa kata sandi, dan ke permintaan otentikasi dengan alur autentikasi *kecuali* untuk otentikasi berbasis pilihan () —misalnya, atau.](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) `USER_AUTH` `USER_SRP_AUTH` `CUSTOM_AUTH` Respons kesalahan memberitahu Anda nama pengguna atau kata sandi salah.
+ Amazon Cognito menanggapi permintaan autentikasi berbasis pilihan dengan pilihan acak dari jenis tantangan yang diizinkan untuk kumpulan pengguna. Kumpulan pengguna Anda mungkin mengembalikan kunci sandi, kata sandi satu kali, atau tantangan kata sandi.
+ Perilaku konfirmasi akun Amazon Cognito dan pemulihan kata sandi APIs bergantian antara mengembalikan respons yang menunjukkan kode dikirim ke media pengiriman simulasi dan mengembalikan kesalahan. `InvalidParameterException`

Informasi berikut merinci perilaku operasi kumpulan pengguna saat `PreventUserExistenceErrors` disetel ke`ENABLED`.

## Operasi otentikasi dan pembuatan pengguna
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Anda dapat mengonfigurasi respons kesalahan di username-password, dan otentikasi Secure Remote Password (SRP). Anda juga dapat menyesuaikan kesalahan yang Anda kembalikan dengan otentikasi khusus. Otentikasi berbasis pilihan tidak terpengaruh oleh konfigurasi Anda. `PreventUserExistenceErrors`Detail pengungkapan keberadaan pengguna dalam alur otentikasi

**Otentikasi berbasis pilihan**  
Dalam alur autentikasi `USER_AUTH` berbasis pilihan, Amazon Cognito mengembalikan tantangan dari faktor autentikasi utama yang tersedia, tergantung pada konfigurasi kumpulan pengguna dan atribut pengguna. Alur otentikasi ini dapat mengembalikan kata sandi, kata sandi jarak jauh aman (SRP), WebAuthn (kunci sandi), kata sandi satu kali SMS (OTP), atau tantangan OTP email. Dengan `PreventUserExistenceErrors` aktif, Amazon Cognito mengeluarkan tantangan bagi pengguna yang tidak ada untuk menyelesaikan satu atau lebih bentuk otentikasi yang tersedia. Dengan `PreventUserExistenceErrors` tidak aktif, Amazon Cognito mengembalikan `UserNotFound` pengecualian.

**Otentikasi nama pengguna dan kata sandi**  
Alur otentikasi `ADMIN_USER_PASSWORD_AUTH``USER_PASSWORD_AUTH`,, dan `PASSWORD` aliran `USER_AUTH` pengembalian a `NotAuthorizedException` dengan pesan `Incorrect username or password` saat `PreventUserExistenceErrors` aktif. Ketika `PreventUserExistenceErrors` tidak aktif, arus ini kembali`UserNotFoundException`.

**Autentikasi berbasis Secure Remote Password (SRP)**  
Sebagai praktik terbaik, hanya menerapkan `PreventUserExistenceErrors` dengan `USER_SRP_AUTH` atau `PASSWORD_SRP` aliran `USER_AUTH` di kumpulan pengguna tanpa alamat email, nomor telepon, atau [atribut alias](user-pool-settings-attributes.md#user-pool-settings-aliases) nama pengguna pilihan. Pengguna dengan atribut alias mungkin tidak tunduk pada penekanan keberadaan pengguna dalam alur otentikasi SRP. Alur otentikasi nama pengguna-kata sandi—`ADMIN_USER_PASSWORD_AUTH`,`USER_PASSWORD_AUTH`, dan `USER_AUTH` `PASSWORD` tantangannya — sepenuhnya menekan keberadaan pengguna dari atribut alias.  
[Saat seseorang mencoba login SRP dengan nama pengguna yang tidak diketahui oleh klien aplikasi Anda, Amazon Cognito mengembalikan respons simulasi pada langkah pertama seperti yang dijelaskan dalam RFC 5054.](https://tools.ietf.org/html/rfc5054#section-2.5.1.3) Amazon Cognito mengembalikan garam yang sama dan ID pengguna internal dalam format [UUID](cognito-terms.md#terms-uuid) untuk kombinasi nama pengguna dan kumpulan pengguna yang sama. Saat Anda mengirim permintaan `RespondToAuthChallenge` API dengan bukti kata sandi, Amazon Cognito mengembalikan `NotAuthorizedException` kesalahan umum ketika nama pengguna atau kata sandi salah. Untuk informasi selengkapnya tentang implementasi otentikasi SRP, lihat. [Masuk dengan kata sandi persisten dan muatan aman](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)  
[Anda dapat mensimulasikan respons generik dengan autentikasi nama pengguna dan kata sandi jika Anda menggunakan atribut alias berbasis verifikasi, dan nama pengguna yang tidak dapat diubah tidak diformat sebagai UUID.](cognito-terms.md#terms-uuid)

**Tantangan otentikasi khusus pemicu Lambda**  
Amazon Cognito memanggil [tantangan autentikasi kustom yang dipicu Lambda](user-pool-lambda-challenge.md) saat pengguna mencoba masuk dengan `CUSTOM_AUTH` alur otentikasi, tetapi nama pengguna mereka tidak ditemukan. Peristiwa masukan mencakup parameter boolean bernama `UserNotFound` dengan nilai `true` untuk setiap pengguna yang tidak ada. Parameter ini muncul dalam peristiwa permintaan yang dikirim oleh kumpulan pengguna Anda ke fungsi Lambda buat, tentukan, dan verifikasi tantangan autentikasi yang membentuk arsitektur autentikasi khusus. Saat memeriksa indikator ini dalam logika fungsi Lambda, Anda dapat mensimulasikan tantangan otentikasi khusus untuk pengguna yang tidak ada.

**Pemicu Lambda pra otentikasi**  
Amazon Cognito memanggil [pemicu pra otentikasi](user-pool-lambda-pre-authentication.md) saat pengguna mencoba masuk tetapi nama pengguna mereka tidak ditemukan. Peristiwa masukan mencakup `UserNotFound` parameter dengan nilai `true` untuk setiap pengguna yang tidak ada.

Daftar berikut menjelaskan efek `PreventUserExistenceErrors` pada pembuatan akun pengguna.Detail pengungkapan keberadaan pengguna dalam alur pembuatan pengguna

**SignUp**  
`SignUp`Operasi selalu kembali `UsernameExistsException` ketika nama pengguna sudah diambil. Jika Anda tidak ingin Amazon Cognito menampilkan `UsernameExistsException` kesalahan untuk alamat email dan nomor telepon saat mendaftar pengguna di aplikasi, gunakan atribut alias berbasis verifikasi. Untuk informasi selengkapnya tentang alias, lihat[Menyesuaikan atribut masuk](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Untuk contoh bagaimana Amazon Cognito dapat mencegah penggunaan permintaan `SignUp` API untuk menemukan pengguna di kumpulan pengguna Anda, lihat. [Mencegah `UsernameExistsException` kesalahan untuk alamat email dan nomor telepon saat mendaftar](#cognito-user-pool-managing-errors-prevent-userexistence-errors)

**Mengimpor pengguna**  
Jika `PreventUserExistenceErrors` diaktifkan, selama otentikasi pengguna yang diimpor, `NotAuthorizedException` kesalahan umum dikembalikan yang menunjukkan nama pengguna atau kata sandi salah alih-alih kembali. `PasswordResetRequiredException` Untuk informasi selengkapnya, lihat [Mengharuskan pengguna yang diimpor untuk mengatur ulang kata sandi mereka](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**Memigrasi pengguna pemicu Lambda**  
Amazon Cognito mengembalikan respons yang disimulasikan untuk pengguna yang tidak ada ketika respons kosong diatur dalam konteks peristiwa asli oleh pemicu Lambda. Untuk informasi selengkapnya, lihat [Mengimpor pengguna dengan pemicu Lambda migrasi pengguna](cognito-user-pools-import-using-lambda.md). 

### Mencegah `UsernameExistsException` kesalahan untuk alamat email dan nomor telepon saat mendaftar
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

Contoh berikut menunjukkan bagaimana, ketika Anda mengonfigurasi atribut alias di kumpulan pengguna, Anda dapat menyimpan duplikat alamat email dan nomor telepon agar tidak menghasilkan `UsernameExistsException` kesalahan dalam menanggapi `SignUp` permintaan API. Anda harus telah membuat kumpulan pengguna Anda dengan alamat email atau nomor telepon sebagai atribut alias. Untuk informasi selengkapnya, lihat bagian *Menyesuaikan atribut masuk* dari atribut [kumpulan pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

1. Jie mendaftar untuk nama pengguna baru, dan juga memberikan alamat `jie@example.com` email. Amazon Cognito mengirimkan kode ke alamat email mereka.

   **Contoh AWS CLI perintah**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Contoh respon**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Jie memberikan kode yang dikirim kepada mereka untuk mengkonfirmasi kepemilikan mereka atas alamat email. Ini melengkapi pendaftaran mereka sebagai pengguna.

   **Contoh AWS CLI perintah**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
   ```

1. Shirley mendaftarkan akun pengguna baru dan memberikan alamat email. `jie@example.com` Amazon Cognito tidak mengembalikan `UsernameExistsException` kesalahan, dan mengirimkan kode konfirmasi ke alamat email Jie.

   **Contoh AWS CLI perintah**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Contoh respon**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Dalam skenario yang berbeda, Shirley memiliki kepemilikan. `jie@example.com` Shirley mengambil kode yang dikirim Amazon Cognito ke alamat email Jie dan mencoba mengonfirmasi akun tersebut.

   **Contoh AWS CLI perintah**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
   ```

   **Contoh respon**

   ```
   An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
   ```

Amazon Cognito tidak mengembalikan kesalahan pada `aws cognito-idp sign-up` permintaan Shirley, meskipun telah ditetapkan ke pengguna `jie@example.com` yang sudah ada. Shirley harus menunjukkan kepemilikan alamat email sebelum Amazon Cognito mengembalikan respons kesalahan. Dalam kumpulan pengguna dengan atribut alias, perilaku ini mencegah penggunaan `SignUp` API publik untuk memeriksa apakah ada pengguna dengan alamat email atau nomor telepon tertentu.

Perilaku ini berbeda dengan respons yang dikembalikan Amazon Cognito ke `SignUp` permintaan dengan nama pengguna yang ada, seperti yang ditunjukkan pada contoh berikut. Sementara Shirley belajar dari tanggapan ini bahwa pengguna sudah ada dengan nama pengguna`jie`, mereka tidak belajar tentang alamat email atau nomor telepon yang terkait dengan pengguna.

**Contoh perintah CLI**

```
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD
      --user-attributes Name="email",Value="shirley@example.com"
```

**Contoh respon**

```
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
```

## Operasi reset kata sandi
<a name="cognito-user-pool-managing-errors-password-reset"></a>

Amazon Cognito mengembalikan respons berikut ke operasi pengaturan ulang kata sandi pengguna saat Anda mencegah kesalahan keberadaan pengguna.

**ForgotPassword**  
Ketika pengguna tidak ditemukan, dinonaktifkan, atau tidak memiliki mekanisme pengiriman terverifikasi untuk memulihkan kata sandi mereka, Amazon Cognito `CodeDeliveryDetails` kembali dengan media pengiriman simulasi untuk pengguna. Media pengiriman simulasi ditentukan oleh format nama pengguna input dan pengaturan verifikasi kumpulan pengguna.

**ConfirmForgotPassword**  
Amazon Cognito mengembalikan kesalahan `CodeMismatchException` untuk pengguna yang tidak ada atau dinonaktifkan. Jika kode tidak diminta saat menggunakan `ForgotPassword`, Amazon Cognito mengembalikan kesalahan `ExpiredCodeException`.

## Operasi konfirmasi
<a name="cognito-user-pool-managing-errors-confirmation"></a>

Amazon Cognito mengembalikan tanggapan berikut untuk konfirmasi pengguna dan operasi verifikasi saat Anda mencegah kesalahan keberadaan pengguna.

**ResendConfirmationCode**  
Amazon Cognito mengembalikan kesalahan `CodeDeliveryDetails` untuk pengguna yang dinonaktifkan atau pengguna yang tidak ada. Amazon Cognito mengirimkan kode konfirmasi ke email atau nomor telepon pengguna yang sudah ada.

**ConfirmSignUp**  
 `ExpiredCodeException` akan kembali jika kode telah kedaluwarsa. Amazon Cognito mengembalikan `NotAuthorizedException` saat pengguna tidak diotorisasi. Jika kode tidak sesuai dengan apa yang diharapkan server, Amazon Cognito mengembalikan `CodeMismatchException`. 