Topik ini menjelaskan cara mengakses Drive and Photo Service (PDS) dari aplikasi server web menggunakan OAuth 2.0.
Pengenalan OAuth 2.0
OAuth 2.0 memungkinkan Anda memberikan otorisasi kepada layanan pihak ketiga untuk mengakses resource Anda tanpa mengungkapkan kata sandi akun Anda.
OAuth 2.0 mendukung metode otorisasi berikut: Authorization Code, Implicit, Resource Owner Password Credentials, dan Client Credentials. Metode Authorization Code menawarkan tingkat keamanan tertinggi, dan dalam topik ini, metode tersebut digunakan.
Gambar berikut mengilustrasikan proses otorisasi OAuth 2.0 menggunakan metode Authorization Code.

Proses akses untuk aplikasi server web

Proses:
Login dan otorisasi
Pengguna mengakses aplikasi server web. Aplikasi tersebut mengarahkan permintaan akses ke server autentikasi. Pengguna diminta untuk menyetujui atau menolak otorisasi aplikasi server web tersebut.
Mendapatkan access token
Jika pengguna menyetujui otorisasi, server otorisasi mengarahkan permintaan akses ke URI pengalihan yang telah ditentukan oleh aplikasi dan menghasilkan kode otorisasi.
Setelah menerima kode otorisasi, aplikasi server web meminta token akses dari server autentikasi. Dengan cara ini, pengguna memperoleh token akses.
Mengakses resource
Pengguna menggunakan token akses untuk mengakses API PDS di frontend aplikasi server web.
Prasyarat
Layanan yang mendukung OAuth 2.0 sudah siap.
PDS Developer Edition telah diaktifkan. Untuk informasi lebih lanjut, lihat Memulai dengan PDS.
Prosedur
Langkah 1: Memperoleh ID dan rahasia aplikasi
Masuk ke konsol PDS. Di panel navigasi sebelah kiri, pilih Drive and Photo Service (Developer Edition) > Domains.
Temukan domain yang ingin digunakan dan klik Details di kolom Actions.
Buat aplikasi.
CatatanJika tidak ada aplikasi yang tersedia, buat aplikasi sebelum melakukan operasi selanjutnya.
Di halaman detail domain, klik tab Applications, lalu klik Create Application.
Di panel yang muncul, tentukan parameter dan klik OK.
Untuk parameter Type, pilih WebServer (Web Server Application).

