All Products
Search
Document Center

Resource Access Management:Akses API Alibaba Cloud dari aplikasi asli

Last Updated:Mar 26, 2026

Topik ini menjelaskan cara menggunakan alur kode otorisasi OAuth 2.0 dengan Proof Key for Code Exchange (PKCE) agar aplikasi asli (seperti aplikasi desktop atau seluler) dapat mengakses API Alibaba Cloud secara aman atas nama pengguna.

Prasyarat

  • Anda telah membuat aplikasi asli OAuth 2.0 di konsol Resource Access Management (RAM) dan menentukan URI pengalihan.

  • Anda telah menyimpan ID aplikasi Anda secara aman. Aplikasi asli tidak menggunakan client secret.

Ikhtisar alur otorisasi

Alur kode otorisasi dengan PKCE merupakan metode yang direkomendasikan dan paling aman untuk aplikasi asli karena menambahkan lapisan keamanan guna mencegah serangan penyadapan kode otorisasi.

  1. Hasilkan code_verifier dan code_challenge: Aplikasi asli Anda menghasilkan string acak kriptografi berentropi tinggi (code_verifier) dan versi transformasinya (code_challenge).

  2. Pengguna memulai login: Aplikasi membuka browser ke titik akhir otorisasi Alibaba Cloud, mengirimkan code_challenge beserta metode transformasinya.

  3. Pengguna memberikan persetujuan: Pengguna masuk ke Akun Alibaba Cloud mereka dan memberikan izin yang diminta oleh aplikasi.

  4. Menerima kode otorisasi: Server otorisasi mengalihkan pengguna kembali ke URL pengalihan yang ditentukan aplikasi dengan kode otorisasi sekali pakai.

  5. Tukar kode dengan token: Aplikasi Anda mengirim permintaan ke titik akhir token Alibaba Cloud untuk menukar kode otorisasi dan code_verifier asli guna mendapatkan token akses dan token penyegaran. Server memvalidasi code_verifier terhadap code_challenge dari langkah pertama.

  6. Akses resource yang dilindungi: Aplikasi Anda menggunakan token akses untuk melakukan panggilan API yang sah ke Layanan Alibaba Cloud.

Langkah 1: Minta kode otorisasi dengan PKCE

Untuk memulai alur, aplikasi Anda harus terlebih dahulu menghasilkan parameter PKCE, lalu mengarahkan pengguna ke titik akhir otorisasi.

1. Hasilkan parameter PKCE

Pertama, aplikasi Anda membuat dan mencatat code_verifier, yaitu string acak kriptografi berentropi tinggi dengan panjang antara 43 hingga 128 karakter.

Selanjutnya, aplikasi membuat code_challenge dengan mentransformasikan code_verifier menggunakan salah satu metode berikut:

Metode transformasi

Deskripsi

plain

code_challenge sama dengan code_verifier. Metode ini tidak direkomendasikan untuk lingkungan produksi.

S256

(Direkomendasikan) code_challenge adalah hash SHA-256 dari string ASCII code_verifier yang diencode dalam format Base64-URL.
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))

Contoh menggunakan S256:

  • Jika code_verifier = dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

  • Maka code_challenge = E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM

2. Alihkan ke titik akhir otorisasi

