

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
<a name="authentication"></a>

Amazon Cognito mencakup beberapa metode untuk mengautentikasi pengguna Anda. Pengguna dapat masuk dengan kata sandi dan WebAuthn kunci 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 respons Anda sendiri. Ini adalah *aliran otentikasi*. Dalam alur otentikasi, pengguna memberikan rahasia dan Amazon Cognito memverifikasi rahasia, lalu mengeluarkan token web JSON JWTs () untuk aplikasi untuk diproses dengan pustaka OIDC. Dalam Bab ini, kita akan berbicara tentang cara mengkonfigurasi kumpulan pengguna dan klien aplikasi Anda untuk berbagai aliran otentikasi di berbagai lingkungan aplikasi. Anda akan mempelajari tentang opsi untuk penggunaan halaman login yang di-host 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 mengautentikasi pengguna di API kumpulan pengguna. Jika Anda menambahkan domain ke kumpulan pengguna, Anda dapat menggunakan [titik akhir kumpulan pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). 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 email dan pesan SMS kata sandi dan kunci sandi satu kali.

**Topics**
+ [Menerapkan alur otentikasi](#authentication-implement)
+ [Hal-hal yang perlu diketahui tentang otentikasi dengan kumpulan pengguna](#authentication-flow-things-to-know)
+ [Contoh sesi otentikasi](#amazon-cognito-user-pools-authentication-flow)
+ [Konfigurasikan metode otentikasi untuk login terkelola](authentication-flows-selection-managedlogin.md)
+ [Mengelola metode otentikasi di AWS SDKs](authentication-flows-selection-sdk.md)
+ [Alur otentikasi](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Model otorisasi untuk otentikasi API dan SDK](authentication-flows-public-server-side.md)

## Menerapkan alur otentikasi
<a name="authentication-implement"></a>

Baik Anda menerapkan [login terkelola](authentication-flows-selection-managedlogin.md) atau [front end aplikasi yang dibuat khusus](authentication-flows-selection-sdk.md) dengan AWS SDK untuk autentikasi, Anda harus mengonfigurasi klien aplikasi untuk jenis autentikasi yang ingin Anda terapkan. Informasi berikut menjelaskan penyiapan alur autentikasi di [klien aplikasi](user-pool-settings-client-apps.md) dan aplikasi Anda.

------
#### [ App client supported flows ]

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

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

**Untuk mengonfigurasi klien aplikasi untuk alur autentikasi (konsol)**

1. Masuk ke AWS dan navigasikan ke konsol [kumpulan pengguna Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Pilih kumpulan pengguna atau buat yang baru.

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

1. Di bawah **Informasi klien aplikasi**, pilih **Edit**.

1. Di bawah **alur klien App**, pilih alur autentikasi yang ingin Anda dukung.

**Untuk mengonfigurasi klien aplikasi untuk alur autentikasi (API/SDK)**  
Untuk mengonfigurasi alur autentikasi yang tersedia untuk klien aplikasi dengan Amazon Cognito API, tetapkan nilai `ExplicitAuthFlows` dalam permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)atau [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows)permintaan. Berikut ini adalah contoh yang menyediakan kata sandi 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 aliran klien aplikasi**  

| Alur autentikasi | Kompatibilitas | Konsol | API  | 
| --- | --- | --- | --- | 
| [Autentikasi berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | Sisi server, sisi klien | Pilih jenis otentikasi saat masuk | ALLOW\$1USER\$1AUTH | 
| [Masuk dengan kata sandi persisten](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | Sisi klien | Masuk dengan nama pengguna dan kata sandi | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [Masuk dengan kata sandi persisten dan muatan aman](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) | Sisi server, sisi klien | Masuk dengan kata sandi jarak jauh aman (SRP) | ALLOW\$1USER\$1SRP\$1AUTH | 
| [Segarkan token](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | Sisi server, sisi klien | Dapatkan token pengguna baru dari sesi terautentikasi yang ada | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [Otentikasi sisi server](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | Sisi server | Masuk dengan kredensi administratif sisi server | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [Autentikasi kustom](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Aplikasi custom-built sisi server dan sisi klien. Tidak kompatibel dengan login terkelola. | Masuk dengan alur otentikasi khusus dari pemicu Lambda | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

Login terkelola secara otomatis membuat opsi otentikasi yang dikonfigurasi tersedia di halaman masuk Anda. Dalam aplikasi yang dibuat khusus, mulai otentikasi dengan deklarasi aliran awal.
+ Untuk memilih dari daftar opsi alur bagi pengguna, deklarasikan autentikasi [berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) dengan alur. `USER_AUTH` [Alur ini memiliki metode otentikasi yang tersedia yang tidak tersedia dalam alur autentikasi berbasis klien, misalnya autentikasi passkey dan [passwordless](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey).](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ Untuk memilih alur autentikasi di muka, deklarasikan [autentikasi berbasis klien](authentication-flows-selection-sdk.md#authentication-flows-selection-client) dengan alur lain yang tersedia di klien aplikasi Anda.

Saat Anda memasukkan pengguna, isi [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)atau [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)permintaan Anda harus menyertakan `AuthFlow` parameter.

Otentikasi berbasis pilihan:

```
"AuthFlow": "USER_AUTH"
```

Otentikasi berbasis klien dengan SRP:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Hal-hal yang perlu diketahui tentang otentikasi dengan kumpulan pengguna
<a name="authentication-flow-things-to-know"></a>

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

**Alur otentikasi dalam login terkelola dan UI yang dihosting**  
[Login terkelola](cognito-user-pools-managed-login.md) memiliki lebih banyak opsi untuk otentikasi daripada UI yang dihosting klasik. Misalnya, pengguna dapat melakukan autentikasi tanpa kata sandi dan kunci sandi hanya di login terkelola.

**Alur otentikasi khusus hanya tersedia dalam otentikasi AWS SDK**  
Anda tidak dapat melakukan *alur autentikasi kustom*, atau [autentikasi khusus dengan pemicu Lambda](user-pool-lambda-challenge.md), dengan login terkelola atau UI yang dihosting klasik. Otentikasi khusus tersedia dalam [otentikasi](authentication-flows-selection-sdk.md) dengan. AWS SDKs

**Login terkelola untuk login penyedia identitas eksternal (iDP)**  
Anda tidak dapat memasukkan pengguna melalui [pihak ketiga IdPs](cognito-user-pools-identity-federation.md) dalam [autentikasi dengan AWS SDKs](authentication-flows-selection-sdk.md). Anda harus menerapkan login terkelola atau UI yang dihosting klasik, mengarahkan ulang ke IdPs, dan kemudian memproses objek otentikasi yang dihasilkan dengan pustaka OIDC di aplikasi Anda. Untuk informasi selengkapnya tentang login terkelola, lihat[Login terkelola kumpulan pengguna](cognito-user-pools-managed-login.md).

**Efek otentikasi tanpa kata sandi pada fitur pengguna lainnya**  
Aktivasi login tanpa kata sandi dengan [kata sandi atau [kunci sandi](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) satu kali](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) 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 placeholder `{###}` kata sandi. Untuk informasi selengkapnya, lihat [Membuat akun pengguna sebagai administrator](how-to-create-user-accounts.md).

1. Untuk [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)operasi berbasis SDK, pengguna tidak diharuskan untuk memberikan kata sandi saat mereka mendaftar. Login terkelola dan UI yang dihosting memerlukan kata sandi di halaman pendaftaran, meskipun autentikasi tanpa kata sandi diizinkan. Untuk informasi selengkapnya, lihat [Mendaftar dan mengonfirmasi akun pengguna](signing-up-users-in-your-app.md).

1. 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](cognito-user-pools-using-import-tool.md).

1. Autentikasi tanpa kata sandi tidak memanggil pemicu Lambda [migrasi](user-pool-lambda-migrate-user.md) pengguna.

1. Pengguna yang masuk dengan faktor pertama kata sandi satu kali (OTP) tidak dapat menambahkan faktor [otentikasi multi-faktor (MFA](user-pool-settings-mfa.md)) ke sesi mereka. Kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat dikonfigurasi dengan. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**Pihak yang mengandalkan passkey tidak URLs bisa berada di daftar akhiran publik**  
Anda dapat menggunakan nama domain yang Anda miliki, seperti`www.example.com`, sebagai ID pihak yang bergantung (RP) dalam konfigurasi kunci sandi Anda. Konfigurasi ini dimaksudkan untuk mendukung aplikasi custom-built yang berjalan pada domain yang Anda miliki. [Daftar akhiran publik](https://publicsuffix.org/), atau PSL, berisi domain tingkat tinggi yang dilindungi. Amazon Cognito mengembalikan kesalahan saat Anda mencoba menyetel URL RP ke domain di PSL.

**Topics**
+ [Durasi aliran sesi otentikasi](#authentication-flow-session-duration)
+ [Perilaku penguncian untuk upaya masuk yang gagal](#authentication-flow-lockout-behavior)

### Durasi aliran sesi otentikasi
<a name="authentication-flow-session-duration"></a>

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

**catatan**  
Pengaturan **durasi sesi alur otentikasi** berlaku untuk autentikasi dengan API kumpulan pengguna Amazon Cognito. Login terkelola menetapkan durasi sesi menjadi 3 menit untuk otentikasi multi-faktor dan 8 menit untuk kode pengaturan ulang kata sandi.

------
#### [ Amazon Cognito console ]

**Untuk mengonfigurasi durasi sesi alur otentikasi klien aplikasi ()Konsol Manajemen AWS**

1. Dari tab **Integrasi aplikasi** di kumpulan pengguna, pilih nama klien aplikasi Anda dari **klien Aplikasi dan wadah analitik**.

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

1. Ubah nilai durasi **sesi alur 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.

1. 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 Anda yang ada dari `DescribeUserPoolClient` permintaan. `UpdateUserPoolClient`Permintaan Anda harus menyertakan semua properti klien aplikasi yang ada.

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

------

Untuk informasi selengkapnya tentang klien aplikasi, lihat[Pengaturan khusus aplikasi dengan klien aplikasi](user-pool-settings-client-apps.md).

### Perilaku penguncian untuk upaya masuk yang gagal
<a name="authentication-flow-lockout-behavior"></a>

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

Upaya yang dilakukan selama periode penguncian menghasilkan `Password attempts exceeded` pengecualian, dan tidak memengaruhi durasi periode penguncian 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 penguncian ke status awal *n=0*, pengguna Anda harus berhasil masuk setelah periode penguncian berakhir, atau tidak memulai upaya masuk 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
<a name="amazon-cognito-user-pools-authentication-flow"></a>

Diagram dan step-by-step panduan berikut menggambarkan skenario khas 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 alur yang menampilkan aplikasi yang meminta pengguna untuk memasukkan dan menandatanganinya dengan SDK. AWS\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/authentication-api-userauth.png)


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. **Prompt masuk**: Aplikasi Anda menampilkan layar beranda dengan tombol *Masuk*.

1. **Permintaan masuk**: Pengguna memilih *Masuk*. Dari cookie atau cache, aplikasi Anda mengambil nama pengguna mereka, atau meminta mereka untuk memasukkannya.

1. **Opsi permintaan**: Aplikasi Anda meminta opsi masuk pengguna dengan permintaan `InitiateAuth` API dengan `USER_AUTH` alur, meminta metode login yang tersedia untuk pengguna.

1. **Kirim opsi masuk**: Amazon Cognito merespons `PASSWORD` dengan`EMAIL_OTP`,, dan. `WEB_AUTHN` Responsnya mencakup pengenal sesi untuk Anda putar ulang di respons berikutnya.

1. **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.

1. **Pilih option/Enter kredensil: Pengguna** memasukkan nama pengguna dan kata sandi mereka.

1. **Memulai otentikasi**: Aplikasi Anda menyediakan informasi login pengguna dengan permintaan `RespondToAuthChallenge` API yang mengonfirmasi login nama pengguna dan kata sandi dan menyediakan nama pengguna dan kata sandi.

1. **Validasi kredensil**: Amazon Cognito mengonfirmasi kredensitas pengguna.

1. **Tantangan tambahan**: Pengguna memiliki otentikasi multi-faktor yang dikonfigurasi dengan aplikasi autentikator. Amazon Cognito mengembalikan tantangan. `SOFTWARE_TOKEN_MFA`

1. **Challenge prompt**: Aplikasi Anda menampilkan formulir yang meminta kata sandi satu kali berbasis waktu (TOTP) dari aplikasi autentikator pengguna.

1. **Tantangan jawaban**: Pengguna mengirimkan TOTP.

1. **Menanggapi tantangan**: Dalam `RespondToAuthChallenge` permintaan lain, aplikasi Anda menyediakan TOTP pengguna.

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

1. **Token masalah**: Amazon Cognito mengembalikan ID, mengakses, dan menyegarkan token web JSON (). JWTs Otentikasi awal pengguna selesai.

1. **Token toko: Aplikasi Anda menyimpan token** pengguna sehingga dapat mereferensikan data pengguna, mengotorisasi akses ke sumber daya, dan memperbarui token saat kedaluwarsa.

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

1. **Akses konten**: Pengguna masuk dan mulai menggunakan aplikasi.

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

1. **Refresh token**: Aplikasi Anda membuat `InitiateAuth` permintaan dengan token penyegaran yang disimpan pengguna.

1. **Token masalah**: Amazon Cognito mengembalikan ID dan akses baru. JWTs Sesi pengguna disegarkan dengan aman tanpa permintaan tambahan untuk kredensil.

Anda dapat menggunakan [AWS Lambda pemicu](cognito-user-pools-working-with-lambda-triggers.md) untuk menyesuaikan cara pengguna mengautentikasi. 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 autentikasi migrasi pengguna](cognito-user-pools-using-import-tool.md) untuk memungkinkan migrasi pengguna tanpa mengharuskan pengguna untuk mengatur ulang kata sandi mereka.

# Konfigurasikan metode otentikasi untuk login terkelola
<a name="authentication-flows-selection-managedlogin"></a>

Anda dapat memanggil [halaman login terkelola](cognito-user-pools-managed-login.md), front end web untuk otentikasi kumpulan pengguna, saat Anda ingin pengguna masuk, keluar, atau mengatur ulang kata sandi mereka. Dalam model ini, aplikasi Anda mengimpor pustaka OIDC untuk memproses upaya otentikasi berbasis browser dengan halaman login terkelola kumpulan pengguna. Bentuk otentikasi yang tersedia untuk pengguna Anda bergantung pada konfigurasi kumpulan pengguna dan klien aplikasi Anda. Terapkan `ALLOW_USER_AUTH` alur di klien aplikasi Anda, dan Amazon Cognito meminta pengguna untuk memilih metode login dari opsi yang tersedia. Terapkan `ALLOW_USER_PASSWORD_AUTH` dan tetapkan penyedia SAMP, dan halaman login Anda meminta pengguna dengan opsi untuk memasukkan nama pengguna dan kata sandi mereka atau untuk terhubung dengan IDP mereka.

Konsol kumpulan pengguna Amazon Cognito dapat membantu Anda memulai dengan menyiapkan otentikasi login terkelola untuk aplikasi Anda. Saat Anda membuat kumpulan pengguna baru, tentukan platform yang Anda kembangkan dan konsol memberi Anda contoh implementasi OIDC dan OAuth pustaka dengan kode awal untuk mengimplementasikan alur masuk dan keluar. Anda dapat membangun login terkelola dengan banyak implementasi OIDC relying-party. Kami menyarankan Anda bekerja dengan [perpustakaan pesta yang mengandalkan OIDC bersertifikat](https://openid.net/developers/certified-openid-connect-implementations/) jika memungkinkan. Untuk informasi selengkapnya, lihat [Memulai dengan kumpulan pengguna](getting-started-user-pools.md).

Biasanya, pustaka pihak yang mengandalkan OIDC secara berkala memeriksa `.well-known/openid-configuration` titik akhir kumpulan pengguna Anda untuk menentukan penerbit URLs seperti titik akhir token dan titik akhir otorisasi. Sebagai praktik terbaik, terapkan perilaku penemuan otomatis ini di mana Anda harus memilih. Konfigurasi manual titik akhir penerbit memperkenalkan potensi kesalahan. Misalnya, Anda dapat mengubah domain kumpulan pengguna Anda. Jalur ke `openid-configuration` tidak ditautkan ke domain kumpulan pengguna Anda, sehingga aplikasi yang menemukan titik akhir layanan secara otomatis akan mengambil perubahan domain Anda.

## Pengaturan kumpulan pengguna untuk login terkelola
<a name="authentication-flows-selection-managedlogin-settings"></a>

Anda mungkin ingin mengizinkan masuk dengan beberapa penyedia untuk aplikasi Anda, atau Anda mungkin ingin menggunakan Amazon Cognito sebagai direktori pengguna independen. Anda mungkin juga ingin mengumpulkan atribut pengguna, menyiapkan dan meminta MFA, atau memerlukan alamat email sebagai nama pengguna. Anda tidak dapat langsung mengedit bidang di login terkelola dan UI yang dihosting. Sebagai gantinya, konfigurasi kumpulan pengguna Anda secara otomatis menetapkan penanganan alur otentikasi login terkelola.

Item konfigurasi kumpulan pengguna berikut menentukan metode autentikasi yang ditampilkan Amazon Cognito kepada pengguna dalam login terkelola dan UI yang dihosting.

------
#### [ User pool options (Sign-in menu) ]

Opsi berikut ada di menu **Masuk** kumpulan pengguna di konsol Amazon Cognito.

**Opsi masuk kumpulan pengguna Cognito**  
Memiliki opsi untuk nama pengguna. Login terkelola dan halaman UI yang dihosting hanya menerima nama pengguna dalam format yang Anda pilih. Saat Anda, misalnya, menyiapkan kumpulan pengguna dengan **Email** sebagai satu-satunya opsi masuk, halaman login terkelola Anda hanya menerima nama pengguna dalam format email.

**Atribut yang diperlukan**  
Saat Anda menetapkan atribut seperti yang diperlukan di kumpulan pengguna, login terkelola akan meminta nilai atribut tersebut kepada pengguna saat mereka mendaftar.

**Opsi untuk masuk berbasis pilihan**  
Memiliki pengaturan untuk metode otentikasi di[Autentikasi berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). [Di sini, Anda dapat mengaktifkan atau menonaktifkan metode otentikasi seperti [passkey dan passwordless](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey).](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) Metode ini hanya tersedia untuk kumpulan pengguna dengan [domain login terkelola](managed-login-branding.md) dan [paket fitur](cognito-sign-in-feature-plans.md) di atas tingkat **Lite**.

**Otentikasi multi-faktor**  
Login terkelola dan UI yang dihosting menangani operasi pendaftaran dan otentikasi untuk [MFA](user-pool-settings-mfa.md). Ketika MFA diperlukan di kumpulan pengguna Anda, halaman login Anda secara otomatis meminta pengguna untuk mengatur faktor tambahan mereka. Mereka juga meminta pengguna yang memiliki konfigurasi MFA untuk menyelesaikan otentikasi dengan kode MFA. Ketika MFA dinonaktifkan atau opsional di kumpulan pengguna Anda, halaman login Anda tidak meminta untuk menyiapkan MFA.

**Pemulihan akun pengguna**  
Pengaturan [pemulihan akun]() layanan mandiri dari kumpulan pengguna menentukan apakah halaman login Anda menampilkan tautan tempat pengguna dapat mengatur ulang kata sandi mereka.

------
#### [ User pool options (Domain menu) ]

Opsi berikut ada di menu **Domain** dari kumpulan pengguna di konsol Amazon Cognito.

**Domain**  
Pilihan domain kumpulan pengguna Anda menetapkan jalur untuk tautan yang dibuka pengguna saat Anda memanggil browser mereka untuk otentikasi.

**Versi branding**  
Pilihan versi branding Anda menentukan apakah domain kumpulan pengguna Anda menampilkan login terkelola atau UI yang dihosting.

------
#### [ User pool options (Social and external providers menu) ]

Opsi berikut ada di menu **penyedia Sosial dan eksternal** dari kumpulan pengguna di konsol Amazon Cognito.

**Penyedia**  
Penyedia identitas (IdPs) yang Anda tambahkan ke kumpulan pengguna dapat dibiarkan aktif atau tidak aktif untuk setiap klien aplikasi di kumpulan pengguna.

------
#### [ App client options ]

Opsi berikut ada di menu **Klien aplikasi** dari kumpulan pengguna di konsol Amazon Cognito. Untuk meninjau opsi ini, pilih klien aplikasi dari daftar.

**Panduan penyiapan cepat**  
Panduan penyiapan cepat memiliki contoh kode untuk berbagai lingkungan pengembang. Mereka berisi pustaka yang diperlukan untuk mengintegrasikan otentikasi login terkelola dengan aplikasi Anda.

**Informasi klien aplikasi**  
Edit konfigurasi ini untuk menetapkan ditetapkan IdPs untuk aplikasi yang diwakili oleh klien aplikasi saat ini. Pada halaman login terkelola, Amazon Cognito menampilkan pilihan untuk pengguna. Pilihan ini ditentukan dari metode yang ditetapkan dan IDP. Misalnya, jika Anda menetapkan nama SAMP 2.0 iDP `MySAML` dan login kumpulan pengguna lokal, halaman login terkelola Anda menampilkan prompt metode otentikasi dan tombol untuk. `MySAML`

**Pengaturan otentikasi**  
Edit konfigurasi ini untuk mengatur metode otentikasi untuk aplikasi Anda. Pada halaman login terkelola, Amazon Cognito menampilkan pilihan untuk pengguna. Pilihan ini ditentukan dari ketersediaan kumpulan pengguna sebagai IDP, dan dari metode yang Anda tetapkan. Misalnya, jika Anda menetapkan `ALLOW_USER_AUTH` otentikasi berbasis pilihan, halaman login terkelola akan menampilkan pilihan yang tersedia seperti memasukkan alamat email dan masuk dengan kunci sandi. Halaman login terkelola juga membuat tombol untuk yang ditetapkan IdPs.

**Halaman login**  
Atur efek visual dari login terkelola atau halaman interaktif pengguna UI yang dihosting dengan opsi yang tersedia di tab ini. Untuk informasi selengkapnya, lihat [Terapkan branding ke halaman login terkelola](managed-login-branding.md).

------

# Mengelola metode otentikasi di AWS SDKs
<a name="authentication-flows-selection-sdk"></a>

*Pengguna di kumpulan pengguna Amazon Cognito dapat masuk dengan berbagai opsi masuk awal, atau faktor.* Untuk beberapa faktor, pengguna dapat menindaklanjuti dengan otentikasi multi-faktor (MFA). Faktor-faktor pertama ini termasuk nama pengguna dan kata sandi, kata sandi satu kali, kunci sandi, dan otentikasi khusus. Untuk informasi selengkapnya, lihat [Alur otentikasi](amazon-cognito-user-pools-authentication-flow-methods.md). Jika aplikasi Anda memiliki komponen UI bawaan dan mengimpor modul AWS SDK, Anda harus membangun logika aplikasi untuk autentikasi. Anda harus memilih salah satu dari dua metode utama dan dari metode itu, mekanisme otentikasi yang ingin Anda terapkan.

Anda dapat menerapkan *otentikasi berbasis klien* di mana aplikasi Anda, atau klien, mendeklarasikan jenis otentikasi di muka. Opsi Anda yang lain adalah *autentikasi berbasis pilihan*, di mana aplikasi Anda mengumpulkan nama pengguna dan meminta jenis autentikasi yang tersedia untuk pengguna. Anda dapat menerapkan model ini bersama-sama dalam aplikasi yang sama atau membagi antara klien aplikasi, sesuai dengan kebutuhan Anda. Setiap metode memiliki fitur yang unik untuk itu, misalnya otentikasi kustom dalam otentikasi berbasis klien dan tanpa kata sandi berbasis pilihan.

Dalam aplikasi yang dibuat khusus yang melakukan autentikasi dengan implementasi AWS SDK dari API kumpulan pengguna, Anda harus menyusun permintaan API agar selaras dengan konfigurasi kumpulan pengguna, konfigurasi klien aplikasi, dan preferensi sisi klien. `InitiateAuth`Sesi yang dimulai dengan `AuthFlow` otentikasi berbasis pilihan `USER_AUTH` dimulai. Amazon Cognito merespons API Anda dengan tantangan metode otentikasi yang disukai atau daftar pilihan. Sesi yang dimulai dengan `AuthFlow` langsung `CUSTOM_AUTH` masuk ke otentikasi khusus dengan pemicu Lambda.

Beberapa metode otentikasi ditetapkan ke salah satu dari dua jenis aliran, dan beberapa metode tersedia di keduanya.

**Topics**
+ [Autentikasi berbasis pilihan](#authentication-flows-selection-choice)
+ [Otentikasi berbasis klien](#authentication-flows-selection-client)

## Autentikasi berbasis pilihan
<a name="authentication-flows-selection-choice"></a>

Aplikasi Anda dapat meminta metode otentikasi berikut dalam otentikasi berbasis pilihan. Deklarasikan opsi-opsi ini dalam `PREFERRED_CHALLENGE` parameter [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)atau [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters), atau dalam `ChallengeName` parameter atau. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)

1. `EMAIL_OTP` dan `SMS_OTP`

   [Masuk tanpa kata sandi dengan kata sandi sekali pakai](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [Masuk tanpa kata sandi dengan kunci sandi WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [Masuk dengan kata sandi persisten](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [Masuk dengan kata sandi persisten dan muatan aman](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA setelah masuk](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

Untuk meninjau opsi ini dalam konteks API mereka, lihat `ChallengeName` di [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

Masuk berbasis pilihan mengeluarkan tantangan sebagai tanggapan atas permintaan awal Anda. Tantangan ini memverifikasi bahwa opsi yang diminta tersedia, atau menyediakan daftar pilihan yang tersedia. Aplikasi Anda dapat menampilkan pilihan ini kepada pengguna, yang kemudian memasukkan kredensil untuk metode login pilihan mereka dan melanjutkan dengan otentikasi dalam tanggapan tantangan.

Anda memiliki opsi berbasis pilihan berikut dalam alur otentikasi Anda. Semua permintaan jenis ini mengharuskan aplikasi Anda terlebih dahulu mengumpulkan nama pengguna atau mengambilnya dari cache.

1. Minta opsi `AuthParameters` dengan `USERNAME` hanya. Amazon Cognito mengembalikan tantangan. `SELECT_CHALLENGE` Dari sana, aplikasi Anda dapat meminta pengguna untuk memilih tantangan dan mengembalikan respons ini ke kumpulan pengguna Anda.

1. Minta tantangan pilihan dengan `AuthParameters` of `PREFERRED_CHALLENGE` dan parameter tantangan pilihan Anda, jika ada. Misalnya, jika Anda meminta `PREFERRED_CHALLENGE` dari`PASSWORD_SRP`, Anda juga harus menyertakan`SRP_A`. Jika pengguna, kumpulan pengguna, dan klien aplikasi Anda semuanya dikonfigurasi untuk tantangan yang diinginkan, Amazon Cognito merespons dengan langkah berikutnya dalam tantangan tersebut, misalnya `PASSWORD_VERIFIER` dalam `PASSWORD_SRP` alur atau [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)di aliran dan. `EMAIL_OTP` `SMS_OTP` Jika tantangan yang disukai tidak tersedia, Amazon Cognito merespons dengan `SELECT_CHALLENGE` dan daftar tantangan yang tersedia.

1. Masuk pengguna terlebih dahulu, lalu minta opsi otentikasi berbasis pilihan mereka. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)Permintaan dengan token akses pengguna yang masuk mengembalikan faktor otentikasi berbasis pilihan yang tersedia dan pengaturan MFA mereka. Dengan opsi ini, pengguna dapat masuk dengan nama pengguna dan kata sandi terlebih dahulu, kemudian mengaktifkan bentuk otentikasi yang berbeda. Anda juga dapat menggunakan operasi ini untuk memeriksa opsi tambahan bagi pengguna yang telah masuk dengan tantangan yang diinginkan.

Untuk [mengonfigurasi klien aplikasi Anda](authentication.md#authentication-implement) untuk autentikasi berbasis pilihan, tambahkan alur autentikasi yang `ALLOW_USER_AUTH` diizinkan. Anda juga harus memilih faktor berbasis pilihan yang ingin Anda izinkan dalam konfigurasi kumpulan pengguna Anda. Proses berikut menggambarkan bagaimana memilih faktor otentikasi berbasis pilihan.

------
#### [ Amazon Cognito console ]

**Untuk mengonfigurasi opsi otentikasi berbasis pilihan di kumpulan pengguna**

1. Masuk ke AWS dan navigasikan ke konsol [kumpulan pengguna Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Pilih kumpulan pengguna atau buat yang baru.

1. Dalam konfigurasi kumpulan pengguna Anda, pilih menu **Masuk**. **Temukan **Opsi untuk login berbasis pilihan** dan pilih Edit.**

1. Opsi **Kata Sandi** selalu tersedia. Ini termasuk `PASSWORD` dan `PASSWORD_SRP` mengalir. Pilih **Pilihan tambahan** yang ingin Anda tambahkan ke opsi pengguna Anda. Anda dapat menambahkan **Passkey** for`WEB_AUTHN`, **Pesan email kata sandi satu kali** untuk`EMAIL_OTP`, dan **pesan SMS kata sandi satu kali** untuk. `SMS_OTP`

1. Pilih **Simpan perubahan**.

------
#### [ API/SDK ]

Badan sebagian [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)permintaan berikut mengonfigurasi semua opsi yang tersedia untuk otentikasi berbasis pilihan.

```
"Policies": {
    "SignInPolicy": {
        "AllowedFirstAuthFactors": [
            "PASSWORD",
            "WEB_AUTHN",
            "EMAIL_OTP",
            "SMS_OTP"
        ]
    }
},
```

------

## Otentikasi berbasis klien
<a name="authentication-flows-selection-client"></a>

Otentikasi berbasis klien mendukung alur otentikasi berikut. Deklarasikan opsi ini dalam `AuthFlow` parameter atau. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)

1. `USER_PASSWORD_AUTH` dan `ADMIN_USER_PASSWORD_AUTH`

   [Masuk dengan kata sandi persisten](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [MFA setelah masuk](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Alur otentikasi ini setara dengan `PASSWORD` otentikasi berbasis pilihan.

1. `USER_SRP_AUTH`

   [Masuk dengan kata sandi persisten dan muatan aman](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA setelah masuk](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Alur otentikasi ini setara dengan `PASSWORD_SRP` otentikasi berbasis pilihan.

1. `REFRESH_TOKEN_AUTH`

   [Segarkan token](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

   Alur otentikasi ini hanya tersedia dalam otentikasi berbasis klien.

1. `CUSTOM_AUTH`

   [Autentikasi kustom](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   Alur otentikasi ini hanya tersedia dalam otentikasi berbasis klien.

Dengan otentikasi berbasis klien, Amazon Cognito mengasumsikan bahwa Anda telah menentukan cara pengguna Anda ingin mengautentikasi sebelum mereka memulai alur otentikasi. Logika penentuan faktor masuk yang ingin diberikan pengguna harus ditentukan dengan pengaturan default atau permintaan khusus, lalu dideklarasikan dalam permintaan pertama ke kumpulan pengguna Anda. `InitiateAuth`Permintaan mendeklarasikan login `AuthFlow` yang secara langsung sesuai dengan salah satu opsi yang tercantum, misalnya. `USER_SRP_AUTH` Dengan deklarasi ini, permintaan juga mencakup parameter untuk memulai otentikasi, misalnya`USERNAME`,`SECRET_HASH`, dan`SRP_A`. Amazon Cognito mungkin menindaklanjuti permintaan ini dengan tantangan tambahan seperti `PASSWORD_VERIFIER` untuk SRP atau `SOFTWARE_TOKEN_MFA` untuk masuk kata sandi dengan TOTP MFA.

Untuk [mengonfigurasi klien aplikasi Anda](authentication.md#authentication-implement) untuk autentikasi berbasis klien, tambahkan alur autentikasi apa pun selain alur autentikasi yang `ALLOW_USER_AUTH` diizinkan. Contohnya adalah`ALLOW_USER_PASSWORD_AUTH`,`ALLOW_CUSTOM_AUTH`,`ALLOW_REFRESH_TOKEN_AUTH`. Untuk mengizinkan alur otentikasi berbasis klien, tidak diperlukan konfigurasi kumpulan pengguna tambahan.

# Alur otentikasi
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

*Proses otentikasi dengan kumpulan pengguna Amazon Cognito dapat digambarkan sebagai alur di mana pengguna membuat pilihan awal, mengirimkan kredensyal, dan menanggapi tantangan tambahan.* Saat Anda menerapkan otentikasi login terkelola dalam aplikasi Anda, Amazon Cognito mengelola alur permintaan dan tantangan ini. Saat mengimplementasikan flow dengan AWS SDK di back end aplikasi, Anda harus membuat logika permintaan, meminta pengguna untuk masukan, dan menanggapi tantangan.

Sebagai administrator aplikasi, karakteristik pengguna, persyaratan keamanan, dan model otorisasi membantu menentukan bagaimana Anda ingin mengizinkan pengguna untuk masuk. Tanyakan pada diri Anda pertanyaan-pertanyaan berikut.
+ Apakah saya ingin mengizinkan pengguna untuk masuk dengan kredensi dari [penyedia identitas lain ()? IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ Apakah [nama pengguna dan kata sandi](#amazon-cognito-user-pools-authentication-flow-methods-password) cukup bukti identitas?
+ Bisakah permintaan otentikasi saya untuk otentikasi nama pengguna-kata sandi dicegat? Apakah saya ingin aplikasi saya mengirimkan kata sandi, atau [menegosiasikan otentikasi menggunakan hash](#amazon-cognito-user-pools-authentication-flow-methods-srp) dan garam?
+ Apakah saya ingin mengizinkan pengguna untuk melewati entri kata sandi dan [menerima kata sandi satu kali](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) yang menandatanganinya?
+ Apakah saya ingin mengizinkan pengguna untuk masuk dengan [cap jempol, wajah, atau kunci keamanan perangkat keras?](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ Kapan saya ingin meminta [otentikasi multi-faktor (MFA)](#amazon-cognito-user-pools-authentication-flow-methods-mfa), jika sama sekali?
+ Apakah saya ingin [mempertahankan sesi pengguna tanpa meminta kembali kredensialnya?](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ Apakah saya ingin [memperluas model otorisasi saya](#amazon-cognito-user-pools-authentication-flow-methods-custom) di luar kemampuan bawaan Amazon Cognito?

Ketika Anda memiliki jawaban atas pertanyaan-pertanyaan ini, Anda dapat mempelajari cara mengaktifkan fitur yang relevan dan menerapkannya dalam permintaan otentikasi yang dibuat aplikasi Anda.

Setelah menyiapkan alur login untuk pengguna, Anda dapat memeriksa status mereka saat ini untuk MFA [dan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) faktor autentikasi berbasis pilihan dengan permintaan ke operasi API. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) Operasi ini memerlukan otorisasi dengan token akses pengguna yang masuk. Ini mengembalikan faktor otentikasi pengguna dan pengaturan MFA.

**Topics**
+ [Masuk dengan pihak ketiga IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Masuk dengan kata sandi persisten](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [Masuk dengan kata sandi persisten dan muatan aman](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [Masuk tanpa kata sandi dengan kata sandi sekali pakai](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Masuk tanpa kata sandi dengan kunci sandi WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA setelah masuk](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Segarkan token](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Autentikasi kustom](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Alur autentikasi migrasi pengguna](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Masuk dengan pihak ketiga IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Kumpulan pengguna Amazon Cognito berfungsi sebagai broker perantara sesi otentikasi antara IdPs seperti Masuk dengan Apple, Login with Amazon, dan layanan OpenID Connect (OIDC). Proses ini juga disebut *federated sign-in atau *federated** authentication. Autentikasi federasi tidak menggunakan alur autentikasi apa pun yang dapat Anda buat ke klien aplikasi Anda. Sebagai gantinya, Anda menetapkan kumpulan pengguna yang dikonfigurasi IdPs ke klien aplikasi Anda. Masuk federasi terjadi ketika pengguna memilih IDP mereka di login terkelola atau aplikasi Anda memanggil sesi dengan pengalihan ke halaman masuk iDP mereka.

Dengan login federasi, Anda mendelegasikan faktor autentikasi primer dan MFA ke IDP pengguna. Amazon Cognito tidak menambahkan alur lanjutan lainnya di bagian ini ke pengguna federasi kecuali Anda [menautkannya ke](cognito-user-pools-identity-federation-consolidate-users.md) pengguna lokal. Pengguna federasi yang tidak terhubung memiliki nama pengguna, tetapi mereka adalah penyimpanan data atribut yang dipetakan yang biasanya tidak digunakan untuk login terlepas dari alur berbasis browser.

**Sumber daya implementasi**
+ [Masuk kumpulan pengguna dengan penyedia identitas pihak ketiga](cognito-user-pools-identity-federation.md)

## Masuk dengan kata sandi persisten
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

Di kumpulan pengguna Amazon Cognito, setiap pengguna memiliki nama pengguna. Ini mungkin nomor telepon, alamat email, atau pengenal yang dipilih atau disediakan administrator. Pengguna jenis ini dapat masuk dengan nama pengguna dan kata sandi mereka, dan secara opsional memberikan MFA. Kumpulan pengguna dapat melakukan login nama pengguna-kata sandi dengan operasi API publik atau yang diotorisasi oleh IAM dan metode SDK. Aplikasi Anda dapat langsung mengirim kata sandi ke kumpulan pengguna Anda untuk otentikasi. Kumpulan pengguna Anda merespons dengan tantangan tambahan atau token web JSON (JWTs) yang merupakan hasil dari otentikasi yang berhasil.

------
#### [ Activate password sign-in ]

Untuk mengaktifkan [otentikasi berbasis klien](authentication-flows-selection-sdk.md#authentication-flows-selection-client) dengan nama pengguna dan kata sandi, konfigurasikan klien aplikasi Anda untuk mengizinkannya. Di konsol Amazon Cognito, navigasikan ke menu **Klien aplikasi** di bawah **Aplikasi** dalam konfigurasi kumpulan pengguna Anda. **Untuk mengizinkan login dengan kata sandi biasa untuk aplikasi seluler atau native sisi klien, edit klien aplikasi dan pilih **Masuk dengan nama pengguna dan kata sandi: ALLOW\$1USER\$1PASSWORD\$1AUTH di bawah Alur otentikasi**.** Untuk mengizinkan login dengan kata sandi biasa untuk aplikasi sisi server, edit klien aplikasi dan pilih **Masuk** dengan kredensi administratif sisi server: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH.

Untuk mengaktifkan [autentikasi berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) dengan nama pengguna dan kata sandi, konfigurasikan klien aplikasi Anda untuk mengizinkannya. Edit klien aplikasi Anda dan pilih **Masuk berbasis pilihan: ALLOW\$1USER\$1AUTH**.

![\[Tangkapan layar dari konsol Amazon Cognito yang menggambarkan pilihan alur otentikasi kata sandi biasa untuk klien aplikasi. Opsi ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH, dan ALLOW_USER_AUTH telah dipilih.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


**Untuk memverifikasi bahwa otentikasi kata sandi tersedia dalam alur autentikasi berbasis pilihan, navigasikan ke **menu Masuk dan tinjau bagian di bawah Opsi untuk masuk** berbasis pilihan.** **Anda dapat masuk dengan otentikasi kata sandi biasa jika Kata Sandi terlihat di bawah **Pilihan** yang tersedia.** Opsi **Kata Sandi** mencakup varian otentikasi kata sandi nama pengguna biasa dan SRP.

![\[Tangkapan layar dari konsol Amazon Cognito yang menggambarkan pilihan otentikasi kata sandi dalam konfigurasi login berbasis pilihan USER_AUTH untuk kumpulan pengguna. Opsi Kata Sandi ditampilkan sebagai aktif.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Konfigurasikan `ExplicitAuthFlows` dengan opsi username-and-password otentikasi pilihan Anda dalam [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)atau permintaan.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

Dalam [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)permintaan [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau, konfigurasikan `Policies` dengan alur otentikasi berbasis pilihan yang ingin Anda dukung. `PASSWORD`Nilai di dalamnya `AllowedFirstAuthFactors` mencakup opsi aliran otentikasi kata sandi biasa dan SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with a password ]

Untuk menandatangani pengguna ke aplikasi dengan otentikasi nama pengguna-kata sandi, konfigurasikan isi [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)atau [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)permintaan Anda sebagai berikut. Permintaan masuk ini berhasil atau berlanjut ke tantangan berikutnya jika pengguna saat ini memenuhi syarat untuk autentikasi nama pengguna kata sandi. Jika tidak, ia merespons dengan daftar tantangan otentikasi faktor utama yang tersedia. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Anda juga dapat menghilangkan `PREFERRED_CHALLENGE` nilai dan menerima respons yang berisi daftar faktor masuk yang memenuhi syarat untuk pengguna.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Jika Anda tidak mengirimkan tantangan yang diinginkan atau pengguna yang dikirimkan tidak memenuhi syarat untuk tantangan pilihan mereka, Amazon Cognito mengembalikan daftar opsi. `AvailableChallenges` Ketika `AvailableChallenges` menyertakan a `ChallengeName` of`PASSWORD`, Anda dapat melanjutkan otentikasi dengan respons [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)atau [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)tantangan dalam format berikut. Anda harus meneruskan `Session` parameter yang mengaitkan respons tantangan dengan respons API ke permintaan login awal Anda. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito menanggapi permintaan tantangan pilihan yang memenuhi syarat dan berhasil serta respons tantangan dengan token atau tantangan tambahan yang diperlukan seperti otentikasi multi-faktor (MFA). `PASSWORD`

------
#### [ Client-based sign-in with a password ]

Untuk memasukkan pengguna ke aplikasi sisi klien dengan autentikasi nama pengguna-kata sandi, konfigurasikan isi permintaan Anda sebagai berikut. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Untuk memasukkan pengguna ke aplikasi sisi server dengan autentikasi nama pengguna-kata sandi, konfigurasikan isi permintaan Anda sebagai berikut. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Aplikasi Anda harus menandatangani permintaan ini dengan AWS kredensi. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito menanggapi permintaan yang berhasil dengan token atau tantangan tambahan yang diperlukan seperti otentikasi multi-faktor (MFA).

------

## Masuk dengan kata sandi persisten dan muatan aman
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Bentuk lain dari metode masuk nama pengguna kata sandi di kumpulan pengguna adalah dengan protokol Secure Remote Password (SRP). Opsi ini mengirimkan bukti pengetahuan tentang kata sandi—hash kata sandi dan garam—yang dapat diverifikasi oleh kumpulan pengguna Anda. Tanpa informasi rahasia yang dapat dibaca dalam permintaan ke Amazon Cognito, aplikasi Anda adalah satu-satunya entitas yang memproses kata sandi yang dimasukkan pengguna. Autentikasi SRP melibatkan perhitungan matematis yang paling baik dilakukan oleh komponen yang ada yang dapat Anda impor di SDK Anda. SRP biasanya diimplementasikan dalam aplikasi sisi klien seperti aplikasi seluler. Untuk informasi lebih lanjut tentang protokol, lihat Beranda [Stanford SRP](http://srp.stanford.edu/). [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) juga memiliki sumber dan contoh. [Berbagai pustaka umum](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) tersedia untuk melakukan perhitungan SRP untuk alur otentikasi Anda.

 initiate-challenge-respondUrutan otentikasi Amazon Cognito memvalidasi pengguna dan kata sandi mereka dengan SRP. Anda harus mengonfigurasi kumpulan pengguna dan klien aplikasi untuk mendukung otentikasi SRP, lalu menerapkan logika permintaan masuk dan tantangan tanggapan dalam aplikasi Anda. Pustaka SRP Anda dapat menghasilkan angka acak dan nilai terhitung yang menunjukkan kepada kumpulan pengguna Anda bahwa Anda memiliki kata sandi pengguna. Aplikasi Anda mengisi nilai terhitung ini ke format JSON dan bidang dalam operasi API kumpulan pengguna Amazon Cognito `AuthParameters` dan `ChallengeParameters` metode SDK untuk autentikasi.

------
#### [ Activate SRP sign-in ]

Untuk mengaktifkan [otentikasi berbasis klien](authentication-flows-selection-sdk.md#authentication-flows-selection-client) dengan nama pengguna dan SRP, konfigurasikan klien aplikasi Anda untuk mengizinkannya. Di konsol Amazon Cognito, navigasikan ke menu **Klien aplikasi** di bawah **Aplikasi** dalam konfigurasi kumpulan pengguna Anda. **Untuk mengizinkan login SRP untuk aplikasi seluler atau native sisi klien, edit klien aplikasi dan pilih **Masuk dengan kata sandi jarak jauh aman (SRP): ALLOW\$1USER\$1SRP\$1AUTH di** bawah Alur otentikasi.**

**Untuk mengaktifkan [autentikasi berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) dengan nama pengguna dan SRP, edit klien aplikasi Anda dan pilih Login berbasis pilihan: ALLOW\$1USER\$1AUTH.**

![\[Tangkapan layar dari konsol Amazon Cognito yang menggambarkan pilihan alur otentikasi kata sandi jarak jauh yang aman untuk klien aplikasi. Opsi ALLOW_USER_SRP_AUTH dan ALLOW_USER_AUTH telah dipilih.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


**Untuk memverifikasi bahwa otentikasi SRP tersedia di alur autentikasi berbasis pilihan Anda, navigasikan ke **menu Masuk dan tinjau bagian di bawah Opsi untuk masuk** berbasis pilihan.** Anda dapat masuk dengan otentikasi SRP jika **Kata Sandi** terlihat di bawah Pilihan yang **tersedia**. Opsi **Kata Sandi** mencakup varian otentikasi kata sandi pengguna plaintext dan SRP.

![\[Tangkapan layar dari konsol Amazon Cognito yang menggambarkan pilihan otentikasi kata sandi dalam konfigurasi login berbasis pilihan USER_AUTH untuk kumpulan pengguna. Opsi Kata Sandi disebarkan sebagai aktif.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Konfigurasikan `ExplicitAuthFlows` dengan opsi username-and-password otentikasi pilihan Anda dalam [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)atau permintaan.

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

Dalam [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)permintaan [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau, konfigurasikan `Policies` dengan alur otentikasi berbasis pilihan yang ingin Anda dukung. `PASSWORD`Nilai di dalamnya `AllowedFirstAuthFactors` mencakup opsi aliran otentikasi kata sandi biasa dan SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with SRP ]

Untuk menandatangani pengguna ke aplikasi dengan otentikasi nama pengguna-kata sandi dengan SRP, konfigurasikan isi atau permintaan Anda [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)sebagai berikut. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Permintaan masuk ini berhasil atau berlanjut ke tantangan berikutnya jika pengguna saat ini memenuhi syarat untuk autentikasi nama pengguna kata sandi. Jika tidak, ia merespons dengan daftar tantangan otentikasi faktor utama yang tersedia. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Anda juga dapat menghilangkan `PREFERRED_CHALLENGE` nilai dan menerima respons yang berisi daftar faktor masuk yang memenuhi syarat untuk pengguna.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Jika Anda tidak mengirimkan tantangan yang diinginkan atau pengguna yang dikirimkan tidak memenuhi syarat untuk tantangan pilihan mereka, Amazon Cognito mengembalikan daftar opsi. `AvailableChallenges` Ketika `AvailableChallenges` menyertakan a `ChallengeName` of`PASSWORD_SRP`, Anda dapat melanjutkan otentikasi dengan respons [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)atau [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)tantangan dalam format berikut. Anda harus meneruskan `Session` parameter yang mengaitkan respons tantangan dengan respons API ke permintaan login awal Anda. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito menanggapi permintaan tantangan pilihan yang memenuhi syarat dan `PASSWORD_SRP` respons tantangan dengan tantangan. `PASSWORD_VERIFIER` Klien Anda harus menyelesaikan perhitungan SRP dan menanggapi tantangan dalam [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)permintaan [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)atau permintaan.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Pada respons `PASSWORD_VERIFIER` tantangan yang berhasil, Amazon Cognito mengeluarkan token atau tantangan lain yang diperlukan seperti otentikasi multi-faktor (MFA).

------
#### [ Client-based sign-in with SRP ]

Otentikasi SRP lebih umum untuk otentikasi sisi klien daripada ke sisi server. Namun, Anda dapat menggunakan otentikasi SRP dengan [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)dan. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Untuk menandatangani pengguna ke aplikasi, konfigurasikan isi `InitiateAuth` atau `AdminInitiateAuth` permintaan Anda sebagai berikut. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

*Klien menghasilkan `SRP_A` dari modulo generator N *g* dinaikkan ke kekuatan bilangan bulat acak rahasia a.*

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito merespons dengan sebuah tantangan. `PASSWORD_VERIFIER` Klien Anda harus menyelesaikan perhitungan SRP dan menanggapi tantangan dalam [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)permintaan [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)atau permintaan.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Pada respons `PASSWORD_VERIFIER` tantangan yang berhasil, Amazon Cognito mengeluarkan token atau tantangan lain yang diperlukan seperti otentikasi multi-faktor (MFA).

------

## Masuk tanpa kata sandi dengan kata sandi sekali pakai
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

Password bisa hilang atau dicuri. Anda mungkin ingin memverifikasi hanya bahwa pengguna Anda memiliki akses ke alamat email, nomor telepon, atau aplikasi autentikator terverifikasi. Solusi untuk ini adalah *masuk tanpa kata sandi*. Aplikasi Anda dapat meminta pengguna untuk memasukkan nama pengguna, alamat email, atau nomor telepon mereka. Amazon Cognito kemudian menghasilkan kata sandi satu kali (OTP), kode yang harus mereka konfirmasi. Kode yang berhasil menyelesaikan otentikasi.

Alur otentikasi kata sandi satu kali (OTP) tidak kompatibel dengan otentikasi multi-faktor (MFA) yang diperlukan di kumpulan pengguna Anda. Otentikasi kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat Anda menyetelnya. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Jika MFA bersifat opsional di kumpulan pengguna Anda, pengguna yang telah mengaktifkan MFA tidak dapat masuk dengan faktor pertama OTP. Pengguna yang tidak memiliki preferensi MFA di kumpulan pengguna opsional MFA dapat masuk dengan faktor tanpa kata sandi. Untuk informasi selengkapnya, lihat [Hal-hal yang perlu diketahui tentang MFA kumpulan pengguna](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Ketika pengguna memasukkan kode yang mereka terima dengan benar dalam pesan SMS atau email sebagai bagian dari otentikasi tanpa kata sandi, selain mengautentikasi pengguna, kumpulan pengguna Anda menandai alamat email atau atribut nomor telepon pengguna yang belum diverifikasi sebagai terverifikasi. Status pengguna juga berubah dari `UNCONFIRMED` ke`CONFIRMED`, terlepas dari apakah Anda mengonfigurasi kumpulan pengguna untuk [memverifikasi alamat email atau nomor telepon secara otomatis](signing-up-users-in-your-app.md).

**Opsi baru dengan login tanpa kata sandi**  
Saat Anda mengaktifkan otentikasi tanpa kata sandi di kumpulan pengguna, ini mengubah cara kerja beberapa alur pengguna.

1. Pengguna dapat mendaftar tanpa kata sandi dan memilih faktor tanpa kata sandi saat mereka masuk. Anda juga dapat membuat pengguna tanpa kata sandi sebagai administrator.

1. Pengguna yang Anda [impor dengan file CSV](cognito-user-pools-using-import-tool.md) dapat langsung masuk dengan faktor tanpa kata sandi. Mereka tidak diharuskan untuk menyetel kata sandi sebelum masuk.

1. Pengguna yang tidak memiliki kata sandi dapat mengirimkan permintaan [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API tanpa `PreviousPassword` parameter.

**Masuk otomatis dengan OTPs**  
Pengguna yang mendaftar dan mengonfirmasi akun pengguna mereka dengan email atau pesan SMS OTPs dapat secara otomatis masuk dengan faktor tanpa kata sandi yang cocok dengan pesan konfirmasi mereka. Di UI login terkelola, pengguna yang mengonfirmasi akun mereka dan memenuhi syarat untuk masuk OTP dengan metode pengiriman kode konfirmasi secara otomatis melanjutkan proses masuk pertama mereka setelah mereka memberikan kode konfirmasi. Dalam aplikasi yang dibuat khusus dengan AWS SDK, teruskan parameter berikut ke operasi atau [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html). [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ `Session`Parameter dari respons [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API sebagai parameter `Session` permintaan.
+ Sebuah [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)dari`USER_AUTH`.

Anda dapat melewati [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) dari `EMAIL_OTP` atau`SMS_OTP`, tetapi itu tidak diperlukan. `Session`Parameter memberikan bukti otentikasi dan Amazon Cognito mengabaikan saat Anda meneruskan `AuthParameters` kode sesi yang valid.

Operasi masuk mengembalikan respons yang menunjukkan otentikasi yang berhasil [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), tanpa tantangan tambahan jika kondisi berikut benar.
+ `Session`Kode ini valid dan tidak kedaluwarsa.
+ Pengguna memenuhi syarat untuk metode otentikasi OTP.

------
#### [ Activate passwordless sign-in ]

**Konsol**  
Untuk mengaktifkan login tanpa kata sandi, konfigurasikan kumpulan pengguna Anda untuk mengizinkan login utama dengan satu atau beberapa jenis tanpa kata sandi, lalu konfigurasikan klien aplikasi Anda untuk mengizinkan alur. `USER_AUTH` Di konsol Amazon Cognito, navigasikan ke menu **Masuk** di bawah **Autentikasi** dalam konfigurasi kumpulan pengguna Anda. **Edit **Opsi untuk masuk berbasis pilihan** dan pilih Kata sandi **satu kali pesan email atau kata sandi satu kali pesan SMS**.** Anda dapat mengaktifkan kedua opsi. Simpan perubahan Anda.

Arahkan ke menu **Klien aplikasi** dan pilih klien aplikasi atau buat yang baru. Pilih **Edit** dan pilih **Pilih jenis otentikasi saat masuk:** ALLOW\$1USER\$1AUTH.

**API/SDK**  
Di API kumpulan pengguna, konfigurasikan `SignInPolicy` dengan opsi tanpa kata sandi yang sesuai 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).

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

Konfigurasikan klien aplikasi Anda `ExplicitAuthFlows` dengan opsi yang diperlukan dalam [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)atau permintaan.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

Masuk tanpa kata sandi tidak memiliki [berbasis klien](authentication-flows-selection-sdk.md#authentication-flows-selection-client) `AuthFlow` yang dapat Anda tentukan dan. [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) Otentikasi OTP hanya tersedia [berdasarkan pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) `AuthFlow``USER_AUTH`, di mana Anda dapat meminta opsi masuk yang disukai atau memilih opsi tanpa kata sandi dari pengguna. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Untuk menandatangani pengguna ke aplikasi, konfigurasikan isi `InitiateAuth` atau `AdminInitiateAuth` permintaan Anda sebagai berikut. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

Dalam contoh ini, kita tidak tahu ke arah mana pengguna ingin masuk. Jika kami menambahkan `PREFERRED_CHALLENGE` parameter dan tantangan yang disukai tersedia untuk pengguna, Amazon Cognito merespons dengan tantangan itu.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Anda malah dapat menambahkan `"PREFERRED_CHALLENGE": "EMAIL_OTP"` atau `"PREFERRED_CHALLENGE": "SMS_OTP"` ke `AuthParameters` dalam contoh ini. Jika pengguna memenuhi syarat untuk metode pilihan tersebut, kumpulan pengguna Anda segera mengirimkan kode ke alamat email atau nomor telepon pengguna dan mengembalikan `"ChallengeName": "EMAIL_OTP"` atau`"ChallengeName": "SMS_OTP"`.

Jika Anda tidak menentukan tantangan yang disukai, Amazon Cognito merespons dengan parameter. `AvailableChallenges`

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "[Session ID]"
}
```

Pengguna ini memenuhi syarat untuk login tanpa kata sandi dengan pesan email OTP, pesan SMS OTP, dan username-password. Aplikasi Anda dapat meminta pengguna untuk memilih mereka, atau membuat pilihan berdasarkan logika internal. Kemudian dilanjutkan dengan [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)permintaan [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)atau yang memilih tantangan. Misalkan pengguna ingin menyelesaikan otentikasi tanpa kata sandi dengan OTP pesan email.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Amazon Cognito merespons dengan `EMAIL_OTP` tantangan dan mengirimkan kode ke alamat email terverifikasi pengguna Anda. Aplikasi Anda kemudian harus menanggapi lagi tantangan ini.

Ini juga akan menjadi respons tantangan berikutnya jika Anda meminta `EMAIL_OTP` sebagai`PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## Masuk tanpa kata sandi dengan kunci sandi WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

Passkey aman dan memberlakukan tingkat upaya yang relatif rendah pada pengguna. Masuk kunci sandi menggunakan *autentikator, perangkat eksternal yang dapat diautentikasi* oleh pengguna. Kata sandi reguler mengekspos pengguna ke kerentanan seperti phishing, menebak kata sandi, dan pencurian kredenal. Dengan kunci sandi, aplikasi Anda dapat memperoleh manfaat dari langkah-langkah keamanan lanjutan pada ponsel dan perangkat lain yang terpasang atau dibangun ke sistem informasi. Alur kerja masuk kunci sandi umum dimulai dengan panggilan ke perangkat Anda yang memanggil pengelola kata sandi atau *kredensyal* Anda, misalnya gantungan kunci iOS atau pengelola kata sandi Google Chrome. Manajer kredensial di perangkat meminta mereka untuk memilih kunci sandi dan mengotorisasinya dengan mekanisme kredensi atau buka kunci perangkat yang ada. Ponsel modern memiliki pemindai wajah, pemindai sidik jari, pola buka kunci dan mekanisme lainnya, beberapa yang secara bersamaan memuaskan sesuatu yang *Anda ketahui dan sesuatu* *yang Anda miliki* prinsip otentikasi yang kuat. *Dalam kasus otentikasi kunci sandi dengan biometrik, kunci sandi mewakili sesuatu yang Anda miliki.*

Anda mungkin ingin mengganti kata sandi dengan sidik jari, wajah, atau autentikasi kunci keamanan. Ini adalah *passkey* atau *WebAuthn*otentikasi. Adalah umum bagi pengembang aplikasi untuk mengizinkan pengguna mendaftarkan perangkat biometrik setelah mereka pertama kali masuk dengan kata sandi. Dengan kumpulan pengguna Amazon Cognito, aplikasi Anda dapat mengonfigurasi opsi masuk ini untuk pengguna. Otentikasi kunci sandi dapat memenuhi persyaratan otentikasi multi-faktor (MFA) saat kumpulan pengguna Anda telah disetel. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Dalam konfigurasi ini, otentikasi passkey dengan verifikasi pengguna dihitung sebagai otentikasi multi-faktor.

Alur otentikasi kata sandi satu kali (OTP) tidak kompatibel dengan otentikasi multi-faktor (MFA) yang diperlukan di kumpulan pengguna Anda. Otentikasi kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat Anda menyetelnya. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Jika MFA bersifat opsional di kumpulan pengguna Anda, pengguna yang telah mengaktifkan MFA tidak dapat masuk dengan faktor pertama OTP. Pengguna yang tidak memiliki preferensi MFA di kumpulan pengguna opsional MFA dapat masuk dengan faktor tanpa kata sandi. Untuk informasi selengkapnya, lihat [Hal-hal yang perlu diketahui tentang MFA kumpulan pengguna](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### Apa itu passkey?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

Passkey menyederhanakan pengalaman pengguna dengan menghilangkan kebutuhan untuk mengingat kata sandi yang rumit atau masuk. OTPs Passkey didasarkan pada WebAuthn dan CTAP2 standar yang dirancang oleh [World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/) (W3C) dan FIDO (Fast Identity Online) Alliance. *Browser dan platform menerapkan standar ini, menyediakan APIs aplikasi web atau seluler untuk memulai proses pendaftaran atau otentikasi kunci sandi, dan juga UI bagi pengguna untuk memilih dan berinteraksi dengan autentikator kunci sandi.*

Saat pengguna mendaftarkan autentikator dengan situs web atau aplikasi, autentikator akan membuat key pair publik-pribadi. WebAuthn browser dan platform mengirimkan kunci publik ke bagian belakang aplikasi situs web atau aplikasi. Authenticator menyimpan kunci pribadi, kunci IDs, dan metadata tentang pengguna dan aplikasi. Ketika pengguna ingin mengautentikasi dalam aplikasi terdaftar dengan autentikator terdaftar mereka, aplikasi menghasilkan tantangan acak. Tanggapan terhadap tantangan ini adalah tanda tangan digital dari tantangan yang dihasilkan dengan kunci pribadi autentikator untuk aplikasi dan pengguna itu, dan metadata yang relevan. Browser atau platform aplikasi menerima tanda tangan digital dan meneruskannya ke bagian belakang aplikasi. Aplikasi kemudian memvalidasi tanda tangan dengan kunci publik yang disimpan.

**catatan**  
Aplikasi Anda tidak menerima rahasia otentikasi apa pun yang diberikan pengguna kepada autentikator mereka, juga tidak menerima informasi tentang kunci pribadi.

Berikut ini adalah beberapa contoh dan kemampuan autentikator yang saat ini ada di pasaran. Authenticator mungkin memenuhi salah satu atau semua kategori ini.
+ Beberapa autentikator melakukan *verifikasi pengguna* dengan faktor-faktor seperti PIN, input biometrik dengan wajah atau sidik jari, atau kode sandi sebelum memberikan akses, memastikan bahwa hanya pengguna yang sah yang dapat mengotorisasi tindakan. Authenticator lain tidak memiliki kemampuan verifikasi pengguna, dan beberapa dapat melewati verifikasi pengguna ketika aplikasi tidak memerlukannya.
+ Beberapa autentikator, misalnya token YubiKey perangkat keras, bersifat portabel. Mereka berkomunikasi dengan perangkat melalui koneksi USB, Bluetooth atau NFC. Beberapa autentikator bersifat lokal dan terikat ke platform, misalnya Windows Hello di PC atau ID Wajah di iPhone. Authenticator yang terikat perangkat dapat dibawa oleh pengguna jika cukup kecil, seperti perangkat seluler. Terkadang pengguna dapat menghubungkan otentikator perangkat keras mereka dengan banyak platform berbeda dengan komunikasi nirkabel. Misalnya, pengguna di browser desktop dapat menggunakan ponsel pintar mereka sebagai autentikator kunci sandi ketika mereka memindai kode QR.
+ Beberapa passkey yang terikat platform disinkronkan ke cloud sehingga dapat digunakan dari beberapa lokasi. Misalnya, kunci sandi ID Wajah di iPhone menyinkronkan metadata kunci sandi dengan akun Apple pengguna di Rantai Kunci iCloud mereka. Kunci sandi ini memberikan otentikasi tanpa batas di seluruh perangkat Apple, alih-alih mengharuskan pengguna mendaftarkan setiap perangkat secara independen. Aplikasi autentikator berbasis perangkat lunak seperti 1Password, Dashlane, dan Bitwarden menyinkronkan kunci sandi di semua platform tempat pengguna menginstal aplikasi.

Dalam WebAuthn terminologi, situs web dan aplikasi *mengandalkan pihak*. Setiap kunci sandi dikaitkan dengan ID pihak yang bergantung tertentu, pengenal terpadu yang mewakili situs web atau aplikasi yang menerima otentikasi kunci sandi.. Pengembang harus hati-hati memilih ID pihak yang bergantung untuk memiliki cakupan otentikasi yang tepat. ID partai yang mengandalkan khas adalah nama domain root dari server web. Kunci sandi dengan spesifikasi ID pihak yang bergantung ini dapat mengautentikasi domain dan subdomain tersebut. Browser dan platform menolak otentikasi kunci sandi ketika URL situs web yang ingin diakses pengguna tidak cocok dengan ID pihak yang bergantung. Demikian pula, untuk aplikasi seluler, kunci sandi hanya dapat digunakan jika jalur aplikasi ada dalam file `.well-known` asosiasi yang disediakan aplikasi di jalur yang ditunjukkan oleh ID pihak yang bergantung.

Passkey dapat ditemukan*.* Mereka dapat secara otomatis dikenali dan digunakan oleh browser atau platform tanpa mengharuskan pengguna untuk memasukkan nama pengguna. Saat pengguna mengunjungi situs web atau aplikasi yang mendukung otentikasi kunci sandi, mereka dapat memilih dari daftar kunci sandi yang sudah diketahui browser atau platform, atau mereka dapat memindai kode QR.

### Bagaimana Amazon Cognito menerapkan otentikasi kunci sandi?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

**Passkeys adalah fitur opt-in yang tersedia di semua [paket fitur](cognito-sign-in-feature-plans.md) kecuali untuk Lite.** Ini hanya tersedia dalam alur otentikasi [berbasis pilihan](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Dengan [login terkelola](authentication-flows-selection-managedlogin.md), Amazon Cognito menangani logika otentikasi kunci sandi. Anda juga dapat menggunakan [API kumpulan pengguna Amazon Cognito AWS SDKs](#amazon-cognito-user-pools-authentication-flow-methods) untuk melakukan otentikasi kunci sandi di bagian belakang aplikasi Anda.

Amazon Cognito mengenali kunci sandi yang dibuat menggunakan salah satu dari dua algoritma kriptografi asimetris, (-7) dan ES256 (-257). RS256 Sebagian besar autentikator mendukung kedua algoritma. Secara default, pengguna dapat mengatur semua jenis otentikator, misalnya token perangkat keras, ponsel pintar, dan aplikasi otentikator perangkat lunak. Amazon Cognito saat ini tidak mendukung penegakan [pengesahan](https://csrc.nist.gov/glossary/term/attestation).

Di kumpulan pengguna, Anda dapat mengonfigurasi verifikasi pengguna agar lebih disukai atau diperlukan. Setelan ini secara default menjadi preferen dalam permintaan API yang tidak memberikan nilai, dan pilihan dipilih secara default di konsol Amazon Cognito. Saat Anda mengatur verifikasi pengguna ke pilihan, pengguna dapat menyiapkan autentikator yang tidak memiliki kemampuan verifikasi pengguna, dan operasi pendaftaran dan autentikasi dapat berhasil tanpa verifikasi pengguna. Untuk mengamanatkan verifikasi pengguna dalam pendaftaran dan otentikasi kunci sandi, ubah pengaturan ini menjadi wajib.

ID pihak yang mengandalkan (RP) yang Anda tetapkan dalam konfigurasi kunci sandi Anda adalah keputusan penting. Jika Anda tidak menentukan sebaliknya dan [versi branding domain](managed-login-branding.md) Anda adalah login terkelola, kumpulan pengguna Anda secara default mengharapkan nama [domain kustom Anda sebagai ID RP](cognito-user-pools-add-custom-domain.md). [Jika Anda tidak memiliki domain kustom dan tidak menentukan sebaliknya, kumpulan pengguna Anda default ke ID RP domain awalan Anda.](cognito-user-pools-assign-domain-prefix.md) Anda juga dapat mengonfigurasi ID RP Anda menjadi nama domain apa pun yang tidak ada dalam daftar akhiran publik (PSL). Entri ID RP Anda berlaku untuk pendaftaran dan otentikasi kunci sandi di login terkelola dan dalam otentikasi SDK. Passkey hanya berfungsi dalam aplikasi seluler dengan Amazon Cognito dapat menemukan file asosiasi `.well-known` dengan ID RP Anda sebagai domain. Sebagai praktik terbaik, tentukan dan tetapkan nilai ID pihak yang mengandalkan Anda sebelum situs web atau aplikasi Anda tersedia untuk umum. Jika Anda mengubah ID RP Anda, pengguna Anda harus mendaftar kembali dengan ID RP yang baru.

Setiap pengguna dapat mendaftarkan hingga 20 kunci sandi. Mereka hanya dapat mendaftarkan kunci sandi setelah mereka masuk ke kumpulan pengguna Anda setidaknya sekali. Login terkelola menghapus upaya signifikan dari pendaftaran kunci sandi. Saat Anda mengaktifkan otentikasi kunci sandi untuk kumpulan pengguna dan klien aplikasi, kumpulan pengguna Anda dengan domain login terkelola mengingatkan pengguna akhir untuk mendaftarkan kunci sandi setelah mereka mendaftar ke akun pengguna baru. Anda juga dapat memanggil browser pengguna kapan saja untuk mengarahkan mereka ke halaman login terkelola untuk pendaftaran kunci sandi. Pengguna harus memberikan nama pengguna sebelum Amazon Cognito dapat memulai otentikasi kunci sandi. Login terkelola menangani ini secara otomatis. Halaman login meminta nama pengguna, memvalidasi bahwa pengguna memiliki setidaknya satu kunci sandi yang terdaftar, dan kemudian meminta masuk kunci sandi. Demikian pula, aplikasi berbasis SDK harus meminta nama pengguna dan menyediakannya dalam permintaan otentikasi.

Ketika Anda mengatur otentikasi kumpulan pengguna dengan kunci sandi dan Anda memiliki domain kustom dan domain awalan, ID RP default ke nama domain yang sepenuhnya memenuhi syarat (FQDN) dari domain kustom Anda. **Untuk menetapkan domain awalan sebagai ID RP di konsol Amazon Cognito, hapus domain kustom Anda atau masukkan FQDN domain awalan sebagai domain Pihak Ketiga.**

------
#### [ Activate passkey sign-in ]

**Konsol**  
Untuk mengaktifkan login dengan kunci sandi, konfigurasikan kumpulan pengguna Anda untuk mengizinkan login utama dengan satu atau beberapa jenis tanpa kata sandi, lalu konfigurasikan klien aplikasi Anda untuk mengizinkan alur. `USER_AUTH` Di konsol Amazon Cognito, navigasikan ke menu **Masuk** di bawah **Autentikasi** dalam konfigurasi kumpulan pengguna Anda. **Edit **Opsi untuk masuk berbasis pilihan** dan tambahkan **Kunci Sandi** ke daftar pilihan yang Tersedia.**

Arahkan ke menu **Metode otentikasi** dan edit **Passkey**.
+ **Verifikasi pengguna** adalah pengaturan apakah kumpulan pengguna Anda memerlukan perangkat kunci sandi yang melakukan pemeriksaan tambahan bahwa pengguna saat ini diberi otorisasi untuk kunci sandi. Untuk mendorong pengguna mengonfigurasi perangkat dengan verifikasi pengguna, tetapi tidak memerlukannya, pilih **Pilihan**. Untuk hanya mendukung perangkat dengan verifikasi pengguna, pilih **Diperlukan**. Untuk informasi selengkapnya, lihat [Verifikasi pengguna](https://www.w3.org/TR/webauthn-2/#user-verification) di w3.org.
+ **Domain untuk ID pihak yang mengandalkan** adalah pengenal bahwa aplikasi Anda akan meneruskan permintaan pendaftaran passkey pengguna. Ini menetapkan target hubungan kepercayaan dengan penerbit kunci sandi pengguna. ID pihak yang Anda andalkan dapat berupa: domain kumpulan pengguna Anda jika   
**Domain Cognito**  
[Domain awalan](cognito-user-pools-assign-domain-prefix.md) Amazon Cognito dari kumpulan pengguna Anda.  
**Domain kustom**  
[Domain kustom](cognito-user-pools-add-custom-domain.md) dari kumpulan pengguna Anda.  
**Domain pihak ketiga**  
Domain untuk aplikasi yang tidak menggunakan halaman login terkelola kumpulan pengguna. Pengaturan ini biasanya dikaitkan dengan kumpulan pengguna yang tidak memiliki [domain](cognito-user-pools-assign-domain.md) dan melakukan autentikasi dengan AWS SDK dan API kumpulan pengguna di backend.

Arahkan ke menu **Klien aplikasi** dan pilih klien aplikasi atau buat yang baru. Pilih **Edit** dan di bawah **Alur otentikasi**, **pilih Pilih jenis otentikasi saat masuk**: ALLOW\$1USER\$1AUTH.

**API/SDK**  
Di API kumpulan pengguna, konfigurasikan `SignInPolicy` dengan opsi kunci sandi yang sesuai dalam [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)permintaan [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)atau. `WEB_AUTHN`Opsi untuk otentikasi passkey harus disertai dengan setidaknya satu opsi lain. Pendaftaran kunci sandi memerlukan sesi otentikasi yang ada.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

Konfigurasikan preferensi verifikasi pengguna dan ID RP Anda dalam `WebAuthnConfiguration` parameter permintaan. [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration) Target hasil otentikasi passkey yang dituju, dapat berupa awalan kumpulan pengguna atau domain kustom Anda, atau domain pilihan Anda sendiri. `RelyingPartyId`

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

Konfigurasikan klien aplikasi Anda `ExplicitAuthFlows` dengan opsi yang diperlukan dalam [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)permintaan [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)atau permintaan.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

Login terkelola menangani pendaftaran kunci sandi pengguna. Saat autentikasi kunci sandi aktif di kumpulan pengguna Anda, Amazon Cognito meminta pengguna untuk menyiapkan kunci sandi saat mendaftar untuk akun pengguna baru.

Amazon Cognito tidak meminta pengguna untuk menyiapkan kunci sandi ketika mereka telah mendaftar dan tidak menyiapkan kunci sandi, atau jika Anda membuat akun mereka sebagai administrator. Pengguna di negara bagian ini harus masuk dengan faktor lain seperti kata sandi atau OTP tanpa kata sandi sebelum mereka dapat mendaftarkan kunci sandi.

**Untuk mendaftarkan kunci sandi**

1. Arahkan pengguna ke [halaman login](authorization-endpoint.md) Anda.

   ```
   https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

1. Memproses hasil otentikasi dari pengguna. Dalam contoh ini, Amazon Cognito mengalihkannya `www.example.com` dengan kode otorisasi yang ditukar aplikasi Anda dengan token.

1. Arahkan pengguna ke halaman register-passkey Anda. Pengguna akan memiliki cookie browser yang mempertahankan sesi masuk mereka. URL passkey mengambil `client_id` dan `redirect_uri` parameter. Amazon Cognito hanya mengizinkan pengguna yang diautentikasi untuk mengakses halaman ini. Masuk ke pengguna Anda dengan kata sandi, OTP email, atau SMS OTP dan kemudian panggil URL yang cocok dengan pola berikut.

   Anda juga dapat menambahkan [Otorisasi titik akhir](authorization-endpoint.md) parameter lain ke permintaan ini, seperti `response_type` dan`scope`.

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

Anda mendaftarkan kredensi passkey dengan metadata dalam objek. [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions) Anda dapat membuat objek ini dengan kredensi pengguna yang masuk dan menyajikannya dalam permintaan API ke penerbit kunci sandi mereka. Penerbit akan mengembalikan objek [RegistrationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) yang mengonfirmasi pendaftaran kunci sandi.

Untuk memulai proses pendaftaran kunci sandi, masuk pengguna dengan opsi masuk yang ada. Otorisasi permintaan [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)API yang [diotorisasi token](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) dengan token akses pengguna saat ini. Berikut ini adalah isi dari `GetWebAuthnRegistrationOptions` permintaan contoh.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

Respons dari kumpulan pengguna Anda berisi `PublicKeyCreationOptions` objek. Sajikan objek ini dalam permintaan API ke penerbit pengguna. Ini memberikan informasi seperti kunci publik dan ID pihak yang mengandalkan. Penerbit akan merespons dengan `RegistrationResponseJSON` objek.

Sajikan respons pendaftaran dalam permintaan [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API, sekali lagi diotorisasi dengan token akses pengguna. Saat kumpulan pengguna Anda merespons dengan respons HTTP 200 dengan badan kosong, kunci sandi pengguna Anda terdaftar.

------
#### [ Sign in with a passkey ]

Masuk tanpa kata sandi tidak memiliki `AuthFlow` yang dapat Anda tentukan dan. [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) Sebagai gantinya, Anda harus mendeklarasikan opsi `AuthFlow` dari `USER_AUTH` dan meminta masuk atau memilih opsi tanpa kata sandi dari respons dari kumpulan pengguna Anda. Untuk menandatangani pengguna ke aplikasi, konfigurasikan isi `InitiateAuth` atau `AdminInitiateAuth` permintaan Anda sebagai berikut. Kumpulan parameter ini adalah minimum yang diperlukan untuk masuk. Parameter tambahan tersedia.

Dalam contoh ini, kita tahu bahwa pengguna ingin masuk dengan passkey, dan kita menambahkan `PREFERRED_CHALLENGE` parameter.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito merespons dengan sebuah tantangan. `WEB_AUTHN` Aplikasi Anda harus menanggapi tantangan ini. Memulai permintaan masuk dengan penyedia kunci sandi pengguna. Ini akan mengembalikan objek [AuthenticationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson).

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "CREDENTIAL" : "{AuthenticationResponseJSON}" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## MFA setelah masuk
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

Anda dapat mengatur pengguna yang menyelesaikan proses masuk dengan alur nama pengguna kata sandi untuk diminta verifikasi tambahan dengan kata sandi satu kali dari pesan email, pesan SMS, atau aplikasi pembuat kode. MFA berbeda dari login tanpa kata sandi dengan kata sandi satu kali. Namun, kunci sandi dengan verifikasi pengguna dapat memenuhi persyaratan MFA saat Anda `FactorConfiguration` mengonfigurasi `MULTI_FACTOR_WITH_USER_VERIFICATION` seperti di kumpulan pengguna Anda. `WebAuthnConfiguration` Untuk alur berbasis kata sandi, MFA di kumpulan pengguna adalah model respons tantangan di mana pengguna pertama kali menunjukkan bahwa mereka mengetahui kata sandi, kemudian menunjukkan bahwa mereka memiliki akses ke perangkat faktor kedua terdaftar mereka.

**Sumber daya implementasi**
+ [Menambahkan MFA ke kumpulan pengguna](user-pool-settings-mfa.md)

## Segarkan token
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Saat Anda ingin membuat pengguna tetap masuk tanpa memasukkan kembali kredensialnya, *token penyegaran* adalah alat yang dimiliki aplikasi Anda untuk mempertahankan sesi pengguna. Aplikasi dapat menyajikan token penyegaran ke kumpulan pengguna Anda dan menukarnya dengan ID baru dan token akses. Dengan penyegaran token, Anda dapat memastikan bahwa pengguna yang masuk masih aktif, mendapatkan informasi atribut yang diperbarui, dan memperbarui hak kontrol akses tanpa campur tangan pengguna.

**Sumber daya implementasi**
+ [Segarkan token](amazon-cognito-user-pools-using-the-refresh-token.md)

## Autentikasi kustom
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Anda mungkin ingin mengonfigurasi metode otentikasi untuk pengguna Anda yang tidak tercantum di sini. Anda dapat melakukannya dengan *otentikasi khusus* dengan pemicu Lambda. Dalam urutan fungsi Lambda, Amazon Cognito mengeluarkan tantangan, mengajukan pertanyaan yang harus dijawab pengguna, memeriksa jawaban untuk akurasi, kemudian menentukan apakah tantangan lain harus dikeluarkan. Pertanyaan dan jawaban dapat mencakup pertanyaan keamanan, permintaan ke layanan CAPTCHA, permintaan ke API layanan MFA eksternal, atau semua ini secara berurutan.

**Sumber daya implementasi**
+ [Tantangan otentikasi khusus pemicu Lambda](user-pool-lambda-challenge.md)

### Alur otentikasi kustom
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

Kumpulan pengguna Amazon Cognito juga memungkinkan untuk menggunakan alur otentikasi khusus, yang dapat membantu Anda membuat model otentikasi berbasis tantangan/respons menggunakan pemicu. AWS Lambda 

Alur otentikasi khusus memungkinkan siklus tantangan dan respons yang disesuaikan untuk memenuhi persyaratan yang berbeda. Alur dimulai dengan panggilan ke operasi `InitiateAuth` API yang menunjukkan jenis otentikasi yang akan digunakan dan menyediakan parameter otentikasi awal apa pun. Amazon Cognito menanggapi `InitiateAuth` panggilan dengan salah satu jenis informasi berikut: 
+ Tantangan bagi pengguna, bersama dengan sesi dan parameter.
+ Kesalahan jika pengguna gagal untuk mengautentikasi.
+ ID, akses, dan refresh token jika parameter yang disediakan dalam `InitiateAuth` panggilan cukup untuk menandatangani pengguna. (Biasanya pengguna atau aplikasi harus terlebih dahulu menjawab tantangan, tetapi kode kustom Anda harus menentukan ini.)

 Jika Amazon Cognito menanggapi `InitiateAuth` panggilan dengan tantangan, aplikasi mengumpulkan lebih banyak input dan memanggil operasi. `RespondToAuthChallenge` Panggilan ini memberikan tanggapan tantangan dan meneruskannya kembali sesi. Amazon Cognito menanggapi panggilan yang mirip dengan `RespondToAuthChallenge` panggilan tersebut. `InitiateAuth` Jika pengguna telah masuk, Amazon Cognito menyediakan token, atau jika pengguna tidak masuk, Amazon Cognito memberikan tantangan lain, atau kesalahan. Jika Amazon Cognito menampilkan tantangan lain, urutan akan berulang dan aplikasi akan memanggil `RespondToAuthChallenge` hingga pengguna berhasil masuk atau kesalahan dikembalikan. Untuk detail selengkapnya tentang operasi `InitiateAuth` dan `RespondToAuthChallenge` API, lihat [dokumentasi API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). 

### Alur otentikasi kustom dan tantangan
<a name="Custom-authentication-flow-and-challenges"></a>

Aplikasi dapat memulai alur autentikasi kustom dengan memanggil `InitiateAuth` dengan `CUSTOM_AUTH` sebagai `Authflow`. Dengan alur otentikasi khusus, tiga Lambda memicu tantangan kontrol dan verifikasi tanggapan.
+ Pemicu `DefineAuthChallenge` Lambda menggunakan array sesi tantangan dan respons sebelumnya sebagai masukan. Kemudian menghasilkan nama tantangan berikutnya dan Booleans yang menunjukkan apakah pengguna diautentikasi dan dapat diberikan token. Pemicu Lambda ini adalah mesin status yang mengontrol jalur pengguna melalui tantangan.
+ Pemicu `CreateAuthChallenge` Lambda mengambil nama tantangan sebagai input dan menghasilkan tantangan dan parameter untuk mengevaluasi respons. Ketika `DefineAuthChallenge` kembali `CUSTOM_CHALLENGE` sebagai tantangan berikutnya, alur otentikasi memanggil`CreateAuthChallenge`. Pemicu `CreateAuthChallenge` Lambda melewati jenis tantangan berikutnya dalam parameter metadata tantangan.
+ Fungsi Lambda `VerifyAuthChallengeResponse` mengevaluasi respons dan mengembalikan Boolean untuk menunjukkan apakah respons itu valid.

Alur otentikasi khusus juga dapat menggunakan kombinasi tantangan bawaan, seperti verifikasi kata sandi SRP dan MFA melalui SMS. Hal ini dapat menggunakan tantangan kustom seperti CAPTCHA atau pertanyaan rahasia.

### Gunakan verifikasi kata sandi SRP dalam alur otentikasi khusus
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Jika Anda ingin menyertakan SRP dalam alur otentikasi khusus, Anda harus mulai dengan SRP.
+ Untuk memulai verifikasi kata sandi SRP dalam aliran kustom, aplikasi akan memanggil `InitiateAuth` dengan `CUSTOM_AUTH` sebagai `Authflow`. Di `AuthParameters` peta, permintaan dari aplikasi Anda menyertakan `SRP_A:` (nilai SRP A) dan`CHALLENGE_NAME: SRP_A`.
+ `CUSTOM_AUTH`Aliran memanggil pemicu `DefineAuthChallenge` Lambda dengan sesi `challengeName: SRP_A` awal dan. `challengeResult: true` Fungsi Lambda Anda merespons dengan`challengeName: PASSWORD_VERIFIER`,, `issueTokens: false` dan. `failAuthentication: false`
+  Aplikasi selanjutnya harus memanggil `RespondToAuthChallenge` dengan `challengeName: PASSWORD_VERIFIER` dan parameter lain yang diperlukan untuk SRP di `challengeResponses` peta. 
+ Jika Amazon Cognito memverifikasi kata sandi, `RespondToAuthChallenge` panggil pemicu `DefineAuthChallenge` Lambda dengan sesi kedua dan. `challengeName: PASSWORD_VERIFIER` `challengeResult: true` Pada saat itu, pemicu `DefineAuthChallenge` Lambda merespons dengan `challengeName: CUSTOM_CHALLENGE` untuk memulai tantangan khusus.
+ Jika MFA diaktifkan untuk pengguna, setelah Amazon Cognito memverifikasi kata sandi, pengguna Anda kemudian ditantang untuk mengatur atau masuk dengan MFA.

**catatan**  
Halaman web masuk yang dihosting Amazon Cognito tidak dapat diaktifkan. [Tantangan otentikasi khusus pemicu Lambda](user-pool-lambda-challenge.md)

Untuk informasi lebih lanjut tentang pemicu Lambda, termasuk kode sampel, lihat [Menyesuaikan alur kerja kumpulan pengguna dengan pemicu Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Alur autentikasi migrasi pengguna
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Pemicu Lambda migrasi pengguna membantu memigrasikan pengguna dari sistem manajemen pengguna lama ke kumpulan pengguna Anda. Jika Anda memilih alur `USER_PASSWORD_AUTH` otentikasi, pengguna tidak perlu mengatur ulang kata sandi mereka selama migrasi pengguna. Alur ini mengirimkan kata sandi pengguna Anda ke layanan melalui koneksi SSL terenkripsi selama autentikasi.

Jika Anda telah memigrasikan semua pengguna, alihkan aliran ke aliran SRP yang lebih aman. Aliran SRP tidak mengirim kata sandi apa pun melalui jaringan.

Untuk mempelajari lebih lanjut tentang pemicu Lambda, lihat. [Menyesuaikan alur kerja kumpulan pengguna dengan pemicu Lambda](cognito-user-pools-working-with-lambda-triggers.md)

Untuk informasi selengkapnya tentang memigrasi pengguna dengan pemicu Lambda, lihat. [Mengimpor pengguna dengan pemicu Lambda migrasi pengguna](cognito-user-pools-import-using-lambda.md)

# Model otorisasi untuk otentikasi API dan SDK
<a name="authentication-flows-public-server-side"></a>

Saat memulai pengembangan aplikasi dengan autentikasi kumpulan pengguna, Anda harus memutuskan model otorisasi API yang sesuai dengan jenis aplikasi Anda. Model otorisasi adalah sistem untuk memberikan otorisasi untuk membuat permintaan dengan komponen otentikasi di kumpulan pengguna Amazon Cognito API dan integrasi SDK. Amazon Cognito memiliki tiga model otorisasi: IAM-authorized, public, dan token-authorized.

Dengan permintaan yang diotorisasi oleh IAM, otorisasi berasal dari tanda tangan oleh satu set AWS kredensional IAM di header permintaan. `Authorization` Untuk aplikasi sisi server, praktik ini melindungi operasi otentikasi dengan otorisasi IAM. Dengan permintaan otentikasi publik (tidak diautentikasi), tidak diperlukan otorisasi. Ini cocok untuk aplikasi sisi klien yang didistribusikan kepada pengguna. Dengan operasi resmi token, biasanya diimplementasikan dalam kombinasi dengan operasi publik, otorisasi berasal dari token sesi atau token akses yang disertakan dalam `Authorization` header permintaan. Autentikasi Amazon Cognito biasanya mengharuskan Anda menerapkan dua atau lebih operasi API secara berurutan, dan operasi API yang Anda gunakan bergantung pada karakteristik aplikasi Anda. Klien publik, di mana aplikasi didistribusikan kepada pengguna, menggunakan operasi publik, di mana permintaan untuk masuk tidak memerlukan otorisasi. Operasi yang diotorisasi token melanjutkan sesi pengguna dalam aplikasi publik. Klien sisi server, di mana logika aplikasi di-host pada sistem jarak jauh, melindungi operasi otentikasi dengan otorisasi IAM untuk permintaan masuk. Pasangan operasi API yang mengikuti, dan metode SDK yang sesuai, dipetakan ke model otorisasi yang tersedia.

Setiap operasi otentikasi publik memiliki beberapa bentuk setara sisi server, misalnya dan. [UpdateUserAttributes[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) Sementara operasi sisi klien dimulai oleh pengguna dan memerlukan konfirmasi, operasi sisi server menganggap perubahan dilakukan oleh administrator kumpulan pengguna dan perubahan segera berlaku. Dalam contoh ini, Amazon Cognito mengirim pesan dengan kode konfirmasi kepada pengguna, dan token akses pengguna mengotorisasi [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)permintaan yang mengirimkan kode. Aplikasi sisi server dapat segera mengatur nilai atribut apa pun, meskipun [pertimbangan khusus berlaku](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes) untuk mengubah nilai alamat email dan nomor telepon saat digunakan untuk masuk.

Untuk membandingkan autentikasi API dan melihat daftar lengkap operasi API dan model otorisasi mereka, lihat. [Memahami API, OIDC, dan otentikasi halaman login terkelola](#user-pools-API-operations)

------
#### [ Client-side (public) authentication ]

Berikut ini adalah urutan permintaan yang khas dalam aplikasi sisi klien

1. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)Operasi publik mengirimkan kredensil utama seperti nama pengguna dan kata sandi.

1. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)Operasi yang diotorisasi token mengirimkan token *sesi* dari `InitiateAuth` respons dan jawaban atas tantangan, misalnya MFA. Otorisasi token sesi menunjukkan permintaan yang merupakan bagian dari siklus not-yet-complete otentikasi.

1. [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)Operasi yang diotorisasi token mengirimkan token *akses* dan melakukan operasi penulisan menambahkan perangkat yang diingat ke profil pengguna. Otorisasi token akses menunjukkan permintaan yang untuk operasi layanan mandiri pengguna setelah mereka menyelesaikan otentikasi.

Untuk informasi selengkapnya, lihat [Opsi otentikasi sisi klien](#amazon-cognito-user-pools-client-side-authentication-flow) dan [Memahami API, OIDC, dan otentikasi halaman login terkelola](#user-pools-API-operations).

------
#### [ Server-side authentication ]

Berikut ini adalah urutan khas permintaan dari operasi sisi server. Setiap permintaan memiliki header otorisasi [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) yang ditandatangani dengan kredenal mesin IAM yang dikeluarkan ke server aplikasi.

1. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)Operasi mengirimkan kredensi utama seperti nama pengguna dan kata sandi.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)operasi mengirimkan jawaban atas tantangan, misalnya MFA.

1. [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)Operasi menetapkan kunci perangkat dari `AdminInitiateAuth` [respons](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax) seperti yang diingat.

Untuk informasi selengkapnya, lihat [Opsi otentikasi sisi server](#amazon-cognito-user-pools-server-side-authentication-flow) dan [Memahami API, OIDC, dan otentikasi halaman login terkelola](#user-pools-API-operations).

------

Pengguna mengautentikasi dengan menjawab tantangan berturut-turut hingga otentikasi gagal atau Amazon Cognito mengeluarkan token kepada pengguna. Anda dapat mengulangi langkah-langkah ini dengan Amazon Cognito, dalam proses yang mencakup berbagai tantangan, untuk mendukung alur otentikasi khusus apa pun.

**Topics**
+ [Opsi otentikasi sisi server](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [Opsi otentikasi sisi klien](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [Memahami API, OIDC, dan otentikasi halaman login terkelola](#user-pools-API-operations)
+ [Daftar operasi API yang dikelompokkan berdasarkan model otorisasi](#user-pool-apis-auth-unauth)

## Opsi otentikasi sisi server
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

Aplikasi web dan aplikasi *sisi server* lainnya menerapkan otentikasi pada server jarak jauh yang dimuat klien dalam aplikasi tampilan jarak jauh seperti browser atau sesi SSH. Aplikasi sisi server biasanya memiliki karakteristik sebagai berikut.
+ Mereka dibangun dalam aplikasi yang diinstal pada server dalam bahasa seperti Java, Ruby, atau Node.js.
+ Mereka terhubung ke [klien aplikasi](user-pool-settings-client-apps.md) kumpulan pengguna yang mungkin memiliki rahasia klien, yang disebut *klien rahasia*.
+ Mereka memiliki akses ke AWS kredensil.
+ Mereka memanggil [login terkelola](cognito-user-pools-managed-login.md) untuk otentikasi, atau menggunakan operasi yang diotorisasi IAM di API kumpulan pengguna dengan SDK. AWS 
+ Mereka melayani pelanggan internal dan dapat melayani pelanggan publik.

Operasi sisi server dengan API kumpulan pengguna dapat menggunakan kata sandi, kata sandi satu kali, atau kunci sandi sebagai faktor masuk utama. Untuk aplikasi sisi server, autentikasi kumpulan pengguna mirip dengan otentikasi untuk aplikasi sisi klien, kecuali yang berikut ini:
+ Aplikasi sisi server membuat permintaan API. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Operasi ini memerlukan AWS kredensil dengan izin yang menyertakan dan. `cognito-idp:AdminInitiateAuth` `cognito-idp:AdminRespondToAuthChallenge` Operasi mengembalikan tantangan atau hasil otentikasi yang diperlukan.
+ Ketika aplikasi menerima tantangan, itu membuat permintaan [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)API. Operasi `AdminRespondToAuthChallenge` API juga membutuhkan AWS kredensional.

*Untuk informasi selengkapnya tentang penandatanganan permintaan Amazon Cognito API dengan AWS kredensyal, lihat [proses penandatanganan Versi Tanda Tangan 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) di Referensi Umum.AWS *

Dalam `AdminInitiateAuth` tanggapan`ChallengeParameters`, `USER_ID_FOR_SRP` atribut, jika ada, berisi nama pengguna aktual pengguna, bukan alias (seperti alamat email atau nomor telepon). Dalam panggilan Anda ke`AdminRespondToAuthChallenge`, di`ChallengeResponses`, Anda harus meneruskan nama pengguna ini di `USERNAME` parameter. 

**catatan**  
Karena implementasi admin backend menggunakan alur otentikasi admin, alur tidak mendukung perangkat yang diingat. Saat Anda mengaktifkan pelacakan perangkat, otentikasi admin berhasil, tetapi panggilan apa pun untuk menyegarkan token akses gagal.

## Opsi otentikasi sisi klien
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

Aplikasi seluler dan jenis aplikasi *sisi klien* lainnya diinstal pada perangkat pengguna dan melakukan logika otentikasi dan antarmuka pengguna secara lokal. Mereka biasanya memiliki karakteristik sebagai berikut.
+ Mereka dibangun dalam bahasa seperti React native, Flutter, dan Swift dan disebarkan ke perangkat pengguna.
+ Mereka terhubung ke [klien aplikasi](user-pool-settings-client-apps.md) kumpulan pengguna yang tidak memiliki rahasia klien, yang disebut *klien publik*.
+ Mereka tidak memiliki akses ke AWS kredensional yang akan mengotorisasi permintaan API yang diotorisasi oleh IAM.
+ Mereka memanggil [login terkelola](cognito-user-pools-managed-login.md) untuk otentikasi, atau menggunakan operasi publik dan token yang diotorisasi di API kumpulan pengguna dengan SDK. AWS 
+ Mereka melayani pelanggan publik dan mengizinkan siapa saja untuk mendaftar dan masuk.

Operasi sisi klien dengan API kumpulan pengguna dapat menggunakan kata sandi, kata sandi satu kali, atau kunci sandi sebagai faktor masuk utama. Proses berikut berfungsi untuk aplikasi sisi klien pengguna yang Anda buat dengan [AWS Amplify](https://docs.amplify.aws/javascript/start/getting-started/)atau aplikasi. [AWS SDKs](https://aws.amazon.com/developer/tools/)

1. Pengguna memasukkan nama pengguna dan kata sandi mereka ke dalam aplikasi.

1. Aplikasi memanggil `InitiateAuth` operasi dengan nama pengguna dan detail Secure Remote Password (SRP) pengguna.

   Operasi API ini mengembalikan parameter otentikasi.
**catatan**  
Aplikasi ini menghasilkan detail SRP dengan fitur Amazon Cognito SRP yang ada di dalamnya. AWS SDKs

1. Aplikasi ini memanggil operasi `RespondToAuthChallenge`. Jika panggilan berhasil, Amazon Cognito mengembalikan token pengguna, dan alur otentikasi selesai.

   Jika Amazon Cognito memerlukan tantangan lain, panggilan untuk tidak `RespondToAuthChallenge` mengembalikan token. Sebaliknya, panggilan mengembalikan sesi.

1. Jika `RespondToAuthChallenge` mengembalikan sesi, aplikasi memanggil `RespondToAuthChallenge` lagi, kali ini dengan sesi dan respons tantangan (misalnya, kode MFA).

## Memahami API, OIDC, dan otentikasi halaman login terkelola
<a name="user-pools-API-operations"></a>

Kumpulan pengguna Amazon Cognito adalah kombinasi dari beberapa teknologi otentikasi. Mereka mengandalkan pihak ke penyedia identitas eksternal (IdPs). Mereka adalah IdPs untuk aplikasi yang menerapkan otentikasi dengan OpenID Connect ( SDKsOIDC). Mereka menyediakan otentikasi sebagai penerbit token web JSON (JWTs) mirip dengan otentikasi OIDC, tetapi dalam metode API yang merupakan bagian dari. AWS SDKs Mereka juga bisa menjadi titik masuk yang aman ke aplikasi Anda.

Saat Anda ingin mendaftar, masuk, dan mengelola pengguna di kumpulan pengguna, Anda memiliki dua opsi. 

1. *Halaman login terkelola* Anda dan *UI yang dihosting* klasik mencakup [titik akhir interaktif pengguna login terkelola dan titik akhir](managed-login-endpoints.md) [federasi yang](federation-endpoints.md) menangani peran IDP dan pihak terkait. Mereka membuat paket halaman web publik yang diaktifkan Amazon Cognito saat [Anda memilih domain untuk kumpulan pengguna Anda](cognito-user-pools-assign-domain.md). Untuk memulai dengan cepat dengan fitur otentikasi dan otorisasi kumpulan pengguna Amazon Cognito, termasuk halaman untuk pendaftaran, masuk, manajemen kata sandi, dan otentikasi multi-faktor (MFA), gunakan antarmuka pengguna bawaan dari login terkelola.

   Titik akhir kumpulan pengguna lainnya memfasilitasi otentikasi dengan penyedia identitas pihak ketiga ()IdPs. Layanan yang mereka lakukan meliputi yang berikut ini.

   1. Titik akhir panggilan balik penyedia layanan untuk klaim yang diautentikasi dari Anda, suka, dan. IdPs `saml2/idpresponse` `oauth2/idpresponse` Jika Amazon Cognito adalah penyedia layanan perantara (SP) antara aplikasi dan idP Anda, titik akhir callback mewakili layanan.

   1. Endpoint yang memberikan informasi tentang lingkungan Anda, seperti `oauth2/userInfo` dan`/.well-known/jwks.json`. Aplikasi Anda menggunakan endpoint ini saat memverifikasi token atau mengambil data profil pengguna dengan library developer OIDC atau 2.0. OAuth 

1. [API kumpulan pengguna Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) adalah seperangkat alat untuk web atau aplikasi seluler Anda untuk mengautentikasi pengguna setelah mengumpulkan informasi masuk di front end kustom Anda sendiri. Autentikasi API kumpulan pengguna menghasilkan token web JSON berikut.

   1. Token identitas dengan klaim atribut yang dapat diverifikasi dari pengguna Anda.

   1. [Token akses yang memberi wewenang kepada pengguna Anda untuk membuat permintaan API yang diotorisasi token ke titik akhir layanan.AWS](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)
**catatan**  
Secara default, token akses dari kumpulan pengguna otentikasi API hanya berisi `aws.cognito.signin.user.admin` ruang lingkup. Untuk menghasilkan token akses dengan cakupan tambahan, misalnya untuk mengotorisasi permintaan ke API pihak ketiga, minta cakupan selama autentikasi melalui titik akhir kumpulan pengguna Anda atau tambahkan cakupan khusus di file. [Pemicu Lambda generasi pra token](user-pool-lambda-pre-token-generation.md) Kustomisasi token akses menambah biaya ke AWS tagihan Anda.

   1. Token penyegaran yang mengotorisasi permintaan untuk ID baru dan token akses, dan menyegarkan identitas pengguna dan properti kontrol akses.

Anda dapat menautkan pengguna federasi, yang biasanya masuk melalui titik akhir kumpulan pengguna, dengan pengguna yang profilnya *lokal* ke kumpulan pengguna Anda. Pengguna lokal ada secara eksklusif di direktori kumpulan pengguna Anda tanpa federasi melalui iDP eksternal. Jika Anda menautkan identitas federasi mereka ke pengguna lokal dalam permintaan [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)API, mereka dapat masuk dengan API kumpulan pengguna. Untuk informasi selengkapnya, lihat [Menautkan pengguna gabungan ke profil pengguna yang ada](cognito-user-pools-identity-federation-consolidate-users.md).

API kumpulan pengguna Amazon Cognito memiliki tujuan ganda.

1. Ini membuat dan mengonfigurasi sumber daya kumpulan pengguna Amazon Cognito Anda. Misalnya, Anda dapat membuat kumpulan pengguna, menambahkan AWS Lambda pemicu, dan mengonfigurasi domain kumpulan pengguna yang menghosting halaman login terkelola Anda.

1. Ini melakukan pendaftaran, masuk, dan operasi pengguna lainnya untuk pengguna lokal dan tertaut.

**Contoh skenario dengan API kumpulan pengguna Amazon Cognito**

1. Pengguna Anda memilih tombol “Buat akun” yang Anda buat di aplikasi Anda. Mereka memasukkan alamat email dan kata sandi.

1. Aplikasi Anda mengirimkan permintaan [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API dan membuat pengguna baru di kumpulan pengguna Anda.

1. Aplikasi Anda meminta pengguna Anda untuk kode konfirmasi email. Pengguna Anda memasukkan kode yang mereka terima dalam pesan email.

1. Aplikasi Anda mengirimkan permintaan [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API dengan kode konfirmasi pengguna.

1. Aplikasi Anda meminta pengguna Anda untuk nama pengguna dan kata sandi mereka, dan mereka memasukkan informasi mereka.

1. Aplikasi Anda mengirimkan permintaan [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API dan menyimpan token ID, token akses, dan token penyegaran. Aplikasi Anda memanggil library OIDC untuk mengelola token pengguna Anda dan mempertahankan sesi persisten untuk pengguna tersebut.

Di API kumpulan pengguna Amazon Cognito, Anda tidak dapat memasukkan pengguna yang melakukan federasi melalui iDP. Anda harus mengautentikasi pengguna ini melalui titik akhir kumpulan pengguna Anda. Untuk informasi selengkapnya tentang titik akhir kumpulan pengguna yang menyertakan login terkelola, lihat[Titik akhir kumpulan pengguna dan referensi login terkelola](cognito-userpools-server-contract-reference.md).

Pengguna federasi Anda dapat memulai login terkelola dan memilih IDP mereka, atau Anda dapat melewati login terkelola dan mengirim pengguna Anda langsung ke IDP Anda untuk masuk. Ketika permintaan API Anda ke [Otorisasi titik akhir](authorization-endpoint.md) menyertakan parameter iDP, Amazon Cognito secara diam-diam mengalihkan pengguna Anda ke halaman login iDP.

**Contoh skenario dengan halaman login terkelola**

1. Pengguna Anda memilih tombol “Buat akun” yang Anda buat di aplikasi Anda.

1. Login terkelola memberi pengguna Anda daftar penyedia identitas sosial tempat Anda telah mendaftarkan kredensi pengembang. Pengguna Anda memilih Apple.

1. Aplikasi Anda memulai permintaan ke nama `SignInWithApple` penyedia [Otorisasi titik akhir](authorization-endpoint.md) with.

1. Browser pengguna Anda membuka halaman otentikasi Apple. Pengguna Anda masuk dan memilih untuk mengizinkan Amazon Cognito untuk membaca informasi profil mereka.

1. Amazon Cognito mengonfirmasi token akses Apple dan menanyakan profil Apple pengguna Anda.

1. Pengguna Anda menyajikan kode otorisasi Amazon Cognito ke aplikasi Anda.

1. Pustaka OIDC dalam aplikasi Anda menukar kode otorisasi dengan [Titik akhir token](token-endpoint.md) dan menyimpan token ID, token akses, dan token penyegaran yang dikeluarkan oleh kumpulan pengguna. Aplikasi Anda menggunakan library OIDC untuk mengelola token pengguna Anda dan mempertahankan sesi persisten untuk pengguna tersebut.

API kumpulan pengguna dan halaman login terkelola mendukung berbagai skenario, yang dijelaskan di seluruh panduan ini. Bagian berikut memeriksa bagaimana API kumpulan pengguna membagi lebih lanjut ke dalam kelas yang mendukung persyaratan pendaftaran, masuk, dan pengelolaan sumber daya Anda.

## Daftar operasi API yang dikelompokkan berdasarkan model otorisasi
<a name="user-pool-apis-auth-unauth"></a>

API kumpulan pengguna Amazon Cognito, baik antarmuka manajemen sumber daya dan antarmuka otentikasi dan otorisasi yang dihadapi pengguna, menggabungkan model otorisasi yang mengikuti operasinya. Bergantung pada operasi API, Anda mungkin harus memberikan otorisasi dengan kredensil IAM, token akses, token sesi, rahasia klien, atau kombinasi keduanya. Untuk banyak operasi otentikasi dan otorisasi pengguna, Anda memiliki pilihan versi permintaan yang diautentikasi dan tidak diautentikasi. Operasi yang tidak diautentikasi adalah praktik keamanan terbaik untuk aplikasi yang Anda distribusikan kepada pengguna, seperti aplikasi seluler; Anda tidak perlu menyertakan rahasia apa pun dalam kode Anda.

Anda hanya dapat menetapkan izin dalam kebijakan IAM untuk dan. [Operasi manajemen resmi IAM](#user-pool-apis-auth-unauth-sigv4-management) [Operasi pengguna resmi IAM](#user-pool-apis-auth-unauth-sigv4-user)

### Operasi manajemen resmi IAM
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

Operasi manajemen resmi IAM memodifikasi dan melihat kumpulan pengguna dan konfigurasi klien aplikasi Anda, seperti yang akan Anda lakukan di. Konsol Manajemen AWS

Misalnya, untuk memodifikasi kumpulan pengguna dalam permintaan [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API, Anda harus menunjukkan AWS kredensi dan izin IAM untuk memperbarui sumber daya.

Untuk mengotorisasi permintaan ini di AWS Command Line Interface (AWS CLI) atau AWS SDK, konfigurasikan lingkungan Anda dengan variabel lingkungan atau konfigurasi klien yang menambahkan kredensyal IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat [Mengakses AWS menggunakan AWS kredensional Anda](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) di. *Referensi Umum AWS* Anda juga dapat mengirim permintaan langsung ke [titik akhir layanan untuk API](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) kumpulan pengguna Amazon Cognito. Anda harus mengotorisasi, atau *menandatangani*, permintaan ini dengan AWS kredensi yang Anda sematkan di header permintaan Anda. Untuk informasi selengkapnya, lihat [Menandatangani permintaan AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).


| Operasi manajemen resmi IAM | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [Dapatkan CSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [Dapatkan UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [Set UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### Operasi pengguna resmi IAM
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

Operasi pengguna resmi IAM mendaftar, masuk, mengelola kredensional untuk, memodifikasi, dan melihat pengguna Anda. 

Misalnya, Anda dapat memiliki tingkat aplikasi sisi server yang mendukung ujung depan web. Aplikasi sisi server Anda adalah klien OAuth rahasia yang Anda percayai dengan akses istimewa ke sumber daya Amazon Cognito Anda. Untuk mendaftarkan pengguna di aplikasi, server Anda dapat menyertakan AWS kredensi dalam permintaan [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API. Untuk informasi selengkapnya tentang jenis OAuth klien, lihat [Jenis Klien](https://www.rfc-editor.org/rfc/rfc6749#section-2.1) di *Kerangka Otorisasi OAuth 2.0*.

Untuk mengotorisasi permintaan ini di AWS CLI atau AWS SDK, konfigurasikan lingkungan aplikasi sisi server Anda dengan variabel lingkungan atau konfigurasi klien yang menambahkan kredensyal IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat [Mengakses AWS menggunakan AWS kredensional Anda](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) di. *Referensi Umum AWS* Anda juga dapat mengirim permintaan langsung ke [titik akhir layanan untuk API](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) kumpulan pengguna Amazon Cognito. Anda harus mengotorisasi, atau *menandatangani*, permintaan ini dengan AWS kredensi yang Anda sematkan di header permintaan Anda. Untuk informasi selengkapnya, lihat [Menandatangani permintaan AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Jika klien aplikasi Anda memiliki rahasia klien, Anda harus memberikan kredensi IAM dan, tergantung pada operasinya, `SecretHash` parameter atau nilai dalam`SECRET_HASH`. `AuthParameters` Untuk informasi selengkapnya, lihat [Menghitung nilai hash rahasia](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operasi pengguna resmi IAM | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### Operasi pengguna yang tidak diautentikasi
<a name="user-pool-apis-auth-unauth-unauth"></a>

Operasi pengguna yang tidak diautentikasi mendaftar, masuk, dan memulai pengaturan ulang kata sandi untuk pengguna Anda. Gunakan operasi API yang tidak diautentikasi, atau *publik*, saat Anda ingin siapa pun di internet mendaftar dan masuk ke aplikasi Anda.

Misalnya, untuk mendaftarkan pengguna di aplikasi, Anda dapat mendistribusikan klien OAuth publik yang tidak memberikan akses istimewa apa pun ke rahasia. Anda dapat mendaftarkan pengguna ini dengan operasi API yang tidak diautentikasi. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Untuk mengirim permintaan ini di klien publik yang Anda kembangkan dengan AWS SDK, Anda tidak perlu mengonfigurasi kredensi apa pun. Anda juga dapat mengirim permintaan langsung ke [titik akhir layanan](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) untuk API kumpulan pengguna Amazon Cognito tanpa otorisasi tambahan.

Jika klien aplikasi Anda memiliki rahasia klien, Anda harus memberikan, tergantung pada operasinya, `SecretHash` parameter atau `SECRET_HASH` nilai dalam`AuthParameters`. Untuk informasi selengkapnya, lihat [Menghitung nilai hash rahasia](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operasi pengguna yang tidak diautentikasi | 
| --- |
| [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) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.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) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### Operasi pengguna yang diotorisasi token
<a name="user-pool-apis-auth-unauth-token-auth"></a>

Operasi pengguna yang diotorisasi token keluar, mengelola kredensi untuk, memodifikasi, dan melihat pengguna Anda setelah mereka masuk atau memulai proses masuk. Gunakan operasi API yang diotorisasi token jika Anda tidak ingin mendistribusikan rahasia di aplikasi, dan Anda ingin mengotorisasi permintaan dengan kredensional pengguna Anda sendiri. Jika pengguna Anda telah menyelesaikan proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token akses. Jika pengguna Anda berada di tengah proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token sesi yang dikembalikan Amazon Cognito sebagai respons terhadap permintaan sebelumnya.

Misalnya, di klien publik, Anda mungkin ingin memperbarui profil pengguna dengan cara yang membatasi akses tulis ke profil pengguna sendiri saja. Untuk melakukan pembaruan ini, klien Anda dapat menyertakan token akses pengguna dalam permintaan [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API.

Untuk mengirim permintaan ini di klien publik yang Anda kembangkan dengan AWS SDK, Anda tidak perlu mengonfigurasi kredensi apa pun. Sertakan `Session` parameter `AccessToken` atau dalam permintaan Anda. Anda juga dapat mengirim permintaan langsung ke [titik akhir layanan untuk API](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) kumpulan pengguna Amazon Cognito. Untuk mengotorisasi permintaan ke titik akhir layanan, sertakan token akses atau sesi di badan POST permintaan Anda.

Untuk menandatangani permintaan API untuk operasi yang diotorisasi token, sertakan token akses sebagai `Authorization` header dalam permintaan Anda, dalam format. `Bearer <Base64-encoded access token>`


| Operasi pengguna yang diotorisasi token | AccessToken | Sesi | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` dan `GetTokensFromRefreshToken` ambil token penyegaran sebagai parameter otorisasi. Token penyegaran berfungsi sebagai token otorisasi, dan sebagai sumber daya target.