View a markdown version of this page

Otentikasi dengan kumpulan pengguna Amazon Cognito - Amazon Cognito

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

Otentikasi dengan kumpulan pengguna Amazon Cognito

Amazon Cognito menyertakan beberapa metode untuk mengotentikasi pengguna Anda. Pengguna dapat masuk dengan kata sandi dan kunci WebAuthn sandi. Amazon Cognito dapat mengirimi mereka kata sandi satu kali dalam email atau pesan SMS. Anda dapat menerapkan fungsi Lambda yang mengatur urutan tantangan dan tanggapan Anda sendiri. Ini adalah aliran otentikasi. Dalam aliran otentikasi, pengguna memberikan rahasia dan Amazon Cognito memverifikasi rahasia, kemudian mengeluarkan token web JSON (JWT) untuk aplikasi untuk diproses dengan pustaka OIDC. Pada bagian ini, kita akan membahas cara mengonfigurasi kumpulan pengguna dan klien aplikasi untuk berbagai aliran otentikasi di berbagai lingkungan aplikasi. Anda akan mempelajari tentang opsi untuk penggunaan halaman masuk yang dihosting dari login terkelola, dan untuk membangun logika dan front-end Anda sendiri dalam AWS SDK.

Semua kumpulan pengguna, apakah Anda memiliki domain atau tidak, dapat mengotentikasi pengguna di API kumpulan pengguna. Jika Anda menambahkan domain ke kumpulan pengguna, Anda dapat menggunakan titik akhir kumpulan pengguna. API kumpulan pengguna mendukung berbagai model otorisasi dan alur permintaan untuk permintaan API.

Untuk memverifikasi identitas pengguna, Amazon Cognito mendukung alur otentikasi yang menggabungkan jenis tantangan selain kata sandi seperti kata sandi satu kali dan kunci sandi email dan pesan SMS.

Menerapkan alur otentikasi

Baik Anda menerapkan login ter kelola atau front end aplikasi yang dibuat khusus dengan AWS SDK untuk otentikasi, Anda harus mengonfigurasi klien aplikasi untuk jenis otentikasi yang ingin Anda terapkan. Informasi berikut menjelaskan penyiapan alur otentikasi di klien aplikasi dan aplikasi Anda.

App client supported flows

Anda dapat mengonfigurasi alur yang didukung untuk klien aplikasi Anda di konsol Amazon Cognito atau dengan API di AWS SDK. Setelah mengonfigurasi klien aplikasi untuk mendukung alur ini, Anda dapat menyebarkannya di aplikasi Anda.

Prosedur berikut mengonfigurasi alur otentikasi yang tersedia untuk klien aplikasi dengan konsol Amazon Cognito.

Untuk mengonfigurasi klien aplikasi untuk alur otentikasi (konsol)
  1. Masuk ke AWS dan arahkan ke konsol kumpulan pengguna Amazon Cognito. Pilih kumpulan pengguna atau buat yang baru.

  2. Dalam konfigurasi kumpulan pengguna Anda, pilih menu Klien aplikasi. Pilih klien aplikasi atau buat yang baru.

  3. Di bawah Informasi klien aplikasi, pilih Edit.

  4. Di bawah Alur klien aplikasi, pilih alur otentikasi yang ingin Anda dukung.

Untuk mengonfigurasi klien aplikasi untuk alur otentikasi (API/SDK)

Untuk mengonfigurasi alur otentikasi yang tersedia untuk klien aplikasi dengan Amazon Cognito API, tetapkan nilai ExplicitAuthFlows dalam UpdateUserPoolClient permintaan CreateUserPoolClient atau. Berikut ini adalah contoh yang menyediakan password jarak jauh aman (SRP) dan otentikasi berbasis pilihan ke klien.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

Saat mengonfigurasi alur yang didukung klien aplikasi, Anda dapat menentukan opsi dan nilai API berikut.

Dukungan alur klien aplikasi
Alur autentikasi Kompatibilitas Konsol API
Autentikasi Choice-based Server-side, sisi klien Pilih jenis otentikasi saat masuk ALLOW_USER_AUTH
Sign-in dengan kata sandi yang persisten Client-side Masuk dengan nama pengguna dan kata sandi ALLOW_USER_PASSWORD_AUTH
Sign-in dengan kata sandi yang persisten dan payload aman Server-side, sisi klien Masuk dengan kata sandi jarak jauh yang aman (SRP) ALLOW_USER_SRP_AUTH
Segarkan token Server-side, sisi klien Dapatkan token pengguna baru dari sesi terautentikasi yang ada ALLOW_REFRESH_TOKEN_AUTH
Server-side otentikasi Server-side Masuk dengan kredentif administratif sisi server ALLOW_ADMIN_USER_PASSWORD_AUTH
Autentikasi kustom Server-side dan aplikasi yang dibuat khusus di sisi klien. Tidak kompatibel dengan login terkelola. Masuk dengan aliran otentikasi khusus dari pemicu Lambda ALLOW_CUSTOM_AUTH
Implement flows in your application

