Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Ringkasan
Mencabut token akses OAuth2 yang terkait dengan ID aplikasi developer atau ID pengguna akhir aplikasi, atau keduanya.
Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, 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 yang bernama app_enduser
.
ID pengguna akhir kemudian disertakan dalam token dalam 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" }
Cabut menurut ID aplikasi developer
Cabut token akses OAuth2 yang terkait dengan ID aplikasi developer. Semua token akses OAuth2 yang dibuat oleh Apigee menyertakan ID aplikasi developer yang terkait dengan token. Anda kemudian dapat mencabut token berdasarkan ID aplikasi tersebut.
Untuk mendapatkan daftar ID aplikasi untuk developer tertentu, gunakan:
- Metode: organizations.developers.apps.list API untuk mendapatkan daftar aplikasi yang terkait dengan developer.
- Metode: organizations.developers.apps.get API untuk mendapatkan detail tentang aplikasi, termasuk ID aplikasi.
Cabut menurut ID pengguna akhir aplikasi
Cabut token akses OAuth2 yang terkait dengan ID pengguna akhir aplikasi tertentu. Ini tokennya yang terkait dengan ID pengguna yang menjadi tujuan token diterbitkan.
Secara default, tidak ada kolom untuk ID pengguna akhir di token akses OAuth. Untuk mengaktifkan pencabutan Token akses OAuth 2.0 berdasarkan ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuthv2 untuk menyertakan ID pengguna di token, seperti yang ditunjukkan di atas.
Untuk mendapatkan ID pengguna akhir aplikasi, gunakan Metode: organizations.developers.get.
Sampel
Contoh berikut menggunakan kebijakan Cabut OAuth V2 untuk mencabut token akses OAuth2.
ID aplikasi developer
Untuk mencabut token akses berdasarkan ID aplikasi developer, gunakan elemen <AppId>
di
kebijakan Anda.
Contoh berikut memperkirakan ID aplikasi developer dari token akses dalam parameter kueri yang 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>
Dengan mempertimbangkan ID aplikasi developer, kebijakan akan mencabut token akses.
Cabut sebelum stempel waktu
Untuk mencabut token akses berdasarkan 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>
menggunakan bilangan bulat 64-bit (panjang) yang mewakili
jumlah milidetik yang berlalu sejak tengah malam, pada 1 Januari 1970 UTC.
Referensi Elemen
Referensi elemen menjelaskan elemen dan atribut kebijakan CabutOAuthV2.
<?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>
<CabutOAuthV2> atribut
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
<AppId> elemen
Menentukan ID aplikasi developer token yang akan dicabut. Teruskan variabel yang berisi atau ID aplikasi literal.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
Default |
|
---|---|
Kehadiran |
Opsional |
Jenis | String |
Nilai valid |
Variabel flow yang berisi string ID aplikasi atau string literal. |
<Cascade> elemen
Jika true
dan Anda memiliki token akses buram tradisional, kedua
token pembaruan dan token akses akan
dicabut jika <AppId>
atau
<EndUserId>
cocok. Jika Anda memiliki token akses JWT, maka hanya
token pembaruan yang diterbitkan
bersama token akses dicabut. Secara desain, token akses JWT
tidak dapat dicabut.
Jika false
,
hanya token akses yang dicabut
dan token pembaruan tidak berubah. Perilaku yang sama berlaku
hanya untuk token akses buram. Token akses JWT tidak dapat dicabut.
<Cascade>false<Cascade>
Default |
salah |
---|---|
Kehadiran |
Opsional |
Jenis | Boolean |
Nilai valid | true atau false |
<EndUserId> elemen
Menentukan ID pengguna akhir aplikasi untuk token yang akan dicabut. Teruskan variabel yang berisi ID pengguna atau string token literal.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
Default |
|
---|---|
Kehadiran |
Opsional |
Jenis | String |
Nilai valid |
Variabel flow yang berisi string ID pengguna, atau string literal. |
<RevokeBeforeTimestamp> elemen
Cabut 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 mewakili jumlah milidetik yang berlalu sejak tengah malam, pada 1 Januari 1970 UTC. |
Nilai valid |
Variabel flow yang berisi stempel waktu, atau stempel waktu literal. Stempel waktu tidak boleh di masa mendatang dan tidak boleh sebelum 1 Januari 2014. |
Variabel flow
Kebijakan CabutOAuthV2 tidak menetapkan variabel alur.
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi. Nama error yang ditampilkan di bawah ini adalah string yang ditetapkan ke variabel fault.name
ketika terjadi error. Lihat bagian variabel Fault di bawah untuk detail selengkapnya.
Kode kesalahan | Status HTTP | Penyebab |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | Stempel waktu tidak boleh di masa mendatang. |
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 kesalahan
Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Contoh respons error
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
Contoh aturan kesalahan
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>