Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.
Memahami pencabutan token
Dalam beberapa kasus, aplikasi diwajibkan untuk mencabut atau membatalkan token individual secara eksplisit. Kasus umum mungkin terjadi saat pengguna logout dari aplikasi yang mengaktifkan OAuth. Token yang dicabut tidak akan lagi berguna untuk otorisasi. Setelah token dicabut, jika aplikasi menampilkan 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 client ID, atau seluruh aplikasi developer. Lihat Membatalkan dan menyetujui kunci aplikasi developer untuk mengetahui detailnya. Dibandingkan dengan mencabut token individual, mencabut client ID atau aplikasi developer memiliki dampak yang lebih luas. Saat Anda mencabut client ID atau aplikasi developer, Apigee akan menolak semua token yang terkait dengan client ID atau aplikasi developer tersebut, dan tidak akan lagi menerbitkan token baru untuk client ID atau aplikasi developer tersebut.
Setelah mencabut token, baik token akses maupun token refresh, Anda dapat menyetujui kembali token tersebut, kapan saja sebelum masa berlakunya berakhir. Setelah menyetujui ulang token, kebijakan Apigee OAuthV2 akan kembali menerima 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 masa berlakunya belum berakhir. Demikian pula, kebijakan Apigee OAuthV2 dengan Operasi RefreshAccessToken hanya akan menerima token refresh jika token tersebut disetujui (atau tidak dicabut) dan belum berakhir masa berlakunya.
Ada dua kebijakan yang dapat Anda gunakan untuk mencabut token:
- kebijakan OAuthV2, menggunakan
Operation
dariInvalidateToken
. - Kebijakan RevokeOAuthV2.
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 halaman ini menjelaskan penggunaan kebijakan OAuthV2 untuk mencabut token atau mengaktifkan kembali token yang sebelumnya dicabut.
Mencabut token akses dan token refresh
Berikut adalah contoh konfigurasi untuk kebijakan OAuthV2 yang menggunakan Operasi InvalidateToken. Dalam hal ini, karena atribut cascade
pada elemen Token
bernilai benar, Apigee mencabut token akses dan token pembaruan terkaitnya.
<OAuthV2 name="InvalidateToken"> <Operation>InvalidateToken</Operation> <Tokens> <Token type="accesstoken" cascade="true">request.queryparam.token</Token> </Tokens> </OAuthV2>
Untuk informasi selengkapnya tentang cara kerja flag cascade, lihat bagian di bawah tentang Atribut untuk elemen Token.
Elemen <Tokens>/<Token>
Mengidentifikasi variabel alur yang menentukan token yang akan dicabut. Jika developer
diharapkan untuk mengirimkan permintaan pencabutan menggunakan parameter kueri
bernama access_token
, misalnya, variabel alur yang benar akan
menjadi: request.queryparam.access_token
. Untuk mewajibkan token di header HTTP, misalnya, tetapkan nilai ini ke request.header.access_token
.
Anda tidak dapat mencabut token akses yang dalam format JWT. Selain itu, Anda tidak dapat menggunakan kebijakan OAuthV2 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 dikaitkan 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 accesstoken.
- Untuk mencabut token akses dan token refresh, tentukan jenis refreshtoken. Saat melihat
type refreshtoken, Apigee mengasumsikan token tersebut adalah token refresh. Jika token refresh tersebut
ditemukan, token tersebut akan dicabut. Jika token refresh tersebut tidak ditemukan, Apigee akan memeriksa untuk
melihat apakah token tersebut adalah token akses. Jika token akses ada, 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 akan berpengaruh.
-
cascade
(opsional, boolean, default: true) Penggunaan utama atribut ini adalah untuk mencabut token refresh tanpa mencabut token akses terkait. Pertimbangkan kasus berikut:- Hanya mencabut token refresh dan tidak mencabut token akses terkait. Untuk melakukannya,
tetapkan jenis <Token> ke
refreshtoken
dan tetapkan cascade kefalse
. - Cabut token akses dan token refresh. Untuk melakukannya, tetapkan jenis <Token>
ke
accesstoken
. Nilai cascade dapat berupatrue
(default) ataufalse
. Jika Anda menetapkannya ketrue
, token akses dan token refresh akan dicabut. Jika Anda menetapkannya kefalse
, token akses akan dicabut, dan token refresh tidak dapat digunakan. Lihat Catatan di bawah untuk penjelasan selengkapnya. - Cabut token akses dan jangan cabut token refresh terkait. Tidak didukung. Lihat Catatan di bawah untuk penjelasan selengkapnya.
- Hanya mencabut token refresh 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 token akses saja. Misalnya, jika Anda menetapkan jenis <Token>
ke accesstoken
, dan menetapkan 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 terkaitnya akan tetap valid (hingga masa berlakunya habis atau dicabut). Untuk informasi selengkapnya, lihat
Diskusi forum komunitas ini.
Menyetujui token akses dan token 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 diubah dari 'dicabut' menjadi 'disetujui'. Anda dapat memvalidasi token yang dicabut yang 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 akan
menjadi: 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 diterapkan ke token terkait. Jadi, jika diterapkan ke token refresh, token akses terkait juga akan divalidasi. Jika diterapkan ke token akses, token refresh terkait juga akan divalidasi. Jika Anda menetapkannya kefalse
, hanya token akses atau token refresh yang ditentukan yang akan divalidasi.