GetOAuthV2Info politikası

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

Ne

Erişim jetonları, yenileme jetonları, yetkilendirme kodları ve istemci uygulaması özelliklerinin özelliklerini alıp değişkenleri bu özelliklerin değerleriyle doldurur.

Bu politika, jeton veya yetkilendirme kodundaki bir değere dayalı dinamik ve koşullu davranışı yapılandırmanız gerektiğinde yararlıdır. Jeton doğrulaması her gerçekleştiğinde, değişkenler otomatik olarak jeton özelliklerinin değerleriyle doldurulur. Bununla birlikte, jeton doğrulamasının gerçekleşmediği durumlarda, değişkenleri bir jetonun özellik değerleriyle açıkça doldurmak için bu özelliği kullanabilirsiniz. Jetonları ve Yetkilendirme Kodlarını Özelleştirme konusuna da bakın.

Bu politikaya aktardığınız bir erişim jetonu geçerli olmalıdır. Aksi takdirde politika, invalid_access_token hatası verir.

Örnekler

Aşağıdaki örneklerde, OAuth2 iş akışının çeşitli bileşenleri hakkında bilgi almak ve ardından bu bilgilere kod içinden erişmek için OAuth V2 Bilgilerini Alma politikası kullanılmaktadır.

Erişim jetonu

Erişim jetonuna referans almak için politikanızda <AccessToken> öğesini kullanın.

Aşağıdaki örnekte, erişim jetonunun "access_token" adlı bir sorgu parametresinde bulunması beklenmektedir (gerçek uygulama ayrıntıları size bağlıdır):

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

Politika, erişim jetonuna göre jetonun profilini arar ve bir değişken grubunu profil verileriyle doldurur.

Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanarak erişim jetonuyla ilişkili kapsamları almaktadır:

var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');

Bu değişkenlere kodda erişmek için başına "oauthv2accesstoken" eklemeniz gerektiğini unutmayın. Erişim jetonu üzerinden kullanılabilen değişkenlerin tam listesi için Erişim jetonu değişkenleri bölümüne bakın.

Yetkilendirme kodu

Yetkilendirme kodu özelliklerini almak için politikanızda <AuthorizationCode> öğesini kullanın.

Aşağıdaki örnekte, erişim jetonunun "kod" adlı bir form parametresinde bulunması beklenir (gerçek uygulama ayrıntıları size bağlıdır):

<GetOAuthV2Info name="MyAuthCodeAttrsPolicy">
  <AuthorizationCode ref="request.formparam.code"></AuthorizationCode>
</GetOAuthV2Info>

Yetkilendirme kodu kullanıldığında politika, kod bilgilerini arar ve bir değişken grubunu yetkilendirme kodu verileriyle doldurur.

Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanarak yetkilendirme koduyla ilişkili bir özel özelliği alır:

var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);

Bu değişkenlere kodda erişmek için "oauthv2authcode" ön ekini kullanmanız gerektiğini unutmayın. Yetkilendirme kodu üzerinden kullanılabilen değişkenlerin tam listesi için Yetkilendirme kodu değişkenleri bölümüne bakın.

Yenileme jetonu

Yenileme jetonu özelliklerini almak için politikanızda <RefreshToken> öğesini kullanın.

Aşağıdaki örnekte, "refresh_token" adlı bir sorgu parametresinde erişim jetonunun bulunması beklenmektedir (gerçek uygulama ayrıntıları size bağlıdır):

<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy">
  <RefreshToken ref="request.queryparam.refresh_token"/>
</GetOAuthV2Info>

Politika, yenileme jetonuna göre yenileme jetonunun bilgilerini arar ve bir değişken grubunu, yenileme jetonu verileriyle doldurur.

Daha sonra, bu değişkenlere JavaScript veya başka bir araç kullanarak erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanılarak yenileme jetonuyla ilişkili bir özel özellik almaktadır:

var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);

Koddaki değişkenlere erişmek için başına "oauthv2refreshtoken" eklemeniz gerektiğini unutmayın. Yenileme jetonuyla kullanılabilen değişkenlerin tam listesi için Jeton değişkenlerini yenileme bölümüne bakın.

Statik

Bazı nadir durumlarda, statik olarak yapılandırılmış bir jetonun (değişken aracılığıyla erişilemeyen) profilini almanız gerekebilir. Erişim jetonunun değerini bir öğe olarak sağlayarak bunu yapabilirsiniz.

