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
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, akan, PreventUserExistenceErrors atau dinonaktifkanLEGACY, secara default. 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 PreventUserExistenceErrorsantaraENABLEDdanLEGACYdalam permintaan UpdateUserPoolClientAPI.
- 
      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 nilaiLEGACY, 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 nilaiENABLED, klien aplikasi Anda tidak mengungkapkan tidak adanya akun pengguna di kumpulan pengguna Anda dengan UserNotFoundException kesalahan. PreventUserExistenceErrorsKonfigurasi 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. USER_AUTHUSER_SRP_AUTHCUSTOM_AUTHRespons 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 keENABLED.
Operasi otentikasi dan pembuatan pengguna
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
- Autentikasi berbasis pilihan
- 
          Dalam alur autentikasi USER_AUTHberbasis 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. DenganPreventUserExistenceErrorsaktif, Amazon Cognito mengeluarkan tantangan bagi pengguna yang tidak ada untuk menyelesaikan satu atau lebih bentuk otentikasi yang tersedia. DenganPreventUserExistenceErrorstidak aktif, Amazon Cognito mengembalikanUserNotFoundpengecualian.
- Otentikasi nama pengguna dan kata sandi
- 
          Alur otentikasi ADMIN_USER_PASSWORD_AUTHUSER_PASSWORD_AUTH,, danPASSWORDaliranUSER_AUTHpengembalian aNotAuthorizedExceptiondengan pesanIncorrect username or passwordsaatPreventUserExistenceErrorsaktif. KetikaPreventUserExistenceErrorstidak aktif, arus ini kembaliUserNotFoundException.
- Autentikasi berbasis Secure Remote Password (SRP)
- 
          Sebagai praktik terbaik, hanya menerapkan PreventUserExistenceErrorsdenganUSER_SRP_AUTHatauPASSWORD_SRPaliranUSER_AUTHdi kumpulan pengguna tanpa alamat email, nomor telepon, atau atribut alias 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, danUSER_AUTHPASSWORDtantangannya — 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. Amazon Cognito mengembalikan garam yang sama dan ID pengguna internal dalam format UUID untuk kombinasi nama pengguna dan kumpulan pengguna yang sama. Saat Anda mengirim permintaan RespondToAuthChallengeAPI dengan bukti kata sandi, Amazon Cognito mengembalikanNotAuthorizedExceptionkesalahan umum ketika nama pengguna atau kata sandi salah. Untuk informasi selengkapnya tentang implementasi otentikasi SRP, lihat. Masuk dengan kata sandi persisten dan muatan aman
- Tantangan otentikasi khusus pemicu Lambda
- 
          Amazon Cognito memanggil tantangan autentikasi kustom yang dipicu Lambda saat pengguna mencoba masuk dengan CUSTOM_AUTHalur otentikasi, tetapi nama pengguna mereka tidak ditemukan. Peristiwa masukan mencakup parameter boolean bernamaUserNotFounddengan nilaitrueuntuk 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 saat pengguna mencoba masuk tetapi nama pengguna mereka tidak ditemukan. Peristiwa masukan mencakup UserNotFoundparameter dengan nilaitrueuntuk setiap pengguna yang tidak ada.
Daftar berikut menjelaskan efek PreventUserExistenceErrors pada pembuatan akun pengguna.
Detail pengungkapan keberadaan pengguna dalam alur pembuatan pengguna
- SignUp
- 
          SignUpOperasi selalu kembaliUsernameExistsExceptionketika nama pengguna sudah diambil. Jika Anda tidak ingin Amazon Cognito menampilkanUsernameExistsExceptionkesalahan untuk alamat email dan nomor telepon saat mendaftar pengguna di aplikasi, gunakan atribut alias berbasis verifikasi. Untuk informasi selengkapnya tentang alias, lihatMenyesuaikan atribut masuk.Untuk contoh bagaimana Amazon Cognito dapat mencegah penggunaan permintaan SignUpAPI untuk menemukan pengguna di kumpulan pengguna Anda, lihat. Mencegah UsernameExistsException kesalahan untuk alamat email dan nomor telepon saat mendaftar
- Mengimpor pengguna
- 
          Jika PreventUserExistenceErrorsdiaktifkan, selama otentikasi pengguna yang diimpor,NotAuthorizedExceptionkesalahan umum dikembalikan yang menunjukkan nama pengguna atau kata sandi salah alih-alih kembali.PasswordResetRequiredExceptionUntuk informasi selengkapnya, lihat Mengharuskan pengguna yang diimpor untuk mengatur ulang kata sandi mereka.
- 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. 
Mencegah UsernameExistsException kesalahan untuk alamat email dan nomor telepon saat mendaftar
      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.
- 
          Jie mendaftar untuk nama pengguna baru, dan juga memberikan alamat jie@example.comemail. 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" } }
- 
          Jie memberikan kode yang dikirim kepada mereka untuk mengonfirmasi kepemilikan mereka atas alamat email tersebut. Ini melengkapi pendaftaran mereka sebagai pengguna. Contoh AWS CLI perintah aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
- 
          Shirley mendaftarkan akun pengguna baru dan memberikan alamat email. jie@example.comAmazon Cognito tidak mengembalikanUsernameExistsExceptionkesalahan, 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" } }
- 
          Dalam skenario yang berbeda, Shirley memiliki kepemilikan. jie@example.comShirley 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 xxxxxxContoh 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 penggunajie, 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
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 CodeDeliveryDetailskembali 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 CodeMismatchExceptionuntuk pengguna yang tidak ada atau dinonaktifkan. Jika kode tidak diminta saat menggunakanForgotPassword, Amazon Cognito mengembalikan kesalahanExpiredCodeException.
Operasi konfirmasi
Amazon Cognito mengembalikan tanggapan berikut untuk konfirmasi pengguna dan operasi verifikasi saat Anda mencegah kesalahan keberadaan pengguna.
- ResendConfirmationCode
- 
          Amazon Cognito mengembalikan kesalahan CodeDeliveryDetailsuntuk pengguna yang dinonaktifkan atau pengguna yang tidak ada. Amazon Cognito mengirimkan kode konfirmasi ke email atau nomor telepon pengguna yang sudah ada.
- ConfirmSignUp
- 
          ExpiredCodeExceptionakan kembali jika kode telah kedaluwarsa. Amazon Cognito mengembalikanNotAuthorizedExceptionsaat pengguna tidak diotorisasi. Jika kode tidak sesuai dengan apa yang diharapkan server, Amazon Cognito mengembalikanCodeMismatchException.