Topik ini menjelaskan cara aplikasi web Anda menggunakan alur kode otorisasi OAuth 2.0 untuk mengakses API Alibaba Cloud atas nama pengguna.
Prasyarat
-
Sebelum aplikasi web Anda dapat mengakses API Alibaba Cloud atas nama pengguna, Anda harus membuat sebuah application. Berikan informasi penting seperti nama, cakupan (scope) OAuth, dan URI pengalihan (redirect URIs). Untuk informasi selengkapnya, lihat Create an application. Setelah membuat application, Anda dapat menemukan client ID-nya. Pada halaman Enterprise Applications, temukan client ID application Anda dalam daftar application.
CatatanSetelah Anda membuat application, application tersebut dapat bertindak atas nama pengguna dalam Akun Alibaba Cloud Anda. Untuk bertindak atas nama pengguna dari Akun Alibaba Cloud lain, Anda harus memperoleh otorisasi dari akun tersebut.
-
Buat client secret. Untuk informasi selengkapnya, lihat Create a client secret. Client secret (
client_secret) hanya ditampilkan saat pembuatan dan tidak dapat diambil kembali nanti. Simpan dengan aman.
Ikhtisar alur otorisasi

-
Pengguna masuk ke aplikasi web melalui browser.
-
Aplikasi web mengalihkan pengguna ke titik akhir otorisasi OAuth 2.0 Alibaba Cloud.
CatatanJika pengguna belum masuk ke Alibaba Cloud, mereka akan dialihkan terlebih dahulu ke halaman masuk Alibaba Cloud.
-
Pengguna masuk dan memberikan otorisasi kepada application pada layar persetujuan (consent screen).
-
Layanan OAuth 2.0 Alibaba Cloud mengalihkan pengguna kembali ke aplikasi web dengan kode otorisasi (authorization code).
-
Aplikasi web menukar kode otorisasi tersebut dengan token akses (access token).
-
Untuk mendapatkan token akses, lihat Get an access token.
-
Untuk refresh token akses, lihat Refresh an access token.
-
Untuk mencabut (revoke) token penyegaran (refresh token), lihat Revoke a refresh token.
-
-
Layanan OAuth 2.0 Alibaba Cloud mengembalikan token akses (
access_token) ke aplikasi web. -
Aplikasi web menggunakan token akses tersebut untuk memanggil API Alibaba Cloud atas nama pengguna.
CatatanKarena token akses mewakili pengguna, application dapat mengakses sumber daya pengguna tersebut.
Dapatkan token akses
Langkah 1: Minta kode otorisasi
Titik akhir otorisasi: https://signin.alibabacloud.com/oauth2/v1/auth.
Parameter permintaan:
|
Parameter |
Wajib |
Deskripsi |
|
client_id |
Ya |
Client ID dari application Anda. |
|
redirect_uri |
Ya |
Salah satu URI pengalihan yang telah Anda tentukan saat membuat application. |
|
response_type |
Ya |
Jenis respons. Menurut protokol OAuth 2.0, nilai ini harus |
|
scope |
Tidak |
Daftar cakupan OAuth yang dipisahkan spasi. Jika parameter ini dihilangkan, permintaan akan menggunakan semua cakupan yang dikonfigurasi untuk application tersebut secara default. |
|
access_type |
Tidak |
Jenis akses yang diminta. Nilai yang valid:
Nilai default: online. |
|
state |
Tidak |
Application dapat menggunakan parameter state untuk berbagai tujuan, seperti menyimpan status atau berfungsi sebagai nonce untuk mengurangi risiko CSRF. Jika Anda mengatur parameter state ke string apa pun, layanan OAuth 2.0 Alibaba Cloud akan menyertakan parameter state beserta nilainya dalam respons. |
|
prompt |
Tidak |
Menentukan apakah server harus meminta pengguna untuk memberikan otorisasi. Jika parameter ini disertakan, pengguna akan diminta memberikan otorisasi ulang kepada application, meskipun sebelumnya sudah memberikan otorisasi. Jika dihilangkan, pengguna hanya diminta memberikan otorisasi saat pertama kali menggunakan. Nilai yang valid: |
Contoh permintaan:
https://signin.alibabacloud.com/oauth2/v1/auth?
client_id=123****&
redirect_uri=https://example.com/authcallback/&
response_type=code&
scope=openid /acs/ccc&
access_type=offline&
state=123456****
Parameter respons:
|
Parameter |
Deskripsi |
|
code |
Kode otorisasi. |
|
state |
Nilai parameter state dalam permintaan. |
Contoh respons:
GET HTTP/1.1 302 Found
Location: https://example.com/authcallback/?code=ABAFDGDFXYZW888&state=123456****
Langkah 2: Tukar kode dengan token akses
Titik akhir token: https://oauth.alibabacloud.com/v1/token.
Parameter permintaan:
|
Parameter |
Wajib |
Deskripsi |
|
code |
Ya |
Kode otorisasi. Kode otorisasi yang Anda terima di Langkah 1. |
|
client_id |
Ya |
Client ID dari application Anda. |
|
redirect_uri |
Ya |
URI pengalihan. URI ini harus sesuai dengan nilai yang ditentukan dalam permintaan otorisasi Langkah 1. |
|
grant_type |
Ya |
Menurut protokol OAuth 2.0, nilainya harus authorization_code. |
|
client_secret |
Ya |
Client secret untuk application Anda. |
Contoh permintaan:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
code=ABAFDGDFXYZW888&
client_id=123****&
client_secret=`your_client_secret`&
redirect_uri=https://example.com/authcallback/&
grant_type=authorization_code
Parameter respons:
|
Parameter |
Deskripsi |
|
access_token |
Token yang memberikan akses ke API Alibaba Cloud atas nama pengguna. Application Anda tidak boleh mengurai token ini; cukup gunakan apa adanya dalam pemanggilan API Anda. Token akses mewakili identitas pengguna, dan application menggunakan token ini untuk mengakses API Alibaba Cloud. Application tidak perlu memahami makna token tersebut dan dapat langsung menggunakannya. |
|
expires_in |
Masa berlaku token akses, dalam detik. |
|
token_type |
Jenis token akses. Nilainya selalu Bearer. |
|
id_token |
Token ID. JWT (JSON Web Token) yang berisi informasi identitas pengguna. Token ini hanya dikembalikan jika parameter |
|
refresh_token |
Token penyegaran. Token ini hanya dikembalikan jika parameter |
|
scope |
Daftar cakupan yang dipisahkan spasi yang telah diberikan untuk token akses. Jika application memerlukan cakupan otorisasi selain Jika application Anda belum diberikan scope yang ditentukan, Anda harus meminta otorisasi lagi. Untuk melakukannya, minta kode otorisasi seperti dijelaskan dalam Langkah 1 dari |
Contoh respons:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
"id_token": "eyJhbGciOiJIUzI1****",
"scope": "openid /acs/ccc"
}
Refresh token akses
Titik akhir token: https://oauth.alibabacloud.com/v1/token.
Parameter permintaan:
|
Parameter |
Wajib |
Deskripsi |
|
refresh_token |
Ya |
Token penyegaran yang Anda terima dalam pertukaran token awal. |
|
client_id |
Ya |
Client ID dari application Anda. |
|
grant_type |
Ya |
Menurut protokol OAuth 2.0, nilainya harus refresh_token. |
|
client_secret |
Tidak |
Client secret untuk application Anda. |
Contoh permintaan:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
refresh_token=Ccx63VVeTn2dxV7ovXXfLtAqLLERAH1Bc&
client_id=123****&
client_secret=`your_client_secret`&
grant_type=refresh_token
Parameter respons:
|
Parameter |
Deskripsi |
|
access_token |
Token akses baru. |
|
expires_in |
Masa berlaku token akses, dalam detik. |
|
token_type |
Jenis token akses. Nilainya adalah Bearer. |
Contoh respons:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600"
}
Cabut token penyegaran
Setelah aplikasi web Anda memperoleh token penyegaran, Anda harus mencabut token tersebut ketika pengguna keluar (sign out) atau memutuskan akun mereka dari application Anda.
Titik akhir pencabutan: https://oauth.alibabacloud.com/v1/revoke.
Parameter permintaan:
|
Parameter |
Wajib |
Deskripsi |
|
token |
Ya |
Token penyegaran yang akan dicabut. |
|
client_id |
Ya |
Client ID dari application Anda. |
|
client_secret |
Tidak |
Client secret untuk application Anda. |