Di daftar aplikasi, lihat ID (client_id) dan Secret (client_secret) dari aplikasi yang dibuat.
PentingRahasia tersebut harus dijaga kerahasiaannya.
Langkah 2: Otorisasi logon berbasis OAuth 2.0
Konfigurasikan parameter otorisasi
Jika pengguna yang belum menyelesaikan otorisasi mengakses aplikasi server web Anda menggunakan browser, aplikasi Anda harus membuat permintaan otorisasi. Permintaan mencakup client_id aplikasi Anda dan ruang lingkup izin. Permintaan dikirim dari pengguna ke server otorisasi PDS, yang memungkinkan pengguna memberikan izin yang diperlukan kepada aplikasi Anda.
Contoh Permintaan:
GET /v2/oauth/authorize?client_id=<ID>&redirect_uri=<redirect_uri>&login_type=<login_type>&scope=<scope>&response_type=code&state=[state] HTTP/1.1 Host: {domainId}.api.aliyunpds.comTabel berikut menjelaskan parameter permintaan:
Parameter
Diperlukan
Deskripsi
client_id
Ya
IDaplikasi. Untuk informasi cara mendapatkan ID, lihat Dapatkan ID dan secret aplikasi.redirect_uri
Ya
URL callback, yaitu URL tempat permintaan dialihkan setelah otorisasi berhasil. Contoh:
https://example.com/callback.Setelah otorisasi berhasil, permintaan pengguna dialihkan ke URL tersebut. URL ini membawa kode verifikasi sekali pakai, misalnya
https://example.com/callback?code=xxxx.CatatanPastikan bahwa URL callback sesuai dengan URL callback OAuth 2.0 yang Anda tentukan saat membuat aplikasi.
scope
Tidak
Ruang lingkup yang menentukan izin pada tindakan yang diperlukan oleh aplikasi Anda. Ruang lingkup adalah subset dari yang Anda tentukan saat membuat aplikasi dan ditampilkan di halaman persetujuan. Untuk informasi lebih lanjut, lihat Scopes.
CatatanIzin yang diwakili oleh token akses adalah irisan dari izin pengguna dan izin yang ditentukan oleh ruang lingkup.
response_type
Ya
Jenis respons. Tetapkan nilainya ke
code.state
Tidak, tetapi direkomendasikan
Status (state). Jika permintaan membawa parameter ini, server otentikasi akan mengembalikan permintaan dalam status yang sama untuk mencegah serangan Cross Site Request Forgery (CSRF). Contoh:
https://example.com/callback?code=xxxx&state=abc.login_type
Ya
Opsi logon. Nilai valid:
default: menyediakan halaman logon komprehensif yang mendukung logon nomor ponsel dan metode logon lainnya.
phone: logon nomor ponsel.
ding: logon dengan DingTalk.
ldap: logon berdasarkan Lightweight Directory Access Protocol (LDAP) atau Active Directory (AD).
wx: logon dengan akun WeChat.
ram: logon sebagai Pengguna Resource Access Management (RAM).
lark: logon dengan Lark.
saml: logon dengan akun pihak ketiga berdasarkan protokol Security Assertion Markup Language (SAML).
hide_consent
Tidak
Menentukan apakah akan melewati halaman otorisasi pengguna untuk upaya logon berikutnya setelah logon pertama berhasil. Nilai valid:
true (default): Halaman otorisasi tidak ditampilkan. Pengguna langsung menuju langkah berikutnya.
false: Halaman otorisasi ditampilkan.
lang
Tidak
Bahasa dalam halaman ditampilkan. Nilai valid:
zh_CN (default): Bahasa Mandarin Sederhana
en_US: Bahasa Inggris
Halaman Persetujuan
Di halaman persetujuan, pengguna dapat memutuskan apakah akan memberikan izin kepada aplikasi. Jika pengguna menolak, proses berakhir. Jika menyetujui, server otorisasi PDS mengalihkan permintaan pengguna ke
redirection URIyang ditentukan di Langkah 2.1. Contoh:https://example.com/callback?code=xxxx&state=abc.Tukar kode otorisasi dengan token akses
Aplikasi server web terdiri dari dua bagian: antarmuka depan (frontend) dan backend. Anda harus mengonfigurasi URL pengalihan, seperti
https://example.com/callback, di frontend. Setelah menerima parameter?code=xxx, frontend mengurai kode tersebut dan meneruskannya ke backend. Backend kemudian menggunakan metode berikut untuk mendapatkan access token dan mengembalikannya ke frontend.Contoh Permintaan:
POST /v2/oauth/token HTTP/1.1 Host: {domainId}.api.aliyunpds.com Content-Type: application/x-www-form-urlencoded code=xxx\ &client_id=your_app_id\ &client_secret=your_app_secret\ &redirect_uri=https://example.com/callback\ &grant_type=authorization_codeParameter
Diperlukan
Deskripsi
code
Ya
codeotorisasi sekali pakai.client_id
Ya
IDaplikasi. Untuk informasi cara mendapatkan ID, lihat Dapatkan ID dan secret aplikasi.client_secret
Ya
secretyang dihasilkan saat Anda membuat aplikasi.redirect_uri
Ya
URL callback, yaitu URL tempat permintaan dialihkan setelah otorisasi berhasil. Contoh:
https://example.com/callback.CatatanPastikan bahwa URL callback sesuai dengan URL callback OAuth 2.0 yang Anda tentukan saat membuat aplikasi.
grant_type
Ya
Jenis grant. Tetapkan nilainya ke
authorization_code, yang menunjukkan metode Authorization Code.Contoh Respons:
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"Aiasd76*****", "expires_time":"2019-11-11T10:10:10.009Z", "expire_in": 7200, "token_type":"Bearer", "refresh_token":"LSLKdk*******" }Parameter
Posisi
Tipe
Diperlukan
Deskripsi
access_token
body
string
Ya
access tokenyang dihasilkan, berlaku selama dua jam.refresh_token
body
string
Ya
Token penyegaran (refresh token) yang digunakan untuk menyegarkan
access token. Umumnya, periode validitas refresh token adalah tujuh hari.expires_time
body
string
Ya
Waktu kedaluwarsa
access token.expire_in
body
long
Ya
Periode validitas
access token. Satuan: detik. Nilai default: 7200.token_type
body
string
Ya
Jenis token. Nilainya adalah
Bearer.Panggil API PDS
Antarmuka depan web dapat menggunakan
access tokenuntuk memanggil operasi API PDS.access tokenharus disertakan dalam headerAuthorizationpada permintaan API.Untuk informasi lebih lanjut, lihat Metode Pemanggilan.
Segarkan token akses
Contoh Permintaan:
POST /v2/oauth/token HTTP/1.1
Host: {domainId}.api.aliyunpds.com
Content-Type: application/x-www-form-urlencoded
refresh_token=xxx\
&client_id=xxx\
&client_secret=xxx\
&grant_type=refresh_tokenTabel berikut menjelaskan parameter permintaan:
Parameter | Diperlukan | Deskripsi |
refresh_token | Ya | Token refresh yang dikembalikan saat Anda menukar kode otorisasi dengan token akses. |
client_id | Ya | Aplikasi |
grant_type | Ya | Jenis grant. Tetapkan nilainya ke |
client_secret | Ya | Rahasia aplikasi, yang digunakan untuk mengotentikasi aplikasi. |
Contoh Respons:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"xxxxxxxxx",
"refresh_token": "xxxxx",
"expires_in":7200,
"expire_time":"2019-11-11T10:10:10.009Z",
"token_type":"Bearer"
}Parameter | Posisi | Tipe | Diperlukan | Deskripsi |
access_token | body | string | Ya |
|
refresh_token | body | string | Ya | Token penyegaran yang digunakan untuk menyegarkan |
expires_time | body | string | Ya | Waktu kedaluwarsa |
expire_in | body | long | Ya | Periode validitas |
token_type | body | string | Ya | Jenis token. Nilainya adalah |
FAQ
Referensi
Untuk informasi tentang cara memanggil operasi API PDS Developer Edition, lihat Metode Pemanggilan.
Untuk informasi tentang cara mengakses PDS dari aplikasi mobile atau desktop menggunakan OAuth 2.0, lihat Akses OAuth 2.0 untuk Aplikasi Mobile dan Desktop.
Untuk informasi tentang cara mengakses PDS dari aplikasi browser web menggunakan OAuth 2.0, lihat Akses OAuth 2.0 untuk Aplikasi Browser Web.