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/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:
-
Pengguna yang telah menyelesaikan permintaan untuk hibah kode otorisasi. Penukaran kode yang berhasil mengembalikan ID, akses, dan token penyegaran.
-
Sesi M achine-to-machine (M2M) yang telah menyelesaikan hibah kredensial-klien. Otorisasi yang berhasil dengan rahasia klien mengembalikan token akses.
-
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
danAdminInitiateAuth
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 denganAuthFlow
ofREFRESH_TOKEN_AUTH
inInitiateAuth
atauAdminInitiateAuth
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
Minta parameter di header
Authorization
-
Jika klien dikeluarkan rahasia, klien dapat melewati
client_id
danclient_secret
di header otorisasi sebagaiclient_secret_basic
HTTP otorisasi. Anda juga dapat memasukkanclient_id
danclient_secret
dalam badan permintaan sebagaiclient_secret_post
otorisasi.String header otorisasi adalah Basic
Base64Encode(client_id:client_secret)
. Contoh berikut adalah header otorisasi untuk klien aplikasidjc98u3jiedmi283eu928
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
ataurefresh_token
atauclient_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
adalahclient_credentials
. redirect_uri
-
(Opsional) Harus sama dengan
redirect_uri
yang digunakan untukauthorization_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 a
grant_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
adalahrefresh_token
tetapirefresh_token
tidak disertakan. invalid_client
-
Autentikasi klien gagal. Misalnya, ketika klien menyertakan
client_id
danclient_secret
di header otorisasi, tetapi tidak ada klien denganclient_id
danclient_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 membacaemail
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 selainauthorization_code
ataurefresh_token
atauclient_credentials
.