Memecahkan Masalah Amazon Cognito - Amazon Cognito

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

Memecahkan Masalah Amazon Cognito

Bab ini memberikan solusi untuk masalah umum yang mungkin Anda temui saat bekerja dengan Amazon Cognito. Implementasi Amazon Cognito dapat menghadapi berbagai tantangan di seluruh alur autentikasi, konfigurasi kumpulan pengguna, dan pengaturan federasi identitas. Apakah Anda sedang mengembangkan aplikasi baru atau memelihara yang sudah ada, panduan pemecahan masalah ini membantu Anda mengidentifikasi dan menyelesaikan masalah umum dengan cepat.

Kesalahan konfigurasi domain kustom

Saat mengonfigurasi nama domain khusus di Amazon Cognito, Anda mungkin menerima pesan kesalahan. Kesalahan umum termasuk masalah validasi, masalah sertifikat, atau konflik domain.

Custom domain is not a valid subdomain

Kesalahan ini menunjukkan masalah dengan resolusi DNS untuk domain induk. Amazon Cognito tidak mendukung domain tingkat atas dan mengharuskan domain induk memiliki catatan DNS A untuk validasi.

Masalah

Kesalahan ini menunjukkan masalah dengan resolusi DNS untuk domain induk. Amazon Cognito tidak mendukung domain tingkat atas dan mengharuskan domain induk memiliki catatan DNS A untuk validasi.

Solusi
  • Buat Rekaman untuk Domain Induk: Anda harus membuat catatan A dalam konfigurasi DNS untuk domain induk domain kustom Anda.

    • Contoh: Jika domain kustom Andaauth.xyz.yourdomain.com, domain induknya adalahxyz.yourdomain.com. Jika Anda ingin mengonfigurasi xyz.yourdomain.com sebagai domain khusus, induknya adalahyourdomain.com.

    • Domain induk harus menyelesaikan ke alamat IP yang valid. Jika tidak menunjuk ke alamat IP asli, Anda dapat menggunakan alamat IP dummy, seperti8.8.8.8.

  • Verifikasi Propagasi DNS (Opsional tetapi Disarankan): Untuk memastikan penyedia DNS Anda telah menyebarkan perubahan, Anda dapat menjalankan perintah. dig

    • Jika menggunakan auth.xyz.yourdomain.com sebagai domain khusus: dig A xyz.yourdomain.com +short

    • Jika menggunakan xyz.yourdomain.com sebagai domain khusus: dig A yourdomain.com +short

    • Perintah harus mengembalikan alamat IP yang Anda konfigurasikan. Jika tidak, tunggu sampai perubahan sepenuhnya disebarkan.

  • Hapus domain induk A Record: Setelah berhasil membuat domain kustom di Amazon Cognito, Anda dapat menghapus catatan A yang Anda buat untuk domain induk jika itu adalah dummy.

Untuk informasi selengkapnya, lihat Menggunakan domain Anda sendiri untuk UI yang dihosting.

Domain already associated with another user pool

Nama domain khusus harus unik di semua Akun AWS dan Wilayah.

Masalah

Nama domain khusus harus unik di semua Akun AWS dan Wilayah.

Solusi
  • Untuk menggunakan nama domain untuk kumpulan pengguna baru, Anda harus menghapus domain kustom dari kumpulan pengguna yang saat ini terkait dengannya.

  • Tunggu setelah penghapusan: Dibutuhkan waktu untuk domain kustom untuk sepenuhnya menghapus dari kumpulan pengguna pertama. Membuat domain kustom baru dengan nama yang sama segera setelah penghapusan mungkin masih mengakibatkan kesalahan ini. Tunggu beberapa menit sebelum mencoba lagi.

One or more of the CNAMEs that you provided are already associated with a different resource

Saat Anda membuat domain khusus, Amazon Cognito membuat distribusi Amazon CloudFront yang AWS dikelola. Nama domain hanya dapat digunakan dengan satu CloudFront distribusi Amazon. Kesalahan ini terjadi jika nama domain sudah digunakan sebagai domain alternatif untuk CloudFront distribusi Amazon lainnya.