Aplikasi Anda membuka browser sistem ke titik akhir otorisasi Alibaba Cloud (https://signin.alibabacloud.com/oauth2/v1/auth) dengan parameter berikut.

Parameter

Wajib

Deskripsi

client_id

Ya

ID aplikasi asli Anda.

redirect_uri

Ya

URI pengalihan tempat pengguna dikirim setelah memberikan persetujuan. URI ini harus persis sesuai dengan salah satu URI yang terdaftar untuk aplikasi Anda.

response_type

Ya

Harus diatur ke code.

scope

Tidak

Daftar cakupan OAuth yang diminta aplikasi Anda, dipisahkan spasi. Jika dihilangkan, semua cakupan yang dikonfigurasi untuk aplikasi akan diminta.

state

Tidak

Nilai tak transparan yang digunakan untuk mempertahankan status antara permintaan dan callback. Sangat disarankan untuk menggunakan string acak yang tidak dapat ditebak guna mencegah serangan Cross-Site Request Forgery (CSRF).

code_challenge_method

Tidak

Metode transformasi yang digunakan. Nilai valid: plain dan S256.

Nilai default: plain.

code_challenge

Tidak

String code_challenge yang telah Anda hasilkan.

Catatan

Jika Anda menghilangkan parameter ini, PKCE tidak digunakan, sehingga alur menjadi rentan terhadap serangan penyadapan kode otorisasi. Dalam kasus ini, penyerang yang menyadap kode otorisasi dapat menukarnya dengan token akses.

prompt

Tidak

Atur parameter ini ke admin_consent untuk memaksa server otorisasi menampilkan layar persetujuan kepada pengguna, meskipun sebelumnya mereka telah memberikan izin yang diminta. Jika dihilangkan, layar persetujuan hanya ditampilkan saat pertama kali pengguna memberikan izin kepada aplikasi.

Contoh permintaan

https://signin.alibabacloud.com/oauth2/v1/auth?
client_id=98989****
&redirect_uri=meeting%3A%2F%2Fauthorize%2F
&response_type=code
&scope=openid%20%2Fworksuite%2Fuseraccess
&state=123456****
&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSst****
&code_challenge_method=S256

Contoh respons

Jika pengguna memberikan persetujuan, server otorisasi mengalihkan browser pengguna ke redirect_uri Anda dengan kode otorisasi dan state yang ditambahkan sebagai parameter kueri.

GET HTTP/1.1 302 Found
Location: meeting://authorize/?code=ABAFDGDFXYZW888&state=123456****                     

Langkah 2: Tukar kode otorisasi dengan token akses

Setelah aplikasi Anda menerima kode otorisasi, aplikasi harus mengirim permintaan POST dari server backend-nya ke titik akhir token Alibaba Cloud (https://oauth.alibabacloud.com/v1/token) untuk menukar kode otorisasi dengan token.

Parameter permintaan (isi POST)

Parameter

Wajib

Deskripsi

code

Ya

Kode otorisasi yang diterima di Langkah 1.

client_id

Ya

ID aplikasi asli Anda.

redirect_uri

Ya

URI pengalihan yang sama seperti yang digunakan dalam permintaan Langkah 1.

grant_type

Ya

Harus diatur ke authorization_code.

code_verifier

Tidak

String code_verifier asli yang dihasilkan di Langkah 1.

Contoh permintaan

POST /v1/token HTTP/1.1 
Host: oauth.alibabacloud.com 
Content-Type: application/x-www-form-urlencoded
code=ABAFDGDFXYZW888&
client_id=98989****
redirect_uri=meeting://authorize/&
grant_type=authorization_code&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk                    

Contoh respons

Jika permintaan berhasil, titik akhir token mengembalikan objek JSON yang berisi token.

{
  "access_token": "eyJraWQiOiJrMTIzNCIsImVuYyI6****",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
  "id_token": "eyJhbGciOiJIUzI1****"
}                      

Langkah 3 (Opsional): Refresh token akses

Anda dapat menggunakan token penyegaran untuk mendapatkan token akses baru tanpa meminta pengguna login kembali. Titik akhir: https://oauth.alibabacloud.com/v1/token

Parameter permintaan (isi POST)

Parameter

Wajib

Deskripsi

refresh_token

Ya

Token penyegaran yang sebelumnya Anda terima.

client_id

Ya

ID aplikasi asli Anda.

grant_type

Ya

Harus diatur ke refresh_token.

Contoh permintaan

POST /v1/token HTTP/1.1 
Host: oauth.alibabacloud.com 
Content-Type: application/x-www-form-urlencoded
refresh_token=Ccx63VVeTn2dxV7ovXXfLtAqLLERAH****
client_id=98989****
grant_type=refresh_token

Contoh respons

Titik akhir token mengembalikan token akses baru.

{
  "access_token": "eyJraWQiOiJrMTIzNCIsImVuYyI6****",
  "token_type": "Bearer",
  "expires_in": 3600,
}                      

Cabut token penyegaran

Saat pengguna logout dari aplikasi Anda atau memutuskan akun mereka, Anda harus mencabut token penyegaran terkait agar tidak berlaku lagi.

Titik akhir: https://oauth.alibabacloud.com/v1/revoke

Parameter permintaan (isi POST)

Parameter

Wajib

Deskripsi

token

Ya

Token penyegaran yang ingin Anda cabut.

client_id

Ya

ID aplikasi asli Anda.

Permintaan yang berhasil akan mengembalikan status HTTP 200 OK.