Titik akhir token - Amazon Cognito

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

Titik akhir token

Titik akhir token OAuth 2.0 di /oauth2/token mengeluarkan token JSON web (JWTs).

Server otorisasi kumpulan pengguna OAuth 2.0 Anda mengeluarkan token JSON web (JWTs) dari titik akhir token ke jenis sesi berikut:

  1. Pengguna yang telah menyelesaikan permintaan untuk hibah kode otorisasi. Penukaran kode yang berhasil mengembalikan ID, akses, dan token penyegaran.

  2. Sesi M achine-to-machine (M2M) yang telah menyelesaikan hibah kredensial-klien. Otorisasi yang berhasil dengan rahasia klien mengembalikan token akses.

  3. Pengguna yang sebelumnya telah masuk dan menerima token penyegaran. Segarkan otentikasi token mengembalikan ID baru dan token akses.

    catatan

    Pengguna yang masuk dengan pemberian kode otorisasi di UI yang dihosting atau melalui federasi selalu dapat menyegarkan token mereka dari titik akhir token. Pengguna yang masuk dengan API operasi InitiateAuth dan AdminInitiateAuth dapat menyegarkan token mereka dengan titik akhir token saat perangkat yang diingat tidak aktif di kumpulan pengguna Anda. Jika perangkat yang diingat aktif, segarkan token dengan AuthFlow of REFRESH_TOKEN_AUTH in InitiateAuth atau AdminInitiateAuth API request.

Titik akhir token menjadi tersedia untuk umum saat Anda menambahkan domain ke kumpulan pengguna Anda. Ia menerima HTTP POST permintaan. Untuk keamanan aplikasi, gunakan PKCE dengan peristiwa login kode otorisasi Anda. PKCEmemverifikasi bahwa pengguna yang melewati kode otorisasi adalah pengguna yang sama yang diautentikasi. Untuk informasi lebih lanjut tentangPKCE, lihat IETFRFC7636.

Anda dapat mempelajari lebih lanjut tentang klien aplikasi kumpulan pengguna dan jenis hibah, rahasia klien, cakupan resmi, dan klien mereka IDs diKlien aplikasi kumpulan pengguna. Anda dapat mempelajari lebih lanjut tentang otorisasi M2M, hibah kredensi klien, dan otorisasi dengan cakupan token akses di. Cakupan, M2M, dan API otorisasi dengan server sumber daya

Untuk mengambil informasi tentang pengguna dari token akses mereka, teruskan ke Anda Titik akhir UserInfo atau ke GetUserAPIpermintaan.

POST/oauth2/token

Titik akhir /oauth2/token hanya mendukung HTTPS POST. Aplikasi Anda membuat permintaan ke titik akhir ini secara langsung, bukan melalui browser pengguna.

Titik akhir token mendukung client_secret_basic dan client_secret_post otentikasi. Untuk informasi selengkapnya tentang spesifikasi OpenID Connect, lihat Otentikasi Klien. Untuk informasi selengkapnya tentang titik akhir token dari spesifikasi OpenID Connect, lihat Titik Akhir Token.

Minta parameter di header

Authorization

Jika klien dikeluarkan rahasia, klien dapat melewati client_id dan client_secret di header otorisasi sebagai client_secret_basic HTTP otorisasi. Anda juga dapat memasukkan client_id dan client_secret dalam badan permintaan sebagai client_secret_post otorisasi.

String header otorisasi adalah BasicBase64Encode(client_id:client_secret). Contoh berikut adalah header otorisasi untuk klien aplikasi djc98u3jiedmi283eu928 dengan rahasia klienabcdef01234567890, menggunakan versi string yang dienkode Base64: djc98u3jiedmi283eu928:abcdef01234567890

Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw
Content-Type

Tetapkan nilai parameter ini ke'application/x-www-form-urlencoded'.

Minta parameter dalam tubuh

grant_type

(Wajib) Jenis OIDC hibah yang ingin Anda minta.

Harus authorization_code atau refresh_token atau client_credentials. Anda dapat meminta token akses untuk cakupan kustom dari titik akhir token dalam kondisi berikut:

  • Anda mengaktifkan cakupan yang diminta dalam konfigurasi klien aplikasi Anda.

  • Anda mengonfigurasi klien aplikasi Anda dengan rahasia klien.

  • Anda mengaktifkan pemberian kredensi klien di klien aplikasi Anda.

client_id

(Opsional) ID klien aplikasi di kumpulan pengguna Anda. Tentukan klien aplikasi yang sama yang mengautentikasi pengguna Anda.

Anda harus memberikan parameter ini jika klien bersifat publik dan tidak memiliki rahasia, atau dengan client_secret client_secret_post otorisasi.

client_secret

(Opsional) Rahasia klien untuk klien aplikasi yang mengautentikasi pengguna Anda. Diperlukan jika klien aplikasi Anda memiliki rahasia klien dan Anda tidak mengirim Authorization header.

scope

(Opsional) Dapat berupa kombinasi cakupan kustom apa pun yang terkait dengan klien aplikasi. Cakupan apa pun yang Anda minta harus diaktifkan untuk klien aplikasi. Jika tidak, Amazon Cognito akan mengabaikannya. Jika klien tidak meminta cakupan apa pun, server autentikasi akan menetapkan semua cakupan kustom yang Anda otorisasi dalam konfigurasi klien aplikasi.

Hanya digunakan jika grant_type adalah client_credentials.

redirect_uri

(Opsional) Harus sama dengan redirect_uri yang digunakan untuk authorization_code masuk/oauth2/authorize.

Anda harus memberikan parameter ini jika grant_type adaauthorization_code.

refresh_token

(Opsional) Untuk menghasilkan token akses dan ID baru untuk sesi pengguna, tetapkan nilai refresh_token parameter dalam /oauth2/token permintaan Anda ke token penyegaran yang dikeluarkan sebelumnya dari klien aplikasi yang sama.

code

(Opsional) Kode otorisasi dari hibah kode otorisasi. Anda harus memberikan parameter ini jika permintaan otorisasi Anda termasuk agrant_type. authorization_code

code_verifier

(Opsional) Nilai arbitrer yang Anda gunakan untuk menghitung permintaan hibah kode otorisasi dengan. code_challenge PKCE

Contoh permintaan dengan tanggapan positif

Menukar kode otorisasi untuk token

Contoh - POST permintaan

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw grant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect

Contoh - respon

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJra1example", "id_token":"eyJra2example", "refresh_token":"eyJj3example", "token_type":"Bearer", "expires_in":3600 }
catatan

Titik akhir token mengembalikan refresh_token hanya ketika grant_type adalah authorization_code.

Bertukar kredensi klien untuk token akses: rahasia klien di header otorisasi

Contoh - POST permintaan

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw grant_type=client_credentials& client_id=1example23456789& scope=resourceServerIdentifier1/scope1 resourceServerIdentifier2/scope2

Contoh - respon

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJra1example", "token_type":"Bearer", "expires_in":3600 }

Bertukar kredensi klien untuk token akses: rahasia klien di badan permintaan

Contoh - POST permintaan

POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent: USER_AGENT Accept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host: auth.example.com Connection: keep-alive grant_type=client_credentials&client_id=1example23456789&scope=my_resource_server_identifier%2Fmy_custom_scope&client_secret=9example87654321

Contoh - respon

HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Dec 2023 16:11:11 GMT x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b { "access_token": "eyJra12345EXAMPLE", "expires_in": 3600, "token_type": "Bearer" }

Menukar hibah kode otorisasi dengan token PKCE

Contoh - POST permintaan

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw grant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& code_verifier=CODE_VERIFIER& redirect_uri=com.myclientapp://myclient/redirect

Contoh - respon

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJra1example", "id_token":"eyJra2example", "refresh_token":"eyJj3example", "token_type":"Bearer", "expires_in":3600 }
catatan

Titik akhir token mengembalikan refresh_token hanya ketika grant_type adalah authorization_code.

Menukar token penyegaran dengan token

Contoh - POST permintaan

POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw grant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example

Contoh - respon

HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJra1example", "id_token":"eyJra2example", "token_type":"Bearer", "expires_in":3600 }
catatan

Titik akhir token mengembalikan refresh_token hanya ketika grant_type adalah authorization_code.

Contoh tanggapan negatif

Contoh - respon kesalahan

HTTP/1.1 400 Bad Request Content-Type: application/json;charset=UTF-8 { "error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type" }
invalid_request

Permintaan tidak memiliki parameter yang diperlukan, menyertakan nilai parameter yang tidak didukung (selain unsupported_grant_type), atau formatnya salah. Misalnya, grant_type adalah refresh_token tetapi refresh_token tidak disertakan.

invalid_client

Autentikasi klien gagal. Misalnya, ketika klien menyertakan client_id dan client_secret di header otorisasi, tetapi tidak ada klien dengan client_id dan client_secret itu.

invalid_grant

Token refresh telah dicabut.

Kode otorisasi telah digunakan atau tidak ada.

Klien aplikasi tidak memiliki akses baca ke semua atribut dalam lingkup yang diminta. Misalnya, aplikasi Anda meminta email cakupan dan klien aplikasi Anda dapat membaca email atribut, tetapi tidakemail_verified.

unauthorized_client

Klien tidak diperbolehkan untuk alur pemberian kode atau untuk untuk menyegarkan token.

unsupported_grant_type

Dikembalikan jika grant_type ada sesuatu selain authorization_code atau refresh_token atauclient_credentials.