<GetOAuthV2Info name="GetTokenAttributes">
  <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken>
</GetOAuthV2Info>

Bu işlemi diğer tüm jeton türleriyle (istemci kimliği, yetkilendirme kodu ve yenileme jetonları) de yapabilirsiniz.

İstemci Kimliği

Bu örnekte, istemci kimliğini kullanarak istemci uygulamasıyla ilgili bilgilerin nasıl alınacağı gösterilmektedir. Politika yürütüldükten sonra, bir grup değişkene müşteri bilgileriyle doldurulur. Bu durumda politika, istemci kimliğini client_id adlı bir sorgu parametresinde bulmayı bekler. Politika, istemci kimliğini kullanarak istemcinin profilini arar ve bir değişken grubunu profil verileriyle doldurur. Değişkenlerin önüne oauthv2client. eklenir

<GetOAuthV2Info name="GetClientAttributes">
  <ClientId ref="request.queryparam.client_id"></ClientId>
</GetOAuthV2Info>

Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Örneğin, JavaScript kullanarak istemci uygulamasıyla ilişkilendirilmiş geliştirici uygulaması adını ve geliştirici e-postasını almak için:

context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");

Öğe Referansı

Öğe referansı, GetOAuthV2Info politikasının öğelerini ve özelliklerini açıklar.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1"
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref="variable"></AccessToken>
    <AuthorizationCode ref="variable"></AuthorizationCode>
    <ClientId ref="variable"></ClientId>
    <RefreshToken ref="variable"></RefreshToken>
</GetOAuthV2Info>

<GetOAuthV2Info> özellikleri

<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-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, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakterden uzun olamaz.

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

Yok Gerekli
continueOnError

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

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanmaz.

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde 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 çıkarırsanız politikanın name özelliğinin değeri kullanılır.

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

<AccessToken> öğesi

Erişim jetonu için profili alır. Erişim jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte, erişim jetonu bir istekte geçirilen sorgu parametresinden alınmıştır. İptal edilmiş veya süresi dolmuş bir jetonla ilgili bilgileri döndürmek isterseniz <ignoreAccessTokenStatus> öğesini kullanın.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

Varsayılan:

request.formparam.access_token (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Erişim jetonu dizesi içeren akış değişkeni veya harflerden oluşan bir dize.


<AuthorizationCode> öğesi

Yetkilendirme kodu profilini alır. Yetkilendirme kodu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte, yetkilendirme kodu bir istekte iletilen sorgu parametresinden alınır. Bu işlem tarafından doldurulan değişkenlerin listesi için "Akış değişkenleri" bölümüne bakın.

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

Varsayılan:

request.formparam.access_token (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Yetkilendirme kodu dizesi içeren akış değişkeni veya harflerden oluşan bir dize.

<ClientId> öğesi

Bir istemci kimliğiyle ilgili bilgileri getirir. Bu örnekte, istemci kimliği bir istekte geçirilen sorgu parametresinden alınır. Bu işlemin doldurulduğu değişkenlerin listesi için "Akış değişkenleri" bölümüne bakın.

<ClientId ref="request.queryparam.client_id"></ClientId>

Varsayılan:

request.formparam.access_token (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Yetkilendirme kodu dizesi içeren akış değişkeni veya harflerden oluşan bir dize.

<ignoreAccessTokenStatus> öğesi

Jetonun süresi dolmuş veya jetonu iptal edilmiş olsa bile jeton bilgilerini döndürür. Bu öğe yalnızca erişim jetonlarıyla kullanılabilir. Varsayılan olarak, yenileme jetonları ve yetkilendirme kodları gibi diğer varlıklar için durumlarına bakılmaksızın döndürülür.

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

Varsayılan:

false

Bulunma:

İsteğe bağlı

Tür: Boole
Geçerli değerler: doğru veya yanlış

<YenileToken> öğesi

Yenileme jetonu için profili alır. Yenileme jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte yenileme jetonu, bir istekte geçirilen sorgu parametresinden alınır. Bu işlem tarafından doldurulan değişkenlerin listesi için "Akış değişkenleri" bölümüne bakın.

<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>

Varsayılan:

request.formparam.access_token (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Yenileme jetonu dizesi içeren bir akış değişkeni veya harflerden oluşan bir dize.

Akış değişkenleri

Bu değişkenleri GetOAuthV2Info politikası doldurur ve genellikle profil verilerine ihtiyaç duyduğunuz ancak henüz bir izin veya doğrulamanın gerçekleşmediği durumlarda kullanılır. .

Client ID değişkenleri

Bu değişkenler, ClientId öğesi ayarlandığında doldurulur:

oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}

Erişim jetonu değişkenleri

Bu değişkenler AccessToken öğesi ayarlandığında doldurulur:

oauthv2accesstoken.{policy_name}.developer.id
oauthv2accesstoken.{policy_name}.developer.app.name
oauthv2accesstoken.{policy_name}.developer.app.id
oauthv2accesstoken.{policy_name}.developer.email

oauthv2accesstoken.{policy_name}.organization_name
oauthv2accesstoken.{policy_name}.api_product_list

oauthv2accesstoken.{policy_name}.access_token
oauthv2accesstoken.{policy_name}.scope
oauthv2accesstoken.{policy_name}.expires_in //in seconds
oauthv2accesstoken.{policy_name}.status
oauthv2accesstoken.{policy_name}.client_id
oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2accesstoken.{policy_name}.refresh_token
oauthv2accesstoken.{policy_name}.refresh_token_status
oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2accesstoken.{policy_name}.refresh_count
oauthv2accesstoken.{policy_name}.refresh_token_issued_at
oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Yetkilendirme kodu değişkenleri

Bu değişkenler, AuthorizationCode öğesi ayarlandığında doldurulur:

oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope       
oauthv2authcode.{policy_name}.redirect_uri 
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}

Yenileme jetonu değişkenleri

Bu değişkenler, refreshToken öğesi ayarlandığında doldurulur:

oauthv2refreshtoken.{policy_name}.developer.id
oauthv2refreshtoken.{policy_name}.developer.app.name
oauthv2refreshtoken.{policy_name}.developer.app.id
oauthv2refreshtoken.{policy_name}.developer.email
oauthv2refreshtoken.{policy_name}.organization_name
oauthv2refreshtoken.{policy_name}.api_product_list

oauthv2refreshtoken.{policy_name}.access_token
oauthv2refreshtoken.{policy_name}.scope
oauthv2refreshtoken.{policy_name}.expires_in //in seconds

oauthv2refreshtoken.{policy_name}.status
oauthv2refreshtoken.{policy_name}.client_id
oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2refreshtoken.{policy_name}.refresh_token
oauthv2refreshtoken.{policy_name}.refresh_token_status
oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2refreshtoken.{policy_name}.refresh_count
oauthv2refreshtoken.{policy_name}.refresh_token_issued_at
oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Şema

Her politika türü, bir XML şeması (.xsd) ile tanımlanır. Referans olarak, GitHub'da politika şemaları bulunabilir.

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir. Aşağıda gösterilen hata adları, bir hata meydana geldiğinde 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.access_token_expired 500 Politikaya gönderilen erişim jetonunun süresi doldu.
steps.oauth.v2.authorization_code_expired 500 Politikaya gönderilen yetkilendirme kodunun süresi doldu.
steps.oauth.v2.invalid_access_token 500 Politikaya gönderilen erişim jetonu geçersiz.
steps.oauth.v2.invalid_client-invalid_client_id 500 Politikaya gönderilen istemci kimliği geçersiz.
steps.oauth.v2.invalid_refresh_token 500 Politikaya gönderilen yenileme jetonu geçersiz.
steps.oauth.v2.invalid_request-authorization_code_invalid 500 Politikaya gönderilen yetkilendirme kodu geçersiz.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Bu hatayı giderme konusunda bilgi edinmek için lütfen bu Apigee Topluluğu yayınına göz atın.
steps.oauth.v2.refresh_token_expired 500 Politikaya gönderilen yenileme jetonunun süresi doldu.

Dağıtım hataları

Dağıtım hataları hakkında bilgi için kullanıcı arayüzünde bildirilen 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 Çalışma zamanı 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, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name, hataya neden olan 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, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Örnek hata yanıtı

{  
   "fault":{  
      "faultstring":"ClientId is Invalid",
      "detail":{  
         "errorcode":"keymanagement.service.invalid_client-invalid_client_id"
      }
   }
}

Hata kuralı örneği

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

İlgili konular