OAuth V2 politikasını iptal et

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

politika simgesi

Genel Bakış

Geliştirici uygulama kimliği veya uygulama son kullanıcı kimliği ya da her ikisi ile ilişkili OAuth2 erişim jetonlarını iptal eder.

OAuth 2.0 erişim jetonu oluşturmak için OAuthv2 politikasını kullanın. Apigee tarafından oluşturulan jeton aşağıdaki biçimdedir:

{
  "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"
}

application_name öğesi, jetonla ilişkilendirilmiş geliştirici uygulama kimliğini içerir.

Apigee, varsayılan olarak jetona son kullanıcı kimliğini dahil etmez. OAuthv2 politikasına <AppEndUser> öğesini ekleyerek Apigee'yi son kullanıcı kimliğini içerecek şekilde yapılandırabilirsiniz:

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

Bu örnekte, son kullanıcı kimliğini app_enduser adlı bir sorgu parametresinde OAuthv2 politikasına iletin. Ardından son kullanıcı kimliği, app_enduser öğesindeki jetona dahil edilir:

{
 "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"
}

Geliştirici uygulama kimliğine göre iptal etme

Geliştirici uygulama kimliğiyle ilişkili OAuth2 erişim jetonlarını iptal edin. Apigee tarafından oluşturulan tüm OAuth2 erişim jetonları, jetonla ilişkili geliştirici uygulamasının kimliğini içerir. Ardından, ilgili uygulama kimliğine göre jetonları iptal edebilirsiniz.

  • Belirli bir geliştiricinin uygulama kimliklerinin listesini almak için Developer apps API'yi kullanın.

  • Bir uygulamayla ilgili ayrıntıları almak için Developer apps API'yi de kullanabilirsiniz.

Uygulama son kullanıcı kimliğine göre iptal etme

Belirli bir uygulamanın son kullanıcı kimliğiyle ilişkili OAuth2 erişim jetonlarını iptal edin. Bu, jetonların verildiği kullanıcının kimliğiyle ilişkili jetondur.

Varsayılan olarak, OAuth erişim jetonunda son kullanıcı kimliği alanı yoktur. OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine göre iptal edilmesini etkinleştirmek için OAuthv2 politikasını, yukarıda gösterildiği gibi jetona kullanıcı kimliğini dahil edecek şekilde yapılandırmanız gerekir.

Uygulama son kullanıcı kimliği almak için Developer apps API'yi kullanın.

Örnekler

Aşağıdaki örneklerde, OAuth2 erişim jetonlarını iptal etmek için OAuth V2 iptal politikası kullanılmaktadır.

Geliştirici uygulama kimliği

Erişim jetonlarını geliştirici uygulama kimliğine göre iptal etmek için politikanızda <AppId> öğesini kullanın.

Aşağıdaki örnekte, erişim jetonunun geliştirici uygulama kimliğinin app_id adlı bir sorgu parametresinde bulunması beklenir:

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

Politika, geliştirici uygulamasının kimliğini temel alarak erişim jetonunu iptal eder.

Zaman damgasından önce iptal etme

Belirli bir tarih ve saatten önce oluşturulan erişim jetonlarını geliştirici uygulama kimliğine göre iptal etmek için politikanızda <RevokeBeforeTimestamp> öğesini kullanın. <RevokeBeforeTimestamp> UTC sıfır zamanını milisaniye cinsinden belirtir. Bu tarihten önce verilen tüm jetonlar iptal edilir.

Aşağıdaki örnekte, 1 Temmuz 2019'dan önce oluşturulan bir geliştirici uygulamasının erişim jetonları iptal edilmektedir:

<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>

<RevokeBeforeTimestamp> öğesi, 1 Ocak 1970 UTC'de gece yarısından bu yana geçen milisaniye sayısını temsil eden 64 bitlik (uzun) bir tam sayı alır.


Öğe Referansı

Öğe referansında, RevokeOAuthV2 politikasının öğeleri ve özellikleri açıklanmaktadır.

<?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>

<RevokeOAuthV2> özellikleri

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

Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri harf, rakam, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakterden fazla olamaz.

İsteğe bağlı olarak, yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmek için false olarak ayarlayın. Bu, çoğu politika için beklenen bir davranıştır.

Bir politika başarısız olsa bile akış yürütmesinin devam etmesi için true olarak ayarlayın.

yanlış İsteğe bağlı
enabled

