Membatalkan kebijakan OAuth V2

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

ikon kebijakan

Ringkasan

Mencabut token akses OAuth2 yang terkait dengan ID aplikasi developer atau ID pengguna akhir aplikasi, atau keduanya.

Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaannya, lihat Jenis kebijakan.

Gunakan kebijakan OAuthv2 untuk membuat token akses OAuth 2.0. Token yang dibuat Apigee memiliki format berikut:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

Elemen application_name berisi ID aplikasi developer yang terkait dengan token.

Secara default, Apigee tidak menyertakan ID pengguna akhir dalam token. Anda dapat mengonfigurasi Apigee untuk menyertakan ID pengguna akhir dengan menambahkan elemen <AppEndUser> ke kebijakan OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessToken</Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

Dalam contoh ini, teruskan ID pengguna akhir ke kebijakan OAuthv2 dalam parameter kueri bernama app_enduser. ID pengguna akhir kemudian disertakan dalam token di elemen app_enduser:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Mencabut berdasarkan ID aplikasi developer

Mencabut token akses OAuth2 yang terkait dengan ID aplikasi developer. Semua token akses OAuth2 yang dihasilkan oleh Apigee menyertakan ID aplikasi developer yang terkait dengan token. Kemudian, Anda dapat mencabut token berdasarkan ID aplikasi tersebut.

Untuk mendapatkan daftar ID aplikasi untuk developer tertentu, gunakan:

Mencabut berdasarkan ID pengguna akhir aplikasi

Mencabut token akses OAuth2 yang terkait dengan ID pengguna akhir aplikasi tertentu. Ini adalah token yang terkait dengan ID pengguna yang menerima token.

Secara default, tidak ada kolom untuk ID pengguna akhir dalam token akses OAuth. Untuk mengaktifkan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuthv2 agar menyertakan ID pengguna dalam token, seperti yang ditunjukkan di atas.

Untuk mendapatkan ID pengguna akhir aplikasi, gunakan Method: organizations.developers.get.

Sampel

Contoh berikut menggunakan kebijakan Revoke OAuth V2 untuk mencabut token akses OAuth2.

ID aplikasi developer

Untuk mencabut token akses menurut ID aplikasi developer, gunakan elemen <AppId> dalam kebijakan Anda.

Contoh berikut mengharapkan untuk menemukan ID aplikasi developer dari token akses dalam parameter kueri bernama app_id:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

Mengingat ID aplikasi developer, kebijakan mencabut token akses.

Mencabut sebelum stempel waktu

Untuk mencabut token akses menurut ID aplikasi developer yang dibuat sebelum tanggal dan waktu tertentu, gunakan elemen <RevokeBeforeTimestamp> dalam kebijakan Anda. <RevokeBeforeTimestamp> menentukan waktu epoch UTC dalam milidetik. Semua token yang dikeluarkan sebelum waktu tersebut akan dicabut.

Contoh berikut mencabut token akses untuk aplikasi developer yang dibuat sebelum 1 Juli 2019:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

Elemen <RevokeBeforeTimestamp> mengambil bilangan bulat 64-bit (panjang) yang merepresentasikan jumlah milidetik yang telah berlalu sejak tengah malam, pada 1 Januari 1970 UTC.


Referensi Elemen

Referensi elemen menjelaskan elemen dan atribut kebijakan RevokeOAuthV2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

Atribut <RevokeOAuthV2>

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Kehadiran
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk sebagian besar kebijakan.

Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal.

false Opsional
enabled

Tetapkan ke true untuk menerapkan kebijakan.

Tetapkan ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur.

benar Opsional

Elemen <DisplayName>

Gunakan selain atribut name untuk melabeli kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan digunakan.

Kehadiran Opsional
Jenis String

Elemen <AppId>

Menentukan ID aplikasi developer token yang akan dibatalkan. Teruskan variabel yang berisi ID aplikasi atau ID aplikasi literal.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Default

request.formparam.app_id (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran

Opsional

Jenis String
Nilai valid

Variabel alur yang berisi string ID aplikasi, atau string literal.

Elemen <Cascade>

Jika true dan Anda memiliki token akses buram tradisional, maka token refresh dan token akses akan dicabut jika <AppId> atau <EndUserId> cocok. Jika Anda memiliki token akses JWT, maka hanya token refresh yang dikeluarkan dengan token akses yang dicabut. Berdasarkan desainnya, token akses JWT tidak dapat dicabut. Jika false, hanya token akses yang dicabut dan token refresh tidak berubah. Perilaku yang sama hanya berlaku untuk token akses buram. Token akses JWT tidak dapat dicabut.

<Cascade>false<Cascade>
Default

false

Kehadiran

Opsional

Jenis Boolean
Nilai valid true atau false

Elemen <EndUserId>

Menentukan ID pengguna akhir aplikasi dari token yang akan dibatalkan. Teruskan variabel yang berisi ID pengguna atau string token literal.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Default

request.formparam.enduser_id (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran

Opsional

Jenis String
Nilai valid

Variabel alur yang berisi string ID pengguna, atau string literal.

Elemen <RevokeBeforeTimestamp>

Mencabut token yang dikeluarkan sebelum stempel waktu. Elemen ini berfungsi dengan <AppId> dan <EndUserId> untuk memungkinkan Anda mencabut token sebelum waktu tertentu. Nilai defaultnya adalah waktu saat kebijakan dijalankan.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Default

Stempel waktu saat kebijakan dijalankan.

Kehadiran

Opsional

Jenis Bilangan bulat 64-bit (panjang) yang merepresentasikan jumlah milidetik yang telah berlalu sejak tengah malam, pada 1 Januari 1970 UTC.
Nilai valid

Variabel alur yang berisi stempel waktu, atau stempel waktu literal. Stempel waktu tidak boleh di masa mendatang dan tidak boleh sebelum 1 Januari 2014.

Variabel alur

Kebijakan RevokeOAuthV2 tidak menetapkan variabel alur.

Referensi error

Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.

Error runtime

Error ini dapat terjadi saat kebijakan dijalankan. Nama error yang ditampilkan di bawah adalah string yang ditetapkan ke variabel fault.name saat error terjadi. Lihat bagian variabel Error di bawah untuk mengetahui detail selengkapnya.

Kode kerusakan Status HTTP Penyebab
steps.oauth.v2.InvalidFutureTimestamp 500 Stempel waktu tidak boleh berupa waktu yang akan datang.
steps.oauth.v2.InvalidEarlyTimestamp 500 Stempel waktu tidak boleh lebih awal dari 1 Januari 2014.
steps.oauth.v2.InvalidTimestamp 500 Stempel waktu tidak valid.
steps.oauth.v2.EmptyAppAndEndUserId 500 AppdId dan EndUserId tidak boleh kosong.

Error saat deployment

Lihat pesan yang dilaporkan di UI untuk mengetahui informasi tentang error deployment.

Variabel error

Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime.

Variabel Dari mana Contoh
fault.name="fault_name" fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Contoh respons error

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

Contoh aturan error

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

Topik terkait