Login terkelola secara otomatis membuat opsi otentikasi yang dikonfigurasi tersedia di halaman tanda tangan Anda. Dalam aplikasi yang dibuat khusus, mulai otentikasi dengan deklarasi aliran awal.

Saat Anda memasukkan pengguna, isi AdminInitiateAuth permintaan InitiateAuth Anda harus menyertakan AuthFlow parameter.

Choice-based otentikasi:

"AuthFlow": "USER_AUTH"

Client-based otentikasi dengan SRP:

"AuthFlow": "USER_SRP_AUTH"

Hal yang perlu diketahui tentang otentikasi dengan kumpulan pengguna

Pertimbangkan informasi berikut dalam desain model otentikasi Anda dengan kumpulan pengguna Amazon Cognito.

Aliran otentikasi dalam login terkelola dan UI yang dihosting

Login ter kelola memiliki lebih banyak opsi untuk otentikasi daripada UI yang dihosting klasik. Misalnya, pengguna dapat melakukan otentikasi tanpa kata sandi dan kunci sandi hanya dalam login terkelola.

Alur otentikasi khusus hanya tersedia di otentikasi AWS SDK

Anda tidak dapat melakukan alur otentikasi khusus, atau otentikasi khusus dengan pemicu Lambda, dengan login terkelola atau UI yang dihosting klasik. Otentikasi khusus tersedia dalam otentikasi dengan AWS SDK.

Login terkelola untuk login penyedia identitas eksternal (IdP)

Anda tidak dapat memasukkan pengguna melalui pihak ketiga IdPs dalam otentikasi dengan AWS SDK. Anda harus menerapkan login terkelola atau UI yang dihosting klasik, mengalihkan ke IdPs, dan kemudian memproses objek otentikasi yang dihasilkan dengan pustaka OIDC di aplikasi Anda. Untuk informasi selengkapnya tentang login terkelola, lihatLogin terkelola kumpulan pengguna.

Efek otentikasi tanpa kata sandi pada fitur pengguna lainnya

