

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

# Mengelola kedaluwarsa token kumpulan pengguna dan caching
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens"></a>

Aplikasi Anda harus berhasil menyelesaikan salah satu permintaan berikut setiap kali Anda ingin mendapatkan JSON Web Token (JWT) baru.
+ Minta kredensi klien atau [hibah](https://www.rfc-editor.org/rfc/rfc6749#section-1.3) kode otorisasi dari. [Titik akhir token](token-endpoint.md)
+ Minta hibah implisit dari halaman login terkelola Anda.
+ Mengautentikasi pengguna lokal dalam permintaan Amazon Cognito API seperti. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)

Anda dapat mengonfigurasi kumpulan pengguna untuk mengatur token agar kedaluwarsa dalam hitungan menit, jam, atau hari. Untuk memastikan kinerja dan ketersediaan aplikasi Anda, gunakan token Amazon Cognito selama sekitar 75% masa pakai token, dan baru kemudian ambil token baru. Solusi cache yang Anda buat untuk aplikasi membuat token tetap tersedia, dan mencegah penolakan permintaan oleh Amazon Cognito jika tingkat permintaan Anda terlalu tinggi. Aplikasi sisi klien harus menyimpan token dalam cache memori. Aplikasi sisi server dapat menambahkan mekanisme cache terenkripsi untuk menyimpan token.

Saat kumpulan pengguna menghasilkan volume pengguna atau machine-to-machine aktivitas yang tinggi, Anda mungkin menemukan batasan yang ditetapkan Amazon Cognito pada jumlah permintaan token yang dapat Anda buat. Untuk mengurangi jumlah permintaan yang Anda buat ke titik akhir Amazon Cognito, Anda dapat menyimpan dan menggunakan kembali data autentikasi dengan aman, atau menerapkan backoff dan percobaan ulang eksponensial.