Politikayı zorunlu kılmak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Politika, bir akışa eklenmiş olsa bile uygulanmaz.

doğru İsteğe bağlı
async

Bu özelliğin desteği sonlandırılmıştır.

yanlış Kullanımdan kaldırıldı

<DisplayName> öğesi

Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi atlarsanız politikanın name özelliğinin değeri kullanılır.

Varlık İsteğe bağlı
Tür Dize

<AppId> öğesi

İptal edilecek jetonların geliştirici uygulama kimliğini belirtir. Uygulama kimliğini içeren bir değişken veya gerçek bir uygulama kimliği gönderin.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Varsayılan

request.formparam.app_id (x-www-form-urlencoded olarak kodlanmış ve istek gövdesinde belirtilmiş)

Varlık

İsteğe bağlı

Tür Dize
Geçerli değerler

Uygulama kimliği dizesi içeren bir akış değişkeni veya gerçek dize.

<Cascade> öğesi

true ise ve geleneksel opak erişim jetonunuz varsa <AppId> veya <EndUserId> eşleşirse hem yenileme jetonu hem de erişim jetonu iptal edilir. false ise yalnızca erişim jetonu iptal edilir ve yenileme jetonu değişmez. Aynı davranış yalnızca opak erişim jetonları için geçerlidir.

<Cascade>false<Cascade>
Varsayılan

yanlış

Varlık

İsteğe bağlı

Tür Boole
Geçerli değerler true veya false

<EndUserId> öğesi

İptal edilecek jetonun uygulama son kullanıcı kimliğini belirtir. Kullanıcı kimliğini içeren bir değişken veya gerçek bir jeton dizesi gönderin.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Varsayılan

request.formparam.enduser_id (x-www-form-urlencoded olarak kodlanmış ve istek gövdesinde belirtilmiş)

Varlık

İsteğe bağlı

Tür Dize
Geçerli değerler

Kullanıcı kimliği dizesi içeren bir akış değişkeni veya gerçek dize.

<RevokeBeforeTimestamp> öğesi

Zaman damgasından önce verilen jetonları iptal edin. Bu öğe, jetonları belirli bir zamandan önce iptal etmenize olanak tanımak için <AppId> ve <EndUserId> ile çalışır. Varsayılan değer, politikanın yürütüldüğü zamandır.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Varsayılan

Politikanın yürütüldüğü zaman damgası.

Varlık

İsteğe bağlı

Tür 1 Ocak 1970 UTC'de gece yarısından bu yana geçen milisaniye sayısını temsil eden 64 bitlik (uzun) tam sayı.
Geçerli değerler

Zaman damgası içeren bir akış değişkeni veya gerçek zaman damgası. Zaman damgası gelecekte olamaz ve 1 Ocak 2014'ten önce olamaz.

Akış değişkenleri

RevokeOAuthV2 politikası, akış değişkenlerini ayarlamaz.

Hata referansı

Bu bölümde, döndürülen hata kodları ve hata mesajları ile bu politika bir hata tetiklediğinde Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hataları ele almak için hata kuralları geliştiriyorsanız bu bilgileri bilmeniz önemlidir. Daha fazla bilgi edinmek için Politika hataları hakkında bilmeniz gerekenler ve Hataları ele alma başlıklı makaleleri inceleyin.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir. Aşağıda gösterilen hata adları, bir hata oluştuğunda fault.name değişkenine atanan dizelerdir. Daha fazla bilgi için aşağıdaki Hata değişkenleri bölümüne bakın.

Hata kodu HTTP durumu Neden
steps.oauth.v2.InvalidFutureTimestamp 500 Zaman damgası gelecekte olamaz.
steps.oauth.v2.InvalidEarlyTimestamp 500 Zaman damgası 1 Ocak 2014'ten önce olamaz.
steps.oauth.v2.InvalidTimestamp 500 Zaman damgası geçersiz.
steps.oauth.v2.EmptyAppAndEndUserId 500 Hem AppdId hem de EndUserId boş olamaz.

Dağıtım hataları

Dağıtım hataları hakkında bilgi edinmek için kullanıcı arayüzünde raporlanan mesaja bakın.

Hata değişkenleri

Bu değişkenler, bu politika çalışma zamanında bir hata tetiklediğinde ayarlanır.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Yazılım hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name, hatayı atan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name, hatayı atan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name, hatayı atan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Örnek hata yanıtı

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

Örnek hata kuralı

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

İlgili konular