

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

# 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`. 