Mencabut dan menyetujui token

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 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 adalah accesstoken dan refreshtoken:
    • 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 ke false.
    • Cabut token akses dan token refresh. Untuk melakukannya, tetapkan jenis <Token> ke accesstoken. Nilai cascade dapat berupa true (default) atau false. Jika Anda menetapkannya ke true, token akses dan token refresh akan dicabut. Jika Anda menetapkannya ke false, 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.

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 adalah accesstoken dan refreshtoken.
  • cascade (opsional, boolean): Secara default, opsi ini disetel ke true, 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 ke false, hanya token akses atau token refresh yang ditentukan yang akan divalidasi.