Memahami token akses - Amazon Cognito

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

Memahami token akses

Token akses kolam pengguna berisi klaim tentang pengguna yang diautentikasi, daftar kelompok pengguna, dan daftar cakupan. Tujuan token akses adalah untuk mengotorisasi operasi API. Kumpulan pengguna Anda menerima token akses untuk mengotorisasi operasi layanan mandiri pengguna. Misalnya, Anda dapat menggunakan token akses untuk memberikan akses pengguna Anda untuk menambah, mengubah, atau menghapus atribut pengguna.

Dengan cakupan OAuth 2.0 dalam token akses, yang berasal dari cakupan khusus yang Anda tambahkan ke kumpulan pengguna, Anda dapat mengizinkan pengguna untuk mengambil informasi dari API. Misalnya, Amazon API Gateway mendukung otorisasi dengan token akses Amazon Cognito. Anda dapat mengisi otorisasi REST API dengan informasi dari kumpulan pengguna Anda, atau menggunakan Amazon Cognito sebagai otorisasi Token Web JSON (JWT) untuk API HTTP. Untuk menghasilkan token akses dengan cakupan khusus, Anda harus memintanya melalui titik akhir publik kumpulan pengguna Anda.

Dengan paket fitur Essentials atau Plus, Anda juga dapat menerapkan pemicu Lambda generasi pra token yang menambahkan cakupan ke token akses Anda saat runtime. Untuk informasi selengkapnya, lihat Pemicu Lambda generasi pra token.

Token akses pengguna dengan openid cakupan adalah izin untuk meminta informasi lebih lanjut tentang atribut pengguna Anda dariTitik akhir UserInfo. Jumlah informasi dari userInfo titik akhir berasal dari cakupan tambahan dalam token akses: misalnya, untuk semua data pengguna, profile untuk alamat email email mereka.

Token akses pengguna dengan aws.cognito.signin.user.admin cakupan adalah izin untuk membaca dan menulis atribut pengguna, mencantumkan faktor otentikasi, mengonfigurasi preferensi otentikasi multi-faktor (MFA), dan mengelola perangkat yang diingat. Tingkat akses ke atribut yang diberikan token akses Anda ke cakupan ini cocok dengan izin baca/tulis atribut yang Anda tetapkan ke klien aplikasi Anda.

Token akses adalah JSON Web Token (JWT). Header untuk token akses memiliki struktur yang sama seperti token ID. Amazon Cognito menandatangani token akses dengan kunci berbeda dari kunci yang menandatangani token ID. Nilai klaim ID kunci akses (kid) tidak akan cocok dengan nilai kid klaim dalam token ID dari sesi pengguna yang sama. Dalam kode aplikasi Anda, verifikasi token ID dan akses token secara independen. Jangan percaya klaim dalam token akses sampai Anda memverifikasi tanda tangan. Untuk informasi selengkapnya, lihat Memverifikasi token web JSON. Anda dapat mengatur kedaluwarsa token akses ke nilai apa pun antara 5 menit dan 1 hari. Anda dapat menetapkan nilai ini per klien aplikasi.

penting

Untuk token akses dan ID, jangan tentukan minimum kurang dari satu jam jika Anda menggunakan login terkelola. Login terkelola menetapkan cookie browser yang berlaku selama satu jam. Jika Anda mengonfigurasi durasi token akses kurang dari satu jam, ini tidak berpengaruh pada validitas cookie login terkelola dan kemampuan pengguna untuk mengautentikasi ulang tanpa kredensyal tambahan selama satu jam setelah login awal.

Akses header token

Header berisi dua lembar informasi: ID kunci (kid), dan algoritme (alg).

{ "kid" : "1234example=" "alg" : "RS256", }
kid

ID kunci. Nilainya menunjukkan kunci yang digunakan untuk mengamankan JSON Web Signature (JWS) token. Anda dapat melihat kunci penandatanganan kumpulan pengguna IDs di jwks_uri titik akhir.

Untuk informasi selengkapnya tentang kid parameter, lihat parameter header Key identifier (kid).

alg

Algoritma kriptografi yang digunakan Amazon Cognito untuk mengamankan token akses. Kumpulan pengguna menggunakan algoritma RS256 kriptografi, yang merupakan tanda tangan RSA dengan SHA-256.

Untuk informasi selengkapnya tentang alg parameter, lihat Parameter header Algorithm (alg).

Akses muatan default token

Ini adalah muatan sampel dari token akses. Untuk informasi lebih lanjut, lihat klaim JWT. Anda dapat menambahkan klaim desain Anda sendiri dengan aPemicu Lambda generasi pra token.

<header>. { "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups":[ "testgroup" ], "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "version":2, "client_id":"xxxxxxxxxxxxexample", "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use":"access", "scope":"phone openid profile resourceserver.1/appclient2 email", "auth_time":1676313851, "exp":1676317451, "iat":1676313851, "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "username":"my-test-user" } .<token signature>
sub

Pengenal unik (UUID), atau subjek, untuk pengguna yang diautentikasi. Nama pengguna mungkin tidak unik di kumpulan pengguna Anda. subKlaim adalah cara terbaik untuk mengidentifikasi pengguna tertentu.

cognito:groups

Array nama grup kumpulan pengguna yang memiliki pengguna Anda sebagai anggota.

iss

Penyedia identitas yang mengeluarkan token. Klaim memiliki format berikut.

https://cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE

client_id

Klien aplikasi kumpulan pengguna yang mengautentikasi pengguna Anda. Amazon Cognito memberikan nilai yang sama dalam klaim token ID. aud

origin_jti

Pengidentifikasi pencabutan token yang terkait dengan token penyegaran pengguna Anda. Amazon Cognito mereferensikan origin_jti klaim saat memeriksa apakah Anda mencabut token pengguna dengan Cabut titik akhir atau operasi API. RevokeToken Saat Anda mencabut token, Amazon Cognito tidak lagi memvalidasi token akses dan ID dengan nilai yang sama. origin_jti

token_use

Tujuan token yang dimaksudkan. Dalam token akses, nilainya adalahaccess.

scope

Daftar cakupan OAuth 2.0 yang dikeluarkan untuk pengguna yang masuk. Cakupan menentukan akses yang disediakan token ke eksternal APIs, operasi layanan mandiri pengguna, dan data pengguna pada titik akhiruserInfo. Token dari Titik akhir token dapat berisi cakupan apa pun yang didukung klien aplikasi Anda. Token dari login Amazon Cognito API hanya berisi cakupan. aws.cognito.signin.user.admin

auth_time

Waktu otentikasi, dalam format waktu Unix, bahwa pengguna Anda menyelesaikan otentikasi.

exp

Waktu kedaluwarsa, dalam format waktu Unix, token pengguna Anda kedaluwarsa.

iat

Waktu yang dikeluarkan, dalam format waktu Unix, Amazon Cognito mengeluarkan token pengguna Anda.

jti

Pengidentifikasi unik JWT.

username

Nama pengguna pengguna di kumpulan pengguna.

Tanda tangan token akses

Tanda tangan token akses, ditandatangani dengan kunci yang diiklankan di .well-known/jwks.json titik akhir, memvalidasi integritas header token dan payload. Saat Anda menggunakan token akses untuk mengotorisasi akses ke eksternal APIs, selalu konfigurasikan otorisasi API Anda untuk memverifikasi tanda tangan ini terhadap kunci yang menandatanganinya. Untuk informasi selengkapnya, lihat Memverifikasi token web JSON.