全部产品
Search
文档中心

Resource Access Management:Akses API Alibaba Cloud dari aplikasi asli

更新时间:Jun 27, 2025

Topik ini menjelaskan cara menggunakan Open Authorization (OAuth) 2.0 untuk mengakses API Alibaba Cloud dari aplikasi asli, seperti aplikasi desktop atau seluler.

Prasyarat

Aplikasi asli telah dibuat dengan nama, cakupan OAuth, dan URL panggilan balik yang telah ditentukan. Untuk informasi lebih lanjut, lihat Buat Aplikasi. Aplikasi asli tidak menggunakan rahasia aplikasi karena berjalan di lingkungan yang tidak tepercaya.

Catatan

Setelah membuat aplikasi asli, aplikasi tersebut dapat mengakses sumber daya Alibaba Cloud dalam akun Alibaba Cloud Anda.

Proses

Proses Dasar

  1. Pengguna masuk ke aplikasi asli melalui browser.

  2. Aplikasi asli mengarahkan pengguna ke layanan OAuth 2.0 Alibaba Cloud dan mengirimkan URL aplikasi ke browser.

    Catatan

    Jika pengguna belum masuk ke Alibaba Cloud, aplikasi asli akan mengarahkan pengguna ke halaman login Alibaba Cloud.

  3. Pengguna masuk ke layanan OAuth 2.0 Alibaba Cloud melalui browser dan meminta kode otorisasi.

  4. Layanan OAuth 2.0 Alibaba Cloud mengarahkan pengguna kembali ke aplikasi asli dan mengembalikan kode otorisasi ke browser.

  5. Aplikasi asli meminta token akses yang sesuai dengan pengguna dari layanan OAuth 2.0 Alibaba Cloud. Kode otorisasi diperlukan dalam permintaan.

  6. Layanan OAuth 2.0 Alibaba Cloud mengirimkan token akses yang diperoleh ke aplikasi asli.

  7. Aplikasi asli menggunakan token akses untuk mengakses API Alibaba Cloud.

    Catatan

    Token akses berisi informasi identitas pengguna dan dapat digunakan oleh aplikasi asli untuk mengakses sumber daya pengguna.

PKCE

Aplikasi asli dapat menggunakan spesifikasi Proof Key for Code Exchange (PKCE) untuk mendapatkan kode otorisasi dan token akses. Untuk informasi lebih lanjut, lihat Proof Key for Code Exchange oleh Klien Publik OAuth.

Catatan

Spesifikasi PKCE dapat digunakan untuk mengurangi serangan intersepsi terhadap kode otorisasi.

  1. Aplikasi asli membuat dan mencatat string acak bernama code_verifier.

    Catatan

    String code_verifier adalah string kriptografi entropi tinggi. String harus memiliki panjang 43 hingga 128 karakter, dan dapat berisi huruf, angka, tanda hubung (-), titik (.), garis bawah (_), dan tilde (~).

  2. Aplikasi asli membuat string code_challenge berdasarkan string code_verifier dan metode transformasi yang dipilih. Kemudian, aplikasi asli mengirimkan permintaan untuk mendapatkan kode otorisasi. String code_challenge dan metode transformasi untuk membuat string code_challenge harus disertakan dalam permintaan.

    code_challenge = transform(code_verifier, [Plain|S256])

    Metode Transformasi

    Nilai

    plain

    Jika metode transformasi adalah plain, nilai string code_challenge sama dengan nilai string code_verifier.

    S256

    Jika metode transformasi adalah S256, nilai string code_challenge sama dengan nilai hash SHA-256 dari string code_verifier.

    code_challenge=BASE64URL-Encode(SHA256(ASCII(code_verifier)))
    Catatan

    Masukan algoritma hash adalah string ASCII dari code_verifier. Keluaran algoritma hash harus dienkripsi menggunakan Base64URL.

    Berikut ini adalah contoh cara menghitung string code_challenge:

    Jika metode transformasi S256 digunakan dan nilai string code_verifier adalah dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk, maka nilai string code_challenge adalah E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM.

  3. Ketika aplikasi asli menggunakan kode otorisasi yang diperoleh untuk meminta token akses, server menentukan apakah akan menerbitkan token akses dengan menghitung string code_challenge berdasarkan string code_verifier.

    Kode otorisasi yang diperoleh berisi string code_verifier. Server menghitung string code_challenge berdasarkan string code_verifier dan metode transformasi yang dipilih oleh aplikasi asli. Kemudian, server membandingkan string code_challenge dengan string code_challenge yang disediakan oleh aplikasi asli. Jika nilai kedua string code_challenge sama, server menerbitkan token akses yang diminta.

