Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Titik akhir penerbit token
Titik akhir token OAuth 2.0 https://www.rfc-editor.org/rfc/rfc6749#section-3.2/oauth2/token mengeluarkan token web JSON (JWT) ke aplikasi yang ingin menyelesaikan alur pemberian kode otorisasi dan kredensial-klien. Token ini adalah hasil akhir dari otentikasi dengan kumpulan pengguna. Mereka berisi informasi tentang pengguna (token ID), tingkat akses pengguna (token akses), dan hak pengguna untuk mempertahankan sesi masuk mereka (token penyegaran). Pustaka relying-party OpenID Connect (OIDC) menangani permintaan dan respons payload dari titik akhir ini. Token memberikan bukti otentikasi yang dapat diverifikasi, informasi profil, dan mekanisme untuk akses ke sistem back-end.
Titik akhir token mengembalikan header Access-Control-Allow-Origin: * respons. Anda dapat memanggil titik akhir token cross-origin dari aplikasi berbasis browser. Misalnya, Anda dapat menyelesaikan pemberian kode otorisasi dengan Proof Key for Code Exchange (PKCE) dari klien publik. Amazon Cognito tidak mendukung kebijakan asal berbagi sumber daya lintas asal (CORS) khusus pada titik akhir ini. Untuk informasi selengkapnya, lihat bagian kebijakan CORS di. Login terkelola kumpulan pengguna
Server otorisasi OAuth 2.0 kumpulan pengguna Anda mengeluarkan token web JSON (JWT) dari titik akhir token ke jenis sesi berikut:
-
Pengguna yang telah menyelesaikan permintaan pemberian kode otorisasi. Penukaran kode yang berhasil mengembalikan ID, akses, dan token penyegaran.
-
Machine-to-machine Sesi (M2M) yang telah menyelesaikan hibah kredensibilitas klien. Otorisasi yang berhasil dengan rahasia klien mengembalikan token akses.
-
Pengguna yang sebelumnya telah masuk dan menerima token penyegaran. Refresh token otentikasi mengembalikan ID baru dan token akses.
catatan
Pengguna yang masuk dengan pemberian kode otorisasi dalam login terkelola atau melalui federasi selalu dapat menyegarkan token mereka dari titik akhir token. Pengguna yang masuk dengan operasi API
InitiateAuthdanAdminInitiateAuthdapat menyegarkan token mereka dengan titik akhir token ketika perangkat yang diingat tidak aktif di kumpulan pengguna Anda. Jika perangkat yang diingat aktif, segarkan token dengan operasi penye garan token API atau SDK yang relevan untuk klien aplikasi Anda.
Titik akhir token menjadi tersedia untuk umum saat Anda menambahkan domain ke kumpulan pengguna Anda. Ini menerima permintaan HTTP POST. Untuk keamanan aplikasi, gunakan PKCE dengan acara masuk kode otorisasi Anda. PKCE memverifikasi bahwa pengguna yang melewati kode otorisasi adalah pengguna yang sama yang diautentikasi. Untuk informasi selengkapnya tentang PKCE, lihat IETF RFC 7636.
Anda dapat mempelajari lebih lanjut tentang klien aplikasi kumpulan pengguna dan jenis hibah mereka, rahasia klien, cakupan yang diizinkan, dan ID klien diPengaturan khusus aplikasi dengan klien aplikasi. Anda dapat mempelajari lebih lanjut tentang otorisasi M2M, pemberian kredenSIAL klien, dan otorisasi dengan cakupan token akses diLingkup, M2M, dan server sumber daya.
Untuk mengambil informasi tentang pengguna dari token akses mereka, berikan ke permintaan Anda Titik akhir UserInfo atau ke GetUser API. Token akses harus berisi cakupan yang sesuai untuk permintaan ini,
Memformat permintaan POST ke titik akhir token
Titik akhir /oauth2/token hanya mendukung HTTPS POST. Titik akhir ini tidak interaktif pengguna. Tangani permintaan token dengan pust aka OpenID Connect (OIDC)
Titik akhir token mendukung client_secret_basic dan client_secret_post otentikasi. Untuk informasi selengkapnya tentang spesifikasi OIDC, lihat Otentikasi Klien.
Meminta parameter di header
Anda dapat meneruskan parameter berikut di header permintaan Anda ke titik akhir token.
Authorization-
Jika klien diberi rahasia, klien dapat meneruskannya
client_iddanclient_secretdi header otorisasi sebagai otorisasiclient_secret_basicHTTP. Anda juga dapat memasukkanclient_iddanclient_secretdalam badan permintaan sebagaiclient_secret_postotorisasi.String header otorisasi adalah Basic
Base64Encode(client_id:client_secret). Contoh berikut adalah header otorisasi untuk klien aplikasidjc98u3jiedmi283eu928dengan rahasia klienabcdef01234567890, menggunakan Base64-encoded versi stringdjc98u3jiedmi283eu928:abcdef01234567890:Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw Content-Type-
Atur nilai parameter ini ke
'application/x-www-form-urlencoded'.
Minta parameter dalam tubuh
Berikut ini adalah parameter yang dapat Anda minta dalam x-www-form-urlencoded format di badan permintaan ke titik akhir token.
grant_type-
Diperlukan.
Jenis hibah OIDC yang ingin Anda minta.
Harus
authorization_codeataurefresh_tokenatauclient_credentials. Anda dapat meminta token akses untuk cakupan khusus 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 kredentif klien di klien aplikasi Anda.
catatan
Titik akhir token mengembalikan token penyegaran hanya jika
grant_typeadaauthorization_code. -
client_id-
Opsional. Tidak diperlukan saat Anda memberikan ID klien aplikasi di
Authorizationheader.ID klien aplikasi di kumpulan pengguna Anda. Tentukan klien aplikasi yang sama yang mengotentikasi pengguna Anda.
Anda harus memberikan parameter ini jika klien bersifat publik dan tidak memiliki rahasia, atau dengan
client_secretclient_secret_postotorisasi. client_secret-
Opsional. Tidak diperlukan saat Anda memberikan rahasia klien di
Authorizationheader dan ketika klien aplikasi tidak memiliki rahasia.Rahasia klien aplikasi, jika klien aplikasi memilikinya, untuk
client_secret_postotorisasi. scope-
Opsional.
Dapat berupa kombinasi dari cakupan apa pun yang terkait dengan klien aplikasi Anda. Amazon Cognito mengabaikan cakupan dalam permintaan yang tidak diizinkan untuk klien aplikasi yang diminta. Jika Anda tidak memberikan parameter permintaan ini, server otorisasi mengembalikan
scopeklaim token akses dengan semua cakupan otorisasi yang Anda aktifkan di konfigurasi klien aplikasi. Anda dapat meminta cakupan apa pun yang diizinkan untuk klien aplikasi yang diminta: cakupan standar, cakupan khusus dari server sumber daya, dan cakupan layanan mandiriaws.cognito.signin.user.adminpengguna. redirect_uri-
Opsional. Tidak diperlukan untuk hibah kredensibilitas klien.
Harus sama dengan
redirect_uriyang digunakan untuk mendapatkanauthorization_codedi/oauth2/authorize.Anda harus memberikan parameter ini jika
grant_typeadaauthorization_code. refresh_token-
Opsional. Digunakan hanya ketika pengguna sudah memiliki token penyegaran dan ingin mendapatkan ID baru dan token akses.
Untuk menghasilkan token akses dan ID baru untuk sesi pengguna, tetapkan nilainya
refresh_tokenke token penyegaran valid yang dikeluarkan oleh klien aplikasi yang diminta.Mengembalikan token penyegaran baru dengan ID baru dan token akses saat rotasi token penyegaran aktif, jika tidak hanya mengembalikan ID dan token akses. Jika token akses asli ter ikat ke sumber daya API, token akses baru mempertahankan url API yang diminta dalam
audklaim. code-
Opsional. Hanya diperlukan dalam hibah kode otorisasi.
Kode otorisasi dari pemberian kode otorisasi. Anda harus memberikan parameter ini jika permintaan otorisasi Anda menyertakan a
grant_typeofauthorization_code. aws_client_metadata-
Opsional.
Informasi yang ingin Anda sampaikan ke alur otor Pemicu Lambda generasi pra token isasi mesin ke mesin (M2M). Aplikasi Anda dapat mengumpulkan informasi konteks tentang sesi dan meneruskannya dalam parameter ini. Saat Anda meneruskan
aws_client_metadatadalam format URL-encoded JSON, Amazon Cognito menyertakannya dalam acara input ke fungsi Lambda pemicu Anda. Versi peristiwa pemicu pra token Anda atau versi pemicu Lambda global harus dikonfigurasi untuk versi tiga atau yang lebih baru. Meskipun Amazon Cognito menerima permintaan ke titik akhir ini dalam alur M2M kode otorisasi dan kredenSIAL klien, kumpulan pengguna Anda hanya diteruskanaws_client_metadatake pemicu pembuatan pra-token dari permintaan kredenSIAL klien. code_verifier-
Tidak wajib. Diperlukan hanya jika Anda memberikan
code_challenge_methoddancode_challengeparameter dalam permintaan otorisasi awal Anda.Verifier kode yang dihasilkan yang dihitung aplikasi Anda dalam
code_challengepermintaan pemberian kode otorisasi dengan P KCE.
Menukar kode otorisasi dengan token
Permintaan berikut berhasil menghasilkan ID, akses, dan token penyegaran setelah otentikasi dengan pemberian kode otorisasi. Permintaan melewati rahasia klien dalam client_secret_basic format di Authorization header.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
Respons mengeluarkan ID baru, akses, dan token penyegaran kepada pengguna, dengan metadata tambahan.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
KredenSIAL klien dengan otorisasi dasar
Permintaan berikut dari aplikasi M2M meminta pemberian kredenSIAL klien. Karena kredentif klien memerlukan rahasia klien, permintaan diotorisasi dengan Authorization header yang berasal dari ID klien aplikasi dan rahasia. Permintaan menghasilkan token akses dengan dua cakupan yang diminta. Permintaan ini juga mencakup metadata klien yang memberikan IP-address informasi dan token yang dikeluarkan untuk pengguna atas nama hibah ini. Amazon Cognito meneruskan metadata klien ke pemicu Lambda generasi pra-token.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=client_credentials& client_id=1example23456789& scope=resourceServerIdentifier1%2Fscope1%20resourceServerIdentifier2%2Fscope2& &aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito meneruskan peristiwa input berikut ke pemicu Lambda generasi pra-token.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/scope1', 'resourceServerIdentifier2/scope2' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
Respons mengembalikan token akses. Pemberian kredenSIAL klien adalah untuk otorisasi mesin-ke-mesin (M2M) dan hanya mengembalikan token akses.
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJra1example", "token_type": "Bearer", "expires_in":3600}
Kredensibilitas klien dengan otorisasi badan POST
Permintaan pemberian kredensial-klien berikut menyer client_secret takan parameter dalam badan permintaan dan tidak menyertakan header. Authorization Permintaan ini menggunakan sintaks client_secret_post otorisasi. Permintaan menghasilkan token akses dengan cakupan yang diminta. Permintaan ini juga mencakup metadata klien yang memberikan IP-address informasi dan token yang dikeluarkan untuk pengguna atas nama hibah ini. Amazon Cognito meneruskan metadata klien ke pemicu Lambda generasi pra-token.
POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent:USER_AGENTAccept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host:auth.example.comConnection: keep-alive grant_type=client_credentials& client_id=1example23456789& scope=my_resource_server_identifier%2Fmy_custom_scope&client_secret=9example87654321& aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito meneruskan peristiwa input berikut ke pemicu Lambda generasi pra-token.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/my_custom_scope' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
Respons mengembalikan token akses. Pemberian kredenSIAL klien adalah untuk otorisasi mesin-ke-mesin (M2M) dan hanya mengembalikan token akses.
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" }
Pemberian kode otorisasi dengan PKCE
Contoh permintaan berikut melengkapi permintaan otorisasi yang menyertakan code_challenge_method dan code_challenge parameter dalam permintaan pemberian kode otorisasi dengan PKCE.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& code_verifier=CODE_VERIFIER& redirect_uri=com.myclientapp://myclient/redirect
Respons mengembalikan ID, akses, dan token penyegaran dari verifikasi PKCE yang berhasil oleh aplikasi.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
Penyegaran token tanpa rotasi token penyegaran
Contoh permintaan berikut menyediakan token penyegaran ke klien aplikasi di mana rotasi token penye garan tidak aktif. Karena klien aplikasi memiliki rahasia klien, permintaan menyediakan Authorization header.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
Respons mengembalikan ID baru dan token akses.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"token_type": "Bearer",
"expires_in": 3600
}
Penyegaran token dengan rotasi token penyegaran
Contoh permintaan berikut menyediakan token penyegaran ke klien aplikasi tempat rotasi token penye garan aktif. Karena klien aplikasi memiliki rahasia klien, permintaan menyediakan Authorization header.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
Respons mengembalikan ID baru, akses, dan token penyegaran.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj4example",
"token_type": "Bearer",
"expires_in": 3600
}
Contoh tanggapan negatif
Permintaan yang salah format menghasilkan kesalahan dari titik akhir token. Berikut ini adalah peta umum badan respons ketika permintaan token menghasilkan 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_typeadalahrefresh_tokentetapirefresh_tokentidak disertakan. invalid_client-
Autentikasi klien gagal. Misalnya, ketika klien menyertakan
client_iddanclient_secretdi header otorisasi, tetapi tidak ada klien denganclient_iddanclient_secretitu. 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 meminta cak
emailupan dan klien aplikasi Anda dapat membacaemailatribut, tetapi tidakemail_verified. unauthorized_client-
Klien tidak diperbolehkan untuk alur pemberian kode atau untuk untuk menyegarkan token.
Permintaan token dengan nilai
redirect_uriyang tidak cocok dengan nilai dari permintaan otorisasi, dikembalikanunauthorized_clientdengan nilaierror_descriptionofinvalid_redirect. unsupported_grant_type-
Dikembalikan jika
grant_typeada yang lain dariauthorization_codeataurefresh_tokenatauclient_credentials.