Topik ini menjelaskan cara menggunakan Open Authorization (OAuth) 2.0 untuk mengakses API Alibaba Cloud dari aplikasi web.
Prasyarat
Aplikasi web telah dibuat dengan nama, cakupan OAuth, dan URL panggil balik yang telah ditentukan. Untuk informasi lebih lanjut, lihat Buat Aplikasi. Setelah pembuatan aplikasi web, ID aplikasi (client_id) dapat dilihat dalam daftar aplikasi, seperti yang ditunjukkan pada gambar berikut.
CatatanAplikasi web dapat mengakses sumber daya Alibaba Cloud di akun Anda. Jika ingin mengakses sumber daya milik akun lain, pastikan aplikasi tersebut memiliki izin yang diperlukan.
Rahasia aplikasi telah dibuat untuk aplikasi web. Untuk informasi lebih lanjut, lihat Buat Rahasia Aplikasi. Rahasia hanya tersedia saat pembuatan aplikasi dan tidak dapat diakses kembali setelahnya. Simpan rahasia untuk digunakan nanti.
Proses

Pengguna masuk ke aplikasi web melalui browser.
Aplikasi web mengarahkan pengguna ke layanan OAuth 2.0 Alibaba Cloud dan mengirimkan URL aplikasi ke browser.
CatatanJika pengguna belum masuk ke Alibaba Cloud, aplikasi web akan mengarahkan pengguna ke halaman login Alibaba Cloud.
Pengguna masuk ke layanan OAuth 2.0 Alibaba Cloud melalui browser dan meminta kode otorisasi.
Layanan OAuth 2.0 Alibaba Cloud mengarahkan pengguna kembali ke aplikasi web dan mengembalikan kode otorisasi ke browser.
Aplikasi web meminta token akses yang sesuai dengan pengguna dari layanan OAuth 2.0 Alibaba Cloud. Kode otorisasi diperlukan dalam permintaan ini.
Untuk informasi lebih lanjut tentang cara mendapatkan token akses, lihat Dapatkan Token Akses.
Untuk informasi lebih lanjut tentang cara mendapatkan token akses baru, lihat Dapatkan Token Akses Baru.
Untuk informasi lebih lanjut tentang cara mencabut token refresh, lihat Cabut Token Refresh.
Layanan OAuth 2.0 Alibaba Cloud mengirimkan token akses yang diperoleh ke aplikasi web.
Aplikasi web menggunakan token akses untuk mengakses API Alibaba Cloud.
CatatanToken akses berisi informasi identitas pengguna dan dapat digunakan oleh aplikasi web untuk mengakses sumber daya pengguna.
Dapatkan token akses
Langkah 1: Aplikasi web mengarahkan pengguna ke layanan OAuth 2.0 Alibaba Cloud untuk mendapatkan kode otorisasi
Titik akhir (endpoint) yang digunakan untuk mendapatkan kode otorisasi adalah https://signin.alibabacloud.com/oauth2/v1/auth.
Tabel berikut menjelaskan parameter permintaan.
Parameter | Diperlukan | Deskripsi |
client_id | Ya | ID aplikasi web. |
redirect_uri | Ya | Redirect Uniform Resource Identifier (URI) dari aplikasi web. |
response_type | Ya | Tipe respons. Atur nilainya menjadi code. |
scope | Tidak | Daftar cakupan OAuth yang dipisahkan oleh spasi. Jika Anda meninggalkan parameter ini kosong, aplikasi web meminta akses ke semua cakupan. |
access_type | Tidak | Tipe akses aplikasi web. Nilai valid:
Nilai default: online. |
state | Tidak | Nilai yang digunakan baik dalam permintaan maupun respons. Anda dapat mengonfigurasi parameter state sebagai nonce untuk mencegah serangan cross-site request forgery (CSRF) atau menyimpan status antara aplikasi web dan layanan OAuth 2.0 Alibaba Cloud. Jika Anda mengatur parameter ini ke string acak, layanan OAuth 2.0 Alibaba Cloud akan mengembalikan nilai state dalam respons untuk digunakan nanti. |
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 meninggalkan 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. Tetapkan nilainya ke |
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****Tabel berikut menjelaskan 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: Aplikasi web menggunakan kode otorisasi untuk meminta token akses yang sesuai dengan pengguna dari layanan OAuth 2.0 Alibaba Cloud
Titik akhir (endpoint) yang digunakan untuk meminta token akses adalah https://oauth.alibabacloud.com/v1/token.
Tabel berikut menjelaskan parameter permintaan.
Parameter | Diperlukan | Deskripsi |
code | Ya | Kode otorisasi yang diperoleh dari respons di Langkah 1. |
client_id | Ya | ID aplikasi web. |
redirect_uri | Ya | URI yang digunakan untuk mendapatkan kode otorisasi. URI redirect harus sama dengan yang ada dalam permintaan Langkah 1. |
grant_type | Ya | Atur nilainya menjadi authorization_code. |
client_secret | Ya | Rahasia aplikasi yang digunakan untuk mengotentikasi aplikasi web ketika aplikasi web meminta token akses. |
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_codeTabel berikut menjelaskan parameter respons.
Parameter | Deskripsi |
access_token | Token akses yang dikembalikan. Aplikasi web dapat menggunakan token ini untuk mengakses API Alibaba Cloud. |
expires_in | Sisa masa berlaku token akses. Unit: detik. |
token_type | Tipe token akses. Nilai valid: Bearer. |
id_token | Token ID. Nilainya adalah JSON Web Token (JWT). Jika openid termasuk dalam nilai parameter scope dalam permintaan yang dilakukan untuk mendapatkan kode otorisasi, token ID dikembalikan. |
refresh_token | Token refresh. Jika parameter access_type diatur ke offline dalam permintaan yang dilakukan untuk mendapatkan kode otorisasi, token refresh dikembalikan. |
scope | Cakupan otorisasi aktual dari kode otorisasi yang diperoleh. Jika cakupan otorisasi yang diperlukan oleh aplikasi web tidak terbatas pada cakupan Jika aplikasi web tidak dapat mengakses cakupan yang ditentukan oleh parameter scope, berikan kembali izin tersebut. Untuk memberikan kembali izin, tetapkan parameter |
Contoh respons:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
"id_token": "eyJhbGciOiJIUzI1****",
"scope": "openid /acs/ccc"
}Dapatkan token akses baru
Titik akhir (endpoint) yang digunakan untuk meminta token akses adalah https://oauth.alibabacloud.com/v1/token.
Tabel berikut menjelaskan parameter permintaan.
Parameter | Diperlukan | Deskripsi |
refresh_token | Ya | Token refresh yang diperoleh menggunakan kode otorisasi. |
client_id | Ya | ID aplikasi web. |
grant_type | Ya | Atur nilainya menjadi refresh_token. |
client_secret | Tidak | Rahasia aplikasi yang digunakan untuk mengotentikasi aplikasi web ketika aplikasi web meminta token akses. |
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_tokenTabel berikut menjelaskan parameter respons.
Parameter | Deskripsi |
access_token | Token akses baru. Aplikasi web dapat menggunakan token ini untuk mengakses API Alibaba Cloud. |
expires_in | Sisa masa berlaku token akses. Unit: detik.</p |
token_type | Tipe token akses. Nilai valid: Bearer. |
Contoh respons:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600"
}Cabut token refresh
Ketika pengguna keluar dari aplikasi web atau menghapus akunnya dari aplikasi web, Anda harus mencabut token refresh aplikasi tersebut.
Titik akhir (endpoint) yang digunakan untuk mencabut token refresh adalah https://oauth.alibabacloud.com/v1/revoke.
Tabel berikut menjelaskan parameter permintaan.
Parameter | Diperlukan | Deskripsi |
token | Ya | Token refresh yang ingin Anda cabut. |
client_id | Ya | ID aplikasi web. |
client_secret | Tidak | Rahasia aplikasi web. |