Dapatkan token akses

  1. Aplikasi asli mengarahkan pengguna ke layanan OAuth 2.0 Alibaba Cloud untuk mendapatkan kode otorisasi.

    Titik akhir yang digunakan untuk mendapatkan kode otorisasi adalah https://signin.alibabacloud.com/oauth2/v1/auth.

    Tabel 1 Parameter Permintaan

    Parameter

    Diperlukan

    Deskripsi

    client_id

    Ya

    ID aplikasi asli.

    redirect_uri

    Ya

    Redirect Uniform Resource Identifier (URI) dari aplikasi asli.

    response_type

    Ya

    Tipe respons. Atur nilainya menjadi code.

    scope

    Tidak

    Daftar ruang lingkup OAuth yang dipisahkan oleh spasi. Jika Anda membiarkan parameter ini kosong, aplikasi asli meminta akses ke semua ruang lingkup.

    state

    Tidak

    Nilai yang digunakan baik dalam permintaan maupun respons. Anda dapat mengonfigurasi parameter state sebagai nonce untuk mencegah serangan pemalsuan permintaan lintas situs (CSRF) atau menyimpan status antara aplikasi asli dan layanan OAuth 2.0 Alibaba Cloud. Jika Anda menyetel parameter ini ke string acak, layanan OAuth 2.0 Alibaba Cloud akan mengembalikan nilai state dalam respons untuk digunakan selanjutnya.

    code_challenge_method

    Tidak

    Metode transformasi. Jika Anda membiarkan parameter ini kosong, metode default plain digunakan.

    code_challenge

    Tidak

    Parameter ini digunakan untuk mengamankan pemberian kode otorisasi berdasarkan spesifikasi PKCE dari aplikasi asli. Parameter ini dihasilkan dengan mentranskode dan mengenkripsi string code_verifier berdasarkan nilai parameter code_challenge_method.

    Catatan

    Jika Anda membiarkan parameter ini kosong, spesifikasi PKCE tidak dapat digunakan, dan Anda tidak perlu menentukan string code_verifier ketika aplikasi asli menggunakan kode otorisasi untuk meminta token akses. Jika aplikasi lain mencegat kode otorisasi, aplikasi tersebut dapat menggunakan kode ini untuk meminta token akses.

    prompt

    Tidak

    Menentukan apakah server perlu meminta pengguna untuk memberikan izin yang diperlukan kepada aplikasi web.

    Jika Anda menentukan parameter ini, pengguna harus memberikan izin yang diperlukan kepada aplikasi web. Pengguna harus memberikan izin yang diperlukan kepada aplikasi web meskipun akun Alibaba Cloud sudah memberikan izin yang diperlukan kepada aplikasi web. Jika Anda membiarkan parameter ini kosong, hanya akun Alibaba Cloud yang diminta untuk memberikan izin yang diperlukan kepada aplikasi web pertama kali akun Alibaba Cloud menggunakan aplikasi web.

    Atur nilainya menjadi admin_consent. Nilai ini menentukan bahwa server menampilkan halaman otorisasi sebelum server mengembalikan kode otorisasi yang diminta ke klien.

    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

    GET HTTP/1.1 302 Found
    Location: meeting://authorize/?code=ABAFDGDFXYZW888&state=123456****                     
  2. Aplikasi asli menggunakan kode otorisasi untuk meminta token akses yang sesuai dengan pengguna dari layanan OAuth 2.0 Alibaba Cloud.

    Titik akhir yang digunakan untuk meminta token akses adalah https://oauth.alibabacloud.com/v1/token.

    Tabel 2 Parameter Permintaan

    Parameter

    Diperlukan

    Deskripsi

    code

    Ya

    Kode otorisasi yang diperoleh oleh aplikasi asli.

    client_id

    Ya

    ID aplikasi asli.

    redirect_uri

    Ya

    URI yang digunakan untuk mendapatkan kode otorisasi.

    grant_type

    Ya

    Atur nilainya menjadi authorization_code.

    code_verifier

    Tidak

    String code_verifier yang Anda gunakan untuk membuat string code_challenge dalam permintaan untuk kode otorisasi.

    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                    
    Tabel 3 Parameter Respons

    Parameter

    Deskripsi

    access_token

    Token akses yang dikembalikan. Aplikasi asli dapat menggunakan token akses untuk mengakses API Alibaba Cloud.

    expires_in

    Sisa masa berlaku token akses. Satuan: detik.

    token_type

    Tipe token akses. Nilainya adalah Bearer.

    id_token

    Token ID. Nilainya adalah JSON Web Token (JWT). Jika openid termasuk dalam nilai parameter scope dalam permintaan yang diinisiasi untuk mendapatkan kode otorisasi, token ID dikembalikan.

    refresh_token

    Token refresh. Aplikasi asli dapat menggunakan token refresh untuk mendapatkan token akses baru tanpa perlu menentukan token akses asli.

    Contoh Respons

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

Dapatkan token akses baru

Titik akhir yang digunakan untuk meminta token akses adalah https://oauth.alibabacloud.com/v1/token.

Tabel 4 Parameter Permintaan

Parameter

Diperlukan

Deskripsi

refresh_token

Ya

Token refresh yang diperoleh menggunakan kode otorisasi.

client_id

Ya

ID aplikasi asli.

grant_type

Ya

Atur nilainya menjadi 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
Tabel 5 Parameter Respons

Parameter

Deskripsi

access_token

Token akses baru. Aplikasi asli dapat menggunakan token akses baru untuk mengakses API Alibaba Cloud.

expires_in

Sisa masa berlaku token akses. Satuan: detik.

token_type

Tipe token akses. Nilainya adalah Bearer.

Contoh Respons

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

Nilai dalam respons ini sama dengan nilai dalam respons contoh sebelumnya. Respons ini tidak berisi parameter refresh_token dan id_token.

Cabut token refresh

Ketika pengguna keluar dari aplikasi asli atau menghapus akun dari aplikasi asli, Anda harus mencabut token refresh aplikasi tersebut.

Titik akhir yang digunakan untuk mencabut token refresh adalah https://oauth.alibabacloud.com/v1/revoke.

Tabel 6 Parameter Permintaan

Parameter

Diperlukan

Deskripsi

token

Ya

Token refresh yang ingin Anda cabut.

client_id

Ya

ID aplikasi asli.