Masalah

Saat Anda membuat domain khusus, Amazon Cognito membuat distribusi Amazon CloudFront yang AWS dikelola. Nama domain hanya dapat digunakan dengan satu CloudFront distribusi Amazon. Kesalahan ini terjadi jika nama domain sudah digunakan sebagai domain alternatif untuk CloudFront distribusi Amazon lainnya.

Solusi
  • Opsi 1: Gunakan nama domain yang berbeda untuk domain khusus Amazon Cognito Anda.

  • Opsi 2: Jika Anda menggunakan nama domain untuk Amazon Cognito, jangan gunakan dengan distribusi Amazon CloudFront lainnya.

The specified SSL certificate doesn't exist

Amazon Cognito menggunakan Amazon CloudFront, yang mengharuskan sertifikat AWS Certificate Manager (ACM) berada di us-east-1 (Virginia N.) Wilayah AWS, terlepas dari Wilayah kumpulan pengguna.

Masalah

Amazon Cognito menggunakan Amazon CloudFront, yang mengharuskan sertifikat AWS Certificate Manager (ACM) berada di us-east-1 (Virginia N.) Wilayah AWS, terlepas dari Wilayah kumpulan pengguna.

Solusi
  • Pastikan Wilayah Sertifikat: Konfirmasikan sertifikat ACM ada di us-east-1 Wilayah.

  • Periksa Validitas Sertifikat: Pastikan sertifikat yang dipilih tidak kedaluwarsa.

  • Sertifikat Impor: Jika Anda mengimpor sertifikat ke ACM, pastikan:

    • Itu dikeluarkan oleh otoritas sertifikat publik.

    • Ini termasuk rantai sertifikat yang benar.

  • AWS KMS Pemeriksaan Kebijakan: deny Pernyataan eksplisit dalam kebijakan AWS Key Management Service (AWS KMS) untuk pengguna IAM atau peran yang membuat domain dapat menyebabkan kesalahan ini. Secara khusus, periksa penolakan eksplisit padakms:DescribeKey,kms:CreateGrant, atau tindakan. kms:*

Invalid refresh token kesalahan

Masalah

Anda menerima Invalid refresh token kesalahan saat mencoba menggunakan token penyegaran untuk mendapatkan akses baru dan token ID dari kumpulan pengguna Amazon Cognito menggunakan operasi AdminInitiateAuth atau InitiateAuth API.

Solusi

