

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

# Kelola metode otentikasi di AWS SDK
<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 [Aliran otentikasi](amazon-cognito-user-pools-authentication-flow-methods.md). Bila aplikasi Anda memiliki komponen UI bawaan dan mengimpor modul AWS SDK, Anda harus membangun logika aplikasi untuk otentikasi. 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, menyatakan jenis otentikasi di muka. Pilihan lainnya adalah otentik * asi berbasis pilihan*, di mana aplikasi mengumpulkan nama pengguna dan meminta jenis otentikasi 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 khusus dalam otentikasi berbasis klien dan tanpa kata sandi berbasis pilihan.

Dalam aplikasi yang dibuat khusus yang melakukan otentikasi 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. S `InitiateAuth` esi yang dimulai dengan otentik `AuthFlow` asi berbasis pilihan `USER_AUTH` dimulai. Amazon Cognito merespons API Anda dengan tantangan metode otentikasi pilihan atau daftar pilihan. Sesi yang dimulai dengan `AuthFlow` of langsung `CUSTOM_AUTH` masuk ke otentikasi khusus dengan pemicu Lambda.

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

**Topics**
+ [Choice-based otentikasi](#authentication-flows-selection-choice)
+ [Client-based otentikasi](#authentication-flows-selection-client)

## Choice-based otentikasi
<a name="authentication-flows-selection-choice"></a>

Aplikasi Anda dapat meminta metode otentikasi berikut dalam otentikasi berbasis pilihan. Deklarasikan 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 di `ChallengeName` parameter [ RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName) atau [ AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-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`

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

   [Sign-in dengan kata sandi yang persisten dan payload 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-nya, lihat `ChallengeName` di [ RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

Choice-based login 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 kredentif untuk metode masuk 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. Meminta opsi dengan `AuthParameters` dari `USERNAME` saja. Amazon Cognito mengembalikan `SELECT_CHALLENGE` tantangan. 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 a `PREFERRED_CHALLENGE` of`PASSWORD_SRP`, Anda juga harus menyertakan`SRP_A`. Jika pengguna, kumpulan pengguna, dan klien aplikasi Anda semuanya dikonfigurasi untuk tantangan yang disukai, Amazon Cognito merespons dengan langkah berikutnya dalam tantangan itu, misalnya `PASSWORD_VERIFIER` dalam al `PASSWORD_SRP` ur atau [ CodeDeliveryDetails ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html) dalam alur `EMAIL_OTP` dan`SMS_OTP`. Jika tantangan pilihan 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. Per [ GetUserAuthFactors ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) mintaan 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 pilihan.

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

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

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

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

1. Dalam konfigurasi kumpulan pengguna Anda, pilih ** Sign-in ** menu. Cari ** Opsi untuk masuk berbasis pilihan ** dan pilih Edit. ** **

1. **Opsi ** Kata Sandi selalu tersedia. Ini termasuk `PASSWORD_SRP` aliran `PASSWORD` dan. Pilih Pilihan ** tambahan ** yang ingin Anda tambahkan ke opsi pengguna Anda. Anda dapat menambahkan K ** unci Sandi ** untuk`WEB_AUTHN`, Kata sandi satu kali pesan ** email ** untuk`EMAIL_OTP`, dan kata sandi ** satu kali pesan ** SMS 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"
        ]
    }
},
```

------

## Client-based otentikasi
<a name="authentication-flows-selection-client"></a>

Client-based otentikasi mendukung alur otentikasi berikut. Deklarasikan opsi ini dalam `AuthFlow` parameter [ 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).

1. `USER_PASSWORD_AUTH` dan `ADMIN_USER_PASSWORD_AUTH`

   [Sign-in 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 oten `PASSWORD` tikasi berbasis pilihan.

1. `USER_SRP_AUTH`

   [Sign-in dengan kata sandi yang persisten dan payload 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 oten `PASSWORD_SRP` tikasi 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 bagaimana pengguna ingin mengotentikasi sebelum mereka memulai alur otentikasi. Logika menentukan faktor masuk yang ingin diberikan pengguna harus ditentukan dengan pengaturan default atau prompt khusus, kemudian dinyatakan dalam permintaan pertama ke kumpulan pengguna Anda. Per `InitiateAuth` mintaan menyatakan login `AuthFlow` yang secara langsung sesuai dengan salah satu opsi yang tercantum, misalnya`USER_SRP_AUTH`. Dengan deklarasi ini, permintaan juga menyertakan 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 MFA TOTP.

Untuk [ mengonfigurasi klien aplikasi Anda ](authentication.md#authentication-implement) untuk otentikasi berbasis klien, tambahkan alur otentikasi apa pun `ALLOW_USER_AUTH` selain alur otentikasi yang 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.