Aktivasi login tanpa kata sandi dengan kata sandi atau kunci sandi satu kali Masuk tanpa kata sandi dengan kunci sandi WebAuthn di kumpulan pengguna dan klien aplikasi Anda berpengaruh pada pembuatan dan migrasi pengguna. Saat login tanpa kata sandi aktif:

  1. Administrator dapat membuat pengguna tanpa kata sandi. Templat pesan undangan default berubah menjadi tidak lagi menyertakan place {###} holder kata sandi. Untuk informasi selengkapnya, lihat Membuat akun pengguna sebagai administrator.

  2. Untuk SDK-based SignUp operasi, pengguna tidak diharuskan memberikan kata sandi saat mereka mendaftar. Login terkelola dan UI yang dihosting memerlukan kata sandi di halaman pendaftaran, bahkan jika otentikasi tanpa kata sandi diizinkan. Untuk informasi selengkapnya, lihat Mendaftar dan mengonfirmasi akun pengguna.

  3. Pengguna yang diimpor dari file CSV dapat langsung masuk dengan opsi tanpa kata sandi, tanpa pengaturan ulang kata sandi, jika atribut mereka menyertakan alamat email atau nomor telepon untuk opsi masuk tanpa kata sandi yang tersedia. Untuk informasi selengkapnya, lihat Mengimpor pengguna ke kumpulan pengguna dari file CSV.

  4. Otentikasi tanpa kata sandi tidak memanggil pemicu Lambda migrasi pengguna.

  5. Pengguna yang masuk dengan faktor pertama kata sandi satu kali (OTP) tidak dapat menambahkan faktor otentikasi multi-faktor (MFA) ke sesi mereka. Kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat dikonfigurasi dengan. MULTI_FACTOR_WITH_USER_VERIFICATION

URL pihak yang bergantung pada kunci sandi tidak dapat berada di daftar akhiran publik

Anda dapat menggunakan nama domain yang Anda miliki, misalnyawww.example.com, sebagai ID pihak yang bergantung (RP) dalam konfigurasi kunci sandi Anda. Konfigurasi ini dimaksudkan untuk mendukung aplikasi yang dibuat khusus yang berjalan pada domain yang Anda miliki. Daftar akhiran publik, atau PSL, berisi domain tingkat tinggi yang dilindungi. Amazon Cognito mengembalikan kesalahan saat Anda mencoba menyetel URL RP Anda ke domain di PSL.

Durasi aliran sesi otentikasi

Bergantung pada fitur kumpulan pengguna Anda, Anda dapat menanggapi beberapa tantangan ke InitiateAuth dan RespondToAuthChallenge sebelum aplikasi Anda mengambil token dari Amazon Cognito. Amazon Cognito menyertakan string sesi dalam respons terhadap setiap permintaan. Untuk menggabungkan permintaan API Anda ke dalam alur otentikasi, sertakan string sesi dari respons terhadap permintaan sebelumnya di setiap permintaan berikutnya. Secara default, pengguna Anda memiliki tiga menit untuk menyelesaikan setiap tantangan sebelum string sesi berakhir. Untuk menyesuaikan periode ini, ubah durasi sesi alur otentikasi klien aplikasi Anda. Prosedur berikut menjelaskan cara mengubah setelan ini di konfigurasi klien aplikasi Anda.

catatan

Peng aturan durasi sesi alur otentikasi berlaku untuk otentikasi dengan API kumpulan pengguna Amazon Cognito. Login terkelola menetapkan durasi sesi menjadi 3 menit untuk otentikasi multi-faktor dan 8 menit untuk kode reset kata sandi.

Amazon Cognito console
Untuk mengonfigurasi durasi sesi alur otentikasi klien aplikasi (Konsol Manajemen AWS)
  1. Dari tab Integrasi aplikasi di kumpulan pengguna Anda, pilih nama klien aplikasi Anda dari wadah Kli en aplikasi dan analitik.

  2. Pilih Edit di wadah informasi klien aplikasi.

  3. Ubah nilai Durasi sesi aliran otentikasi ke durasi validitas yang Anda inginkan, dalam hitungan menit, untuk kode MFA SMS dan email. Ini juga mengubah jumlah waktu yang dimiliki pengguna untuk menyelesaikan tantangan otentikasi apa pun di klien aplikasi Anda.

  4. Pilih Simpan perubahan.

User pools API
Untuk mengonfigurasi durasi sesi alur otentikasi klien aplikasi (Amazon Cognito API)
  1. Siapkan UpdateUserPoolClient permintaan dengan pengaturan kumpulan pengguna yang ada dari DescribeUserPoolClient permintaan. Per UpdateUserPoolClient mintaan Anda harus menyertakan semua properti klien aplikasi yang ada.

  2. Ubah nilai AuthSessionValidity ke durasi validitas yang Anda inginkan, dalam hitungan menit, untuk kode MFA SMS. Ini juga mengubah jumlah waktu yang dimiliki pengguna untuk menyelesaikan tantangan otentikasi apa pun di klien aplikasi Anda.

Untuk informasi selengkapnya tentang klien aplikasi, lihatPengaturan khusus aplikasi dengan klien aplikasi.

Perilaku penguncian untuk upaya masuk yang gagal

Setelah lima upaya masuk yang gagal dengan kata sandi pengguna, terlepas dari apakah itu diminta dengan operasi yang tidak diautentikasi atau IAM-authorized API, Amazon Cognito mengunci pengguna Anda selama satu detik. Durasi lockout kemudian berlipat ganda setelah setiap upaya gagal tambahan, hingga maksimum sekitar 15 menit.

Upaya yang dilakukan selama periode lockout menghasilkan peng Password attempts exceeded ecualian, dan tidak mempengaruhi durasi periode lockout berikutnya. Untuk jumlah kumulatif upaya masuk yang gagal n, tidak termasuk Password attempts exceeded pengecualian, Amazon Cognito mengunci pengguna Anda selama 2^ (n-5) detik. Untuk mengatur ulang lockout ke status awal n=0, pengguna Anda harus berhasil masuk setelah periode lockout berakhir, atau tidak memulai upaya masuk apa pun selama 15 menit berturut-turut kapan saja setelah penguncian. Perilaku ini dapat berubah. Perilaku ini tidak berlaku untuk tantangan khusus kecuali mereka juga melakukan otentikasi berbasis kata sandi.

Contoh sesi otentikasi

Diagram dan panduan langkah demi langkah berikut menggambarkan skenario tipikal di mana pengguna masuk ke aplikasi. Aplikasi contoh menyajikan pengguna dengan beberapa opsi masuk. Mereka memilih satu dengan memasukkan kredensialnya, memberikan faktor otentikasi tambahan, dan masuk.

Diagram alir yang menunjukkan aplikasi yang meminta pengguna untuk masukan dan menandatanganinya dengan AWS SDK.

Bayangkan aplikasi dengan halaman masuk tempat pengguna dapat masuk dengan nama pengguna dan kata sandi, meminta kode satu kali dalam pesan email, atau memilih opsi sidik jari.

  1. Sign-in prompt: Aplikasi Anda menampilkan layar beranda dengan tombol Masuk.

  2. Minta masuk: Pengguna memilih Mas uk. Dari cookie atau cache, aplikasi Anda mengambil nama pengguna mereka, atau meminta mereka untuk memasukkannya.

  3. Opsi permintaan: Aplikasi Anda meminta opsi masuk pengguna dengan permintaan InitiateAuth API dengan alurUSER_AUTH, meminta metode masuk yang tersedia untuk pengguna.

  4. Opsi pengiriman masuk: Amazon Cognito merespons denganPASSWORD,EMAIL_OTP, dan. WEB_AUTHN Respons menyertakan pengenal sesi untuk Anda putar ulang kembali di respons berikutnya.

  5. Opsi tampilan: Aplikasi Anda menampilkan elemen UI bagi pengguna untuk memasukkan nama pengguna dan kata sandi mereka, mendapatkan kode satu kali, atau memindai sidik jari mereka.

  6. Pilih option/Enter kredenSIAL: Pengguna memasukkan nama pengguna dan kata sandi mereka.

  7. Memulai otentikasi: Aplikasi Anda menyediakan informasi masuk pengguna dengan permintaan RespondToAuthChallenge API yang mengonfirmasi login nama pengguna dan kata sandi dan memberikan nama pengguna dan kata sandi.

  8. Validasi kredenSIAL: Amazon Cognito mengonfirmasi kredenSIAL pengguna.

  9. Tantangan tambahan: Pengguna memiliki otentikasi multi-faktor yang dikonfigurasi dengan aplikasi otentikator. Amazon Cognito mengembalikan SOFTWARE_TOKEN_MFA tantangan.

  10. Prompt tantangan: Aplikasi Anda menampilkan formulir yang meminta kata sandi satu kali berbasis waktu (TOTP) dari aplikasi otentikator pengguna.

  11. Tant angan jawaban: Pengguna mengirimkan TOTP.

  12. Tanggapi tantangan: Dalam RespondToAuthChallenge permintaan lain, aplikasi Anda menyediakan TOTP pengguna.

  13. Validasi respons tantangan: Amazon Cognito mengonfirmasi kode pengguna dan menentukan bahwa kumpulan pengguna Anda dikonfigurasi untuk tidak mengeluarkan tantangan tambahan kepada pengguna saat ini.

  14. Token penerbit an: Amazon Cognito mengembalikan ID, akses, dan menyegarkan token web JSON (JWT). Otentikasi awal pengguna selesai.

  15. Simpan token: Aplikasi Anda menyimpan token pengguna sehingga dapat mereferensikan data pengguna, mengotorisasi akses ke sumber daya, dan memperbarui token saat kedaluwarsa.

  16. Render konten resmi: Aplikasi Anda menentukan akses pengguna ke sumber daya berdasarkan identitas dan peran mereka, dan mengirimkan konten aplikasi.

  17. Ak ses konten: Pengguna masuk dan mulai menggunakan aplikasi.

  18. Minta konten dengan token kedaluwarsa: Kemudian, pengguna meminta sumber daya yang memerlukan otorisasi. Token cache pengguna telah kedaluwarsa.

  19. Refresh token: Aplikasi Anda membuat InitiateAuth permintaan dengan token penyegaran yang disimpan pengguna.

  20. Token penerbit an: Amazon Cognito mengembalikan ID baru dan mengakses JWT. Sesi pengguna disegarkan dengan aman tanpa permintaan tambahan untuk kredenSIAL.

Anda dapat menggunakan AWS Lambda pemicu untuk menyesuaikan cara pengguna melakukan otentikasi. Pemicu ini mengeluarkan dan memverifikasi tantangan mereka sendiri sebagai bagian dari alur autentikasi.

Anda juga dapat menggunakan alur otentikasi admin untuk server backend yang aman. Anda dapat menggunakan alur otentikasi migrasi pengguna untuk memungkinkan migrasi pengguna tanpa mengharuskan pengguna untuk mengatur ulang kata sandi mereka.