Terapkan langkah-langkah pemecahan masalah berikut berdasarkan konfigurasi kumpulan pengguna dan penggunaan API Anda:

  • Pastikan ID klien aplikasi yang konsisten: Saat memanggil AdminInitiateAuth atau InitiateAuth API untuk penyegaran token, Anda harus menggunakan ID klien aplikasi yang sama persis yang digunakan selama autentikasi awal yang menghasilkan token penyegaran.

  • Konfirmasikan perangkat: Jika pelacakan perangkat diaktifkan di kumpulan pengguna, tetapi perangkat pengguna belum dikonfirmasi, Anda harus memanggil ConfirmDeviceAPI terlebih dahulu. Setelah pengguna mengonfirmasi perangkat mereka, Anda dapat menukar token penyegaran.

  • Sertakan kunci perangkat dalam permintaan penyegaran: Jika pelacakan perangkat diaktifkan, sertakan kunci perangkat unik sebagai AuthParameter saat menggunakan REFRESH_TOKEN_AUTH alur:

    { "AuthFlow": "REFRESH_TOKEN_AUTH", "AuthParameters": { "REFRESH_TOKEN": "example_refresh_token", "SECRET_HASH": "example_secret_hash", // Required if your app client uses a client secret "DEVICE_KEY": "example_device_key" } }
  • Gunakan USER_SRP_AUTH untuk pelacakan perangkat: Jika Anda menggunakan pelacakan perangkat, alur otentikasi awal harusUSER_SRP_AUTH.

Untuk informasi selengkapnya, lihat Bekerja dengan perangkat pengguna di kumpulan pengguna Anda.

Kesalahan respons SAMP tidak valid di federasi

Pengguna menerima berbagai Invalid SAML response kesalahan serupa saat mencoba bergabung ke Amazon Cognito menggunakan SAMP 2.0. Kesalahan ini dapat terjadi karena masalah pemetaan atribut, masalah sertifikat, atau ketidakcocokan konfigurasi.

Invalid user attributes: Required attribute

Masalah

Pengguna kehilangan nilai untuk atribut yang diperlukan di kumpulan pengguna Anda, atau idP mencoba menghapus atau memperbarui atribut yang tidak dapat diubah.

Solusi
  • Periksa atribut yang diperlukan yang ditentukan dalam konfigurasi kumpulan pengguna Anda.

  • Menggunakan alat pengambilan jaringan di browser Anda, ambil respons SAMP. Anda mungkin perlu melakukan decoding URL dan base64. Verifikasi atribut hadir dalam pernyataan SAMP.

  • Masuk ke penyedia identitas Anda dan tinjau atribut yang dikirimkan ke Amazon Cognito. Verifikasi bahwa iDP dikonfigurasi untuk mengirim atribut yang diperlukan menggunakan nama yang benar.

  • Untuk atribut yang tidak dapat diubah, jalankan AWS CLI perintah berikut untuk mengidentifikasinya:. aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'

  • Dalam pemetaan atribut SAMP dari IDP Anda, hapus pemetaan apa pun yang menargetkan atribut Amazon Cognito yang tidak dapat diubah. Bergantian, perbarui atribut tujuan ke atribut yang berbeda dan bisa berubah.

Invalid SAML response received: SAML Response signature is invalid

Masalah

IDP Anda telah memperbarui sertifikat penandatanganan SAML-nya, menyebabkan ketidakcocokan antara sertifikat dalam respons SAMP dan file metadata yang disimpan di Amazon Cognito.

Solusi
  1. Unduh file metadata terbaru dari IDP Anda.

  2. Di konsol Amazon Cognito, navigasikan ke penyedia Sosial dan eksternal untuk kumpulan pengguna Anda, edit penyedia SAMP, dan ganti file metadata yang ada dengan file yang baru diunduh.

Audience restriction atau Application with identifier not found

Masalah

ID Entitas yang salah dikonfigurasi di IDP Anda, atau pernyataan menggunakan Uniform Resource Name (URN) kumpulan pengguna lain.

Solusi
  1. Dapatkan ID kumpulan pengguna Amazon Cognito Anda dari bagian Ikhtisar di konsol.

  2. Di konsol manajemen untuk iDP Anda, perbarui ID entitas di aplikasi SAMP untuk kumpulan pengguna Anda. Konfigurasikan ID entitas agar sesuai dengan formatnyaurn:amazon:cognito:sp:USER_POOL_ID. Ganti USER_POOL_ID dengan ID kumpulan pengguna dari langkah sebelumnya.

An error was encountered with the requested page

Masalah

URL Assertion Consumer Service (ACS) yang terdaftar dengan iDP Anda tidak dikonfigurasi dengan benar, atau iDP tidak mengirimkan respons SAMP menggunakan pengikatan POST yang diperlukan.

Solusi
  • Di konsol manajemen untuk iDP Anda, perbarui aplikasi dengan format URL ACS yang benar, pastikan aplikasi menggunakan HTTP POST pengikatan.

  • Format domain default: https://cognito-idp.Region.amazonaws.com/your user pool ID/saml2/idpresponse

  • Format domain kustom: https://auth.example.com/saml2/idpresponse

Invalid relayState from identity provider

Masalah

RelayStateParameter hilang atau tidak valid, atau URL tidak cocok antara IDP dan Amazon Cognito.

Solusi
  • Untuk alur yang dimulai oleh penyedia layanan (dimulai SP): Selalu mulai autentikasi di titik akhir kumpulan pengguna Anda. /oauth2/authorize Pernyataan SAMP yang tidak mengembalikan RelayState parameter dari kunjungan awal pengguna ke Amazon Cognito bukanlah permintaan yang diprakarsai SP yang valid.

  • Untuk alur yang dimulai oleh penyedia identitas (IDP-initiated): IDP harus menyertakan RelayState parameter dengan pernyataan SAMP ke titik akhir, menggunakan format yang diperlukan:. /saml2/idpresponse redirect_uri=REDIRECT_URI&state=STATE

Untuk informasi selengkapnya, lihat Menggunakan penyedia identitas SAMP dengan kumpulan pengguna.

Pengguna login terkelola tidak dapat memilih faktor MFA

Masalah

Pengguna tidak dapat memilih metode MFA pilihan mereka saat masuk melalui login terkelola, atau mereka tidak diminta untuk metode MFA yang Anda harapkan.

Solusi

Amazon Cognito mengikuti logika khusus untuk menentukan faktor MFA mana yang tersedia bagi pengguna berdasarkan pengaturan kumpulan pengguna, atribut pengguna, dan konfigurasi pemulihan akun. Misalnya, pengguna tidak dapat menggunakan MFA email jika email dikonfigurasi sebagai metode pemulihan akun utama mereka.

Untuk mengganti pemilihan faktor MFA default, Anda dapat menerapkan salah satu dari pendekatan ini:

  • Untuk aplikasi publik: Gunakan SetUserMFAPreferencedengan token akses yang valid untuk memungkinkan pengguna mengatur preferensi MFA mereka sendiri

  • Untuk aplikasi yang dikelola administrator: Gunakan AdminSetUserMFAPreferencedengan AWS kredensil untuk mengonfigurasi preferensi MFA pengguna

Kedua operasi memungkinkan Anda untuk mengaktifkan atau menonaktifkan metode SMS, email, dan TOTP MFA untuk pengguna individu, dan menetapkan satu metode sesuai keinginan.

Untuk informasi selengkapnya, lihat Menambahkan MFA ke kumpulan pengguna.

Pengguna tanpa kata sandi dan kunci sandi tidak dapat menggunakan MFA

Masalah

Pengguna yang masuk dengan metode otentikasi tanpa kata sandi atau kunci sandi tidak dapat menambahkan atau menggunakan otentikasi multi-faktor.

Solusi

Ini adalah batasan yang dimaksudkan. Anda dapat mengonfigurasi kumpulan pengguna sehingga pengguna memiliki MFA atau masuk dengan faktor tanpa kata sandi, tetapi tidak keduanya. MFA hanya tersedia untuk alur otentikasi berbasis kata sandi.

Untuk informasi selengkapnya, lihat Otentikasi dengan kumpulan pengguna.

Tidak dapat menerima kode reset kata sandi melalui email/SMS

Masalah

Pengguna tidak dapat menerima kode verifikasi selama alur kerja lupa kata sandi melalui email atau SMS mereka.

Solusi

Ada berbagai alasan mengapa kode verifikasi mungkin tidak diterima. Ikuti daftar periksa ini untuk memecahkan masalah:

  • Periksa spam email pengguna dan folder sampah.

  • Konfirmasikan bahwa pengguna ada di kumpulan pengguna.

  • Verifikasi bahwa status pengguna tidakFORCE_CHANGE_PASSWORD. Jika ini masalahnya, pengguna dibuat oleh administrator dan Amazon Cognito akan meminta mereka untuk mengatur kata sandi saat mereka masuk dengan kata sandi sementara mereka.

  • Periksa apakah pengguna memiliki atribut email atau nomor telepon yang diverifikasi.

  • Periksa batas pengeluaran akun Anda untuk pesan SMS

  • Periksa kuota pengiriman pesan Amazon Simple Email Service (Amazon SES).

  • Periksa apakah SMS dan Amazon SES (jika kumpulan pengguna Anda dikonfigurasi untuk Mengirim email dengan Amazon SES) telah dipindahkan dari kotak pasir. Jika mereka tidak dipindahkan dari kotak pasir, alamat email atau nomor telepon yang belum diverifikasi oleh Amazon SES atau tidak AWS End User Messaging SMS akan dapat menerima kode reset kata sandi.

  • Jika pengguna memiliki faktor MFA aktif, periksa apakah mereka tidak mencoba menghasilkan pesan ke faktor yang sama. Misalnya, pengguna dengan email MFA aktif tidak dapat mengirim kode reset kata sandi melalui email.

Untuk informasi selengkapnya, lihat Pengaturan email untuk kumpulan pengguna Amazon Cognito dan Pengaturan pesan SMS untuk kolam pengguna Amazon Cognito.

Kesalahan SECRET_HASH

Masalah

Permintaan API otentikasi ke klien aplikasi dengan rahasia klien mengembalikan kesalahan seperti An error occurred (NotAuthorizedException) when calling the ForgotPassword operation: Client 1example23456789 is configured with secret but SECRET_HASH was not received.

Solusi

Aplikasi Anda harus menghitung SECRET_HASH untuk pengguna saat ini, klien aplikasi, dan rahasia klien. Metode perhitungannya adalah:

Base64 ( HMAC_SHA256 ( "client secret", "Username" + "Client Id" ) )

Untuk mendapatkan rahasia klien, Anda dapat:

  1. Buka konsol Amazon Cognito dan navigasikan ke klien aplikasi Anda dari menu Klien aplikasi. Di bagian Informasi klien App, cari rahasia Klien. Pilih Tampilkan rahasia klien dan rahasia klien aplikasi Anda muncul.

  2. Hasilkan DescribeUserPoolClientpermintaan. Rahasia klien termasuk dalam tanggapan.

Untuk informasi selengkapnya, lihat Menghitung nilai hash rahasia.

Konsol Amazon Cognito memilih konfigurasi default untuk kumpulan pengguna baru

Masalah

Saat Anda menyiapkan kumpulan pengguna baru di konsol, Amazon Cognito memilih beberapa pengaturan default untuk Anda. Beberapa pengaturan tidak dapat diubah setelah kumpulan pengguna dibuat. Bagaimana Anda bisa membuat pilihan berdasarkan informasi dan memahami apa yang dipilih Amazon Cognito secara otomatis?

Solusi

Pengaturan kumpulan pengguna baru di konsol Amazon Cognito dirancang untuk pengujian dan pembuatan prototipe cepat. Konsol hanya memberi Anda pilihan konfigurasi yang paling penting - yang tidak dapat diubah setelah pembuatan kumpulan pengguna. Semua pengaturan lain yang dikonfigurasi Amazon Cognito secara otomatis dapat dimodifikasi nanti.

Sebaiknya lakukan pendekatan berikut:

  1. Gunakan konsol untuk membuat kumpulan pengguna pengujian saat Anda menyempurnakan implementasi.

  2. Setelah Anda menentukan konfigurasi produksi, terapkan pengaturan tersebut ke kumpulan pengguna pengujian Anda.

  3. Operasi penggunaan DescribeUserPooldan DescribeUserPoolClientAPI untuk menghasilkan templat JSON dari konfigurasi yang Anda uji.

  4. Gunakan template ini dengan alat penerapan seperti AWS SDKs, CDK, REST API, atau CloudFormation untuk membuat sumber daya produksi Anda.

Untuk informasi selengkapnya, lihat Memulai dengan kumpulan pengguna.

Sumber daya pemecahan masalah tambahan

Untuk panduan pemecahan masalah tambahan dan solusi kontribusi komunitas, Anda juga dapat menjelajahi sumber daya eksternal berikut: