Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Memahami pencabutan token
Dalam beberapa kasus, aplikasi diwajibkan untuk mencabut atau membatalkan secara eksplisit setiap token. Contoh umumnya adalah saat pengguna logout dari aplikasi yang mendukung OAuth. Token yang dicabut tidak akan berguna lagi untuk otorisasi. Setelah token dicabut, jika aplikasi menyajikan token tersebut ke proxy API, kebijakan OAuthV2 dengan Operasi VerifyAccessToken akan menolak token tersebut.
Standar untuk pencabutan token ditentukan oleh IETF RFC 7009, spesifikasi Pencabutan Token OAuth 2.0.
Sebagai alternatif untuk mencabut token tertentu, Anda dapat mencabut ID klien, atau seluruh aplikasi developer. Lihat Mencabut dan menyetujui kunci aplikasi developer untuk mengetahui detailnya. Berbeda dengan mencabut token individual, mencabut ID klien atau aplikasi developer memiliki dampak yang lebih luas. Saat Anda mencabut ID klien atau aplikasi developer, Apigee akan menolak semua token yang terkait dengan ID klien atau aplikasi developer tersebut, dan tidak akan lagi mengeluarkan token baru untuk ID klien atau aplikasi developer tersebut.
Setelah mencabut token, baik token akses maupun token refresh, Anda dapat secara opsional menyetujui kembali token tersebut, kapan saja sebelum masa berlakunya berakhir. Setelah menyetujui kembali token, kebijakan OAuthV2 Apigee akan menerima kembali token tersebut untuk otorisasi, hingga masa berlaku token berakhir. Masa berlaku token tidak bergantung pada status token yang disetujui atau dicabut. Kebijakan Apigee OAuthV2 dengan Operasi ValidateAccessToken hanya akan menerima token akses jika token tersebut disetujui (atau tidak dicabut) dan belum habis masa berlakunya. Demikian pula, kebijakan Apigee OAuthV2 dengan Operasi RefreshAccessToken hanya akan menerima token refresh jika token tersebut disetujui (atau tidak dicabut) dan belum habis masa berlakunya.
Ada dua kebijakan yang dapat Anda gunakan untuk mencabut token:
- kebijakan OAuthV2, menggunakan
Operation
InvalidateToken
. - RevokeOAuthV2 policy.
Kebijakan OAuthV2 memiliki kemampuan untuk mencabut, dan juga mengaktifkan kembali, satu token dalam satu waktu. Kebijakan RevokeOAuthV2 lebih fleksibel karena dapat mencabut beberapa token sekaligus, berdasarkan ID Aplikasi, atau ID Pengguna Akhir. Bagian lain di halaman ini menjelaskan penggunaan kebijakan OAuthV2 untuk mencabut token atau mengaktifkan kembali token yang sebelumnya dicabut.
Mencabut token akses dan refresh
Berikut contoh konfigurasi untuk kebijakan OAuthV2 yang menggunakan Operasi InvalidateToken. Dalam hal ini, karena atribut cascade
pada
elemen Token
adalah benar, Apigee mencabut token akses dan token refresh
terkait.
<OAuthV2 name="InvalidateToken"> <Operation>InvalidateToken</Operation> <Tokens> <Token type="accesstoken" cascade="true">request.queryparam.token</Token> </Tokens> </OAuthV2>
Untuk mengetahui informasi selengkapnya tentang cara kerja flag berjenjang, lihat bagian di bawah tentang Atribut untuk elemen Token.
Elemen <Tokens>/<Token>
Mengidentifikasi variabel alur yang menentukan token yang akan dibatalkan. Jika developer diharapkan mengirimkan permintaan pencabutan menggunakan parameter kueri bernama access_token
, misalnya, variabel alur yang benar adalah: request.queryparam.access_token
. Untuk mewajibkan token di header HTTP,
misalnya, tetapkan nilai ini ke request.header.access_token
.
Token akses dalam format JWT tidak dapat dicabut. Selain itu, kebijakan OAuthV2 tidak dapat digunakan untuk mencabut token refresh yang terkait dengan token akses dalam format JWT. Error runtime akan terjadi jika variabel konteks yang ditentukan di sini merujuk ke token akses JWT, atau token refresh yang terkait dengan token akses JWT. Anda dapat mencabut token refresh yang terkait dengan token akses JWT menggunakan kebijakan RevokeOAuthV2.
Atribut
-
type
(wajib, string): Jenis token yang diidentifikasi oleh variabel yang ditentukan. Nilai yang didukung adalahaccesstoken
danrefreshtoken:
- Untuk mencabut token akses, tentukan jenis token akses.
- Untuk mencabut token akses dan token refresh, tentukan jenis refreshtoken. Jika melihat
type refreshtoken, Apigee mengasumsikan bahwa token tersebut adalah token refresh. Jika token refresh tersebut
ditemukan, token tersebut akan dicabut. Jika token refresh tersebut tidak ditemukan, Apigee akan memeriksa apakah itu adalah token akses. Jika token akses ada, maka token tersebut akan dicabut.
Catatan: Jika Anda meneruskan token yang sudah tidak valid ke kebijakan InvalidateToken, kebijakan tersebut tidak akan menampilkan error, meskipun Anda mungkin mengharapkannya. Operasi tersebut tidak berpengaruh.
-
cascade
(opsional, boolean, default: true) Penggunaan utama atribut ini adalah untuk mencabut token refresh tanpa mencabut token akses terkait. Pertimbangkan kasus berikut:- Mencabut token refresh saja dan tidak mencabut token akses terkait. Untuk melakukannya,
tetapkan jenis <Token> ke
refreshtoken
dan tetapkan cascade kefalse
. - Mencabut token akses dan token refresh. Untuk melakukannya, tetapkan jenis <Token>
ke
accesstoken
. Nilai cascade dapat berupatrue
(default) ataufalse
. Jika Anda menyetelnya ketrue
, token akses dan token refresh akan dicabut. Jika Anda menyetelnya kefalse
, token akses akan dicabut, dan token refresh tidak dapat digunakan. Lihat Catatan di bawah untuk penjelasan lebih lanjut. - Mencabut token akses dan tidak mencabut token refresh terkait. Tidak didukung. Lihat Catatan di bawah untuk penjelasan lebih lanjut.
- Mencabut token refresh saja dan tidak mencabut token akses terkait. Untuk melakukannya,
tetapkan jenis <Token> ke
Catatan: Untuk alasan keamanan, jika Anda mencabut token akses, token refresh terkait juga akan dicabut. Oleh karena itu, Anda tidak dapat menggunakan
atribut cascade untuk mencabut hanya token akses. Misalnya, jika Anda menyetel jenis <Token>
ke accesstoken
, dan menyetel cascade=false
, token akses akan dicabut
(seperti yang diharapkan); namun, token refresh terkait tidak dapat digunakan. Token ini tidak dapat digunakan untuk memuat ulang token akses yang dicabut. Kasus penggunaan utama untuk atribut cascade adalah saat Anda hanya ingin
mencabut token refresh. Dalam hal ini, tetapkan jenis <Token> ke refreshtoken
,
dan tetapkan cascade=false
. Token refresh akan dicabut, tetapi token akses terkait akan tetap valid (hingga habis masa berlakunya atau dicabut). Untuk mengetahui informasi selengkapnya, lihat
Diskusi forum komunitas ini.
Menyetujui token akses dan refresh
Gunakan operasi ValidateToken untuk "menyetujui ulang" token yang dicabut. Artinya, saat Anda menerapkan operasi ini, status token akses atau token refresh yang ditargetkan akan berubah dari 'dicabut' menjadi 'disetujui'. Anda dapat memvalidasi token yang dicabut dan belum habis masa berlakunya.
<OAuthV2 name="ValidateToken"> <Operation>ValidateToken</Operation> <Tokens> <Token type="refreshtoken" cascade="true">flow.variable</Token> </Tokens> </OAuthV2>
Elemen <Tokens>/<Token>
Mengidentifikasi variabel alur yang menentukan token yang akan divalidasi. Jika developer
diharapkan mengirimkan permintaan validasi menggunakan parameter kueri
bernama access_token
, misalnya, variabel alur yang benar adalah
request.queryparam.access_token
. Untuk mewajibkan token di header HTTP,
misalnya, tetapkan nilai ini ke request.header.access_token
.
Atribut
type
(wajib, string) Jenis token yang diidentifikasi oleh variabel yang ditentukan. Nilai yang didukung adalahaccesstoken
danrefreshtoken
.cascade
(opsional, boolean): Secara default, opsi ini disetel ketrue
, dan menyebabkan validasi diteruskan ke token terkait. Jadi, jika diterapkan ke token refresh, token akses terkaitnya juga divalidasi. Jika diterapkan ke token akses, token refresh terkaitnya juga divalidasi. Jika Anda menyetelnya kefalse
, maka hanya token akses atau token refresh yang ditentukan yang divalidasi.