Data otentikasi berasal dari dua kelas endpoint. Titik akhir Amazon Cognito [OAuth2.0 menyertakan titik akhir](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) token, yang melayani kredensi klien dan permintaan kode otorisasi login terkelola. [Titik akhir layanan](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html#cognito_identity_your_user_pools_region) menjawab permintaan API kumpulan pengguna seperti `InitiateAuth` dan`RespondToAuthChallenge`. Setiap jenis permintaan memiliki batasnya sendiri. Untuk informasi selengkapnya tentang batasn, lihat [Kuota di Amazon Cognito](quotas.md).

## Caching token machine-to-machine akses dengan Amazon API Gateway
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway"></a>

Dengan caching token API Gateway, aplikasi Anda dapat menskalakan sebagai respons terhadap peristiwa yang lebih besar dari kuota tingkat permintaan default titik akhir Amazon OAuth Cognito.

![\[Diagram API Gateway yang memelihara cache token akses untuk M2M. Proxy API memproses permintaan token dan mengembalikan token cache jika sudah valid.\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/images/user-pools-m2m-caching.png)


Anda dapat men-cache token akses sehingga aplikasi Anda hanya meminta token akses baru jika token cache kedaluwarsa. Jika tidak, titik akhir caching Anda mengembalikan token dari cache. Ini mencegah panggilan tambahan ke titik akhir Amazon Cognito API. Bila Anda menggunakan Amazon API Gateway sebagai proxy ke[Titik akhir token](token-endpoint.md), API Anda merespons sebagian besar permintaan yang sebaliknya akan berkontribusi pada kuota permintaan Anda, menghindari permintaan yang gagal sebagai akibat dari pembatasan tarif.

Solusi berbasis API Gateway berikut menawarkan implementasi caching token dengan latensi rendah, kode rendah/tanpa kode. API Gateway APIs dienkripsi saat transit, dan secara opsional saat istirahat. Cache API Gateway sangat ideal untuk hibah [kredensyal klien OAuth 2.0, jenis hibah](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) volume tinggi yang sering menghasilkan token akses untuk sesi otorisasi machine-to-machine dan layanan mikro. Dalam peristiwa seperti lonjakan lalu lintas yang menyebabkan layanan mikro Anda berskala horizontal, Anda dapat berakhir dengan banyak sistem yang menggunakan kredensyal klien yang sama pada volume yang melebihi batas AWS tingkat permintaan kumpulan pengguna atau klien aplikasi Anda. Untuk menjaga ketersediaan aplikasi dan latensi rendah, solusi caching adalah praktik terbaik dalam skenario seperti itu.

Dalam solusi ini, Anda menentukan cache di API Anda untuk menyimpan token akses terpisah untuk setiap kombinasi OAuth cakupan dan klien aplikasi yang ingin Anda minta di aplikasi Anda. Saat aplikasi Anda membuat permintaan yang cocok dengan kunci cache, API Anda merespons dengan token akses yang dikeluarkan Amazon Cognito ke permintaan pertama yang cocok dengan kunci cache. Ketika durasi kunci cache Anda kedaluwarsa, API Anda meneruskan permintaan ke titik akhir token Anda dan menyimpan token akses baru.

**catatan**  
Durasi kunci cache Anda harus lebih pendek dari durasi token akses klien aplikasi Anda.

Kunci cache adalah kombinasi dari OAuth cakupan yang Anda minta dalam `scope` parameter di badan permintaan dan `Authorization` header dalam permintaan. `Authorization`Header berisi ID klien aplikasi dan rahasia klien Anda. Anda tidak perlu menerapkan logika tambahan di aplikasi Anda untuk mengimplementasikan solusi ini. Anda hanya harus memperbarui konfigurasi untuk mengubah jalur ke titik akhir token kumpulan pengguna Anda.

Anda juga dapat menerapkan token caching dengan [ElastiCache (Redis OSS](https://docs.aws.amazon.com/elasticache/index.html)). [Untuk kontrol halus dengan kebijakan AWS Identity and Access Management (IAM), pertimbangkan cache Amazon DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/authentication-and-access-control.html#authentication)

**catatan**  
Caching di API Gateway dikenakan biaya tambahan. [Lihat harga untuk lebih jelasnya.](https://aws.amazon.com/api-gateway/pricing)<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway-how-to"></a>

**Untuk menyiapkan proxy caching dengan API Gateway**

1. Buka [konsol API Gateway](https://console.aws.amazon.com/apigateway/main/apis) dan buat REST API.

1. Di **Sumber Daya**, buat metode POST.

   1. Pilih **tipe Integrasi** HTTP.

   1. Pilih **Gunakan integrasi proxy HTTP**.

   1. Masukkan **URL Endpoint** dari. `https://<your user pool domain>/oauth2/token`

1. Di **Sumber Daya**, konfigurasikan kunci cache.

   1. Edit **permintaan Metode metode** POST Anda.
**catatan**  
Validasi permintaan metode ini untuk digunakan dengan `client_secret_basic` otorisasi dalam permintaan token, di mana rahasia klien dikodekan di header permintaan. `Authorization` Untuk validasi badan permintaan JSON dalam `client_secret_post` otorisasi, buat [model data](https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings-models.html) yang mengharuskan [client\$1secret](token-endpoint.md#post-token-request-parameters-in-body) hadir. Dalam model ini, **validator Permintaan** Anda harus **Memvalidasi isi, parameter string kueri,** dan header.

   1. Konfigurasikan metode **Minta validator** untuk **Memvalidasi parameter string kueri** dan header. Untuk informasi selengkapnya tentang validasi permintaan, lihat [Meminta validasi](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) di Panduan *Pengembang Amazon API Gateway*.

   1. Tetapkan `scope` parameter dan `Authorization` header Anda sebagai kunci caching Anda.

      1. Tambahkan string kueri ke **parameter string kueri URL**. Masukkan string kueri **Nama** `scope` dan pilih **Diperlukan** dan **Caching**.

      1. Tambahkan header ke **header permintaan HTTP**. Masukkan header permintaan **Nama** `Authorization` dan pilih **Diperlukan** dan **Caching**.

1. Dalam **Tahapan**, konfigurasikan caching.

   1. Pilih tahap yang ingin Anda ubah dan pilih **Edit** dari **Detail Tahap**.

   1. Di bawah **Pengaturan tambahan**, **Pengaturan cache**, aktifkan opsi **cache Provision API**.

   1. Pilih **kapasitas Cache**. Kapasitas cache yang lebih tinggi meningkatkan kinerja tetapi datang dengan biaya tambahan.

   1. Kosongkan kotak centang **Memerlukan otorisasi**. Pilih **Lanjutkan**.

   1. API Gateway hanya menerapkan kebijakan cache ke metode GET dari level stage. Anda harus menerapkan penggantian kebijakan cache ke metode POST Anda.

      Perluas tahap yang Anda konfigurasikan dan pilih `POST` metode. Untuk membuat pengaturan cache untuk metode ini, pilih **Buat penggantian**.

   1. **Aktifkan opsi Enable method cache**.

   1. Masukkan ****Cache time-to-live (TTL)**** 3600 detik. Pilih **Simpan**.

1. Dalam **Tahapan**, perhatikan **URL Panggilan**.

1. Perbarui aplikasi Anda ke permintaan token POST **ke URL Invoke** API Anda, bukan `/oauth2/token` titik akhir kumpulan pengguna Anda.