GetOAuthV2Info politikası

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

Ne?

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

Bu politika, bir jetondaki veya yetkilendirme kodundaki değere göre dinamik ve koşullu davranış yapılandırmanız gerektiğinde kullanışlıdır. Jeton doğrulama her gerçekleştiğinde değişkenler, jeton özelliklerinin değerleriyle otomatik olarak doldurulur. Ancak 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. Ayrıca Jetonları ve Yetkilendirme Kodlarını Özelleştirme başlıklı makaleye de bakın.

Bu politikaya ilettiğiniz 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çinde erişmek için Get OAuth V2 Info politikası kullanılmaktadır.

Erişim jetonu

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

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

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

Erişim jetonu verildiğinde politika, jetonun profilini arar ve bir dizi değişkeni profil verileriyle doldurur.

Ardından, JavaScript veya başka bir yöntem kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnekte, JavaScript kullanılarak erişim jetonuyla ilişkili kapsamların nasıl alındığı gösterilmektedir:

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

Bu değişkenlere kodda erişmek için "oauthv2accesstoken" ön ekini eklemeniz gerektiğini unutmayın. Erişim jetonu aracılığıyla kullanılabilen değişkenlerin tam listesi için Erişim jetonu değişkenleri başlıklı makaleyi inceleyin.

Yetkilendirme kodu

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

Aşağıdaki örnekte, erişim jetonunun "code" 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 verildiğinde politika, kodun bilgilerini arar ve bir dizi değişkeni yetkilendirme kodu verileriyle doldurur.

Ardından, JavaScript veya başka bir yöntem kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnekte, JavaScript kullanılarak yetkilendirme koduyla ilişkili bir özel özellik alınmaktadır:

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

Bu değişkenlere kodda erişmek için "oauthv2authcode" önekini eklemeniz gerektiğini unutmayın. Yetkilendirme kodu aracılığıyla kullanılabilen değişkenlerin tam listesi için Yetkilendirme kodu değişkenleri başlıklı makaleyi inceleyin.

Yenileme jetonu

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

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

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

Yenileme jetonu verildiğinde politika, yenileme jetonunun bilgilerini arar ve bir dizi değişkeni yenileme jetonu verileriyle doldurur.

Ardından, bu değişkenlere JavaScript veya başka bir yöntemle erişebilirsiniz. Aşağıdaki örnekte, JavaScript kullanılarak yenileme jetonuyla ilişkili bir özel özellik alınmaktadır:

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

Koddaki değişkenlere erişmek için "oauthv2refreshtoken" önekini eklemeniz gerektiğini unutmayın. Yenileme jetonu aracılığıyla kullanılabilen değişkenlerin tam listesi için Yenileme jetonu değişkenleri başlıklı makaleyi inceleyin.

Statik

Nadiren de olsa bazı durumlarda, statik olarak yapılandırılmış bir jetonun profilini almanız gerekebilir (değişken aracılığıyla erişilemeyen bir jeton). Bunu, erişim jetonunun değerini bir öğe olarak sağlayarak 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.

Müşteri Kimliği

Bu örnekte, istemci kimliği kullanılarak istemci uygulamasıyla ilgili bilgilerin nasıl alınacağı gösterilmektedir. Politika yürütüldüğünde bir dizi değişkeni müşteri bilgileriyle doldurur. Bu durumda politika, istemci kimliğinin client_id adlı bir sorgu parametresinde bulunmasını bekler. Politika, istemci kimliğini kullanarak istemcinin profilini arar ve bir dizi değişkeni profil verileriyle doldurur. Değişkenlerin önüne oauthv2client. eklenir.

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

Ardından, JavaScript veya başka bir yöntem kullanarak değişkenlere erişebilirsiniz. Örneğin, JavaScript kullanarak istemci uygulamasıyla ilişkili geliştirici uygulama adını ve geliştirici e-posta adresini 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çermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

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

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<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 jetonunun profilini alır. Erişim jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir durum) iletirsiniz. Bu örnekte, erişim jetonu bir istekte iletilen sorgu parametresinden alınır. İptal edilmiş veya süresi dolmuş bir jetonla ilgili bilgileri döndürmek istiyorsanız <IgnoreAccessTokenStatus> öğesini kullanın.

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

Varsayılan:

request.formparam.access_token (x-www-form-urlencoded ve istek gövdesinde belirtilir)

Mevcut olma:

İsteğe bağlı

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

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


<AuthorizationCode> öğesi

Yetkilendirme kodunun profilini alır. Yetkilendirme kodu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir durum) iletiyorsunuz. Bu örnekte, kimlik doğrulama kodu bir istekte iletilen sorgu parametresinden alınır. Bu işlemle doldurulan değişkenlerin listesi için "Akış değişkenleri" başlıklı makaleyi inceleyin.

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

Varsayılan:

request.formparam.access_token (x-www-form-urlencoded ve istek gövdesinde belirtilir)

Mevcut olma:

İsteğe bağlı

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

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

<ClientId> öğesi

Bir müşteri kimliğiyle ilgili bilgileri alır. Bu örnekte, istemci kimliği bir istekte iletilen sorgu parametresinden alınır. Bu işlemle doldurulan değişkenlerin listesi için "Akış değişkenleri" başlıklı makaleyi inceleyin.

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

Varsayılan:

request.formparam.access_token (x-www-form-urlencoded ve istek gövdesinde belirtilir)

Mevcut olma:

İsteğe bağlı

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

<IgnoreAccessTokenStatus> öğesi

Jetonun süresi dolmuş veya iptal edilmiş olsa bile jeton bilgilerini döndürür. Bu öğe yalnızca erişim jetonlarıyla kullanılabilir. Yenileme jetonları ve yetkilendirme kodları gibi diğer öğelerle ilgili bilgiler, varsayılan olarak durumlarına bakılmaksızın döndürülür.

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

Varsayılan:

yanlış

Mevcut olma:

İsteğe bağlı

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

<RefreshToken> öğesi

Yenileme jetonunun profilini alır. Yenileme jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir durum) iletiyorsunuz. Bu örnekte, yenileme jetonu bir istekte iletilen sorgu parametresinden alınır. Bu işlemle doldurulan değişkenlerin listesi için "Akış değişkenleri" başlıklı makaleyi inceleyin.

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

Varsayılan:

request.formparam.access_token (x-www-form-urlencoded ve istek gövdesinde belirtilir)

Mevcut olma:

İsteğe bağlı

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

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

Akış değişkenleri

GetOAuthV2Info politikası bu değişkenleri doldurur ve genellikle profil verilerine ihtiyacınız olduğu ancak henüz izin verilmediği veya doğrulama yapılmadığı durumlarda kullanılır. .

Müşteri kimliği 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 politika şemaları GitHub'da mevcuttur.

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir. Aşağıda gösterilen hata adları dizedir fault.name değişkenine atanır. Hatayı Göster değişkenler 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 dolmuş.
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çersizdir.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Lütfen bkz. bu Apigee Topluluk gönderisine göz atın.
steps.oauth.v2.refresh_token_expired 500 Politikaya gönderilen yenileme jetonunun süresi dolmuş.

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, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi 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"
      }
   }
}

Örnek hata kuralı

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

İlgili konular