GetOAuthV2Info politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

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

Bu politika, dinamik, koşullu davranışı bir değere göre yapılandırmanız gerektiğinde yararlı olur belirtmelisiniz. Jeton doğrulaması her gerçekleştiğinde, değişkenler otomatik olarak doldurulur değerleriyle birlikte kullanabilirsiniz. Ancak jeton doğrulamasının gerçekleşmediği durumlarda , bu özelliği bir jetonun özellik değerleriyle değişkenleri açık bir şekilde doldurmak için kullanabilir. Şu kaynakları da inceleyin Jetonları ve Yetkilendirme Kodları bölümüne bakın.

Bu politikaya ilettiğiniz bir erişim jetonu geçerli olmalıdır, aksi takdirde politika bir invalid_access_token hata.

Örnekler

Aşağıdaki örnekler, OAuth V2 Bilgisini Alma politikasını kullanarak, bileşenlerine ayırabilir ve ardından bu bilgilere kod içinden erişebilirsiniz.

Erişim jetonu

Bir erişim jetonuna referans almak için şurada <AccessToken> öğesini kullanın: politikanızı ihlal eder.

Aşağıdaki örnekte erişim jetonunu, &quot;access_token&quot; (gerçek uygulama ayrıntıları size bağlıdır):

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

Erişim jetonuyla birlikte politika, jetonun profilini arar ve jetonun bir kümesini doldurur değiştirebilirsiniz.

Ardından, JavaScript veya başka araçlar kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek JavaScript kullanarak erişim jetonuyla ilişkili kapsamları alır:

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

Bu değişkenlere kodda erişmek için değişkenlerin önüne "oauthv2accesstoken" olarak ayarlanır. Erişim jetonuyla kullanılabilen değişkenlerin tam listesi için bkz. Erişim jetonu değişkenleri.

Yetkilendirme kodu

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

Aşağıdaki örnekte, erişim jetonunu bir formda bulması beklenmektedir. "code" adlı parametre (gerçek uygulama ayrıntıları size bağlıdır):

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

Yetkilendirme kodundan dolayı politika, kod bilgilerini arar ve değişkenlerine karşılık gelir.

Ardından, JavaScript veya başka araçlar kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek değeri, JavaScript kullanarak yetkilendirme koduyla ilişkilendirilmiş özel bir özellik alır:

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

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

Yenileme jetonu

Yenileme jetonu özelliklerini almak için<RefreshToken> politikası.

Aşağıdaki örnekte erişim jetonunu, &quot;refresh_token&quot; (gerçek uygulama ayrıntıları size bağlıdır):

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

Yenileme jetonuyla birlikte politika, yenileme jetonunun bilgilerini arar ve Yenileme jetonu verilerine sahip bir değişken grubu.

Ardından, bu değişkenlere JavaScript veya başka araçlar kullanarak erişebilirsiniz. Aşağıdakiler örnek, JavaScript kullanarak yenileme jetonuyla ilişkilendirilmiş özel bir özellik alır:

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

Koddaki değişkenlere erişmek için değişkenlerin önüne "oauthv2refreshtoken" yazılmalıdır. Yenileme jetonuyla kullanılabilen değişkenlerin tam listesi için bkz. Jeton değişkenlerini yenileyin.

Statik

Bazı nadir durumlarda, statik olarak yapılandırılmış bir jetonun profilini (tek bir kod) bir değişken üzerinden erişilemeyen) sağlayın. Bunu, erişim jetonunu ele alalım.

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

Bunu diğer tüm jeton türleriyle (istemci kimliği, yetkilendirme kodu ve yenileme) yapabilirsiniz jeton) de bulunur.

İstemci Kimliği

Bu örnekte, istemci kimliği kullanılarak istemci uygulaması hakkında nasıl bilgi alınacağı gösterilmektedir. Yürütmenin ardından politika, bir değişken grubunu istemci bilgileriyle doldurur. Burada durumunda, politika bir sorgu parametresinde istemci kimliğini bulmayı bekler. client_id olarak adlandırıldı. İstemci kimliği dikkate alındığında politika, müşterinin profili oluşturur ve profil verileriyle bir değişken kümesini doldurur. Değişkenler oauthv2client. ön ekini alır

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

Ardından, JavaScript veya başka araçlar kullanarak değişkenlere erişebilirsiniz. Örneğin, istemci uygulamasıyla ilişkilendirilmiş geliştirici uygulaması adı ve JavaScript:

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

<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

&lt;AccessToken&gt; öğe

Erişim jetonu için profil alır. Örneğin, erişim jetonu dizesi veya düz jeton dizesi (nadir durum). Bu örnekte erişim jetonu bir istekte geçirilen sorgu parametresinden alınır. <ignoreAccessTokenStatus> öğesine dokunun.

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

Varsayılan:

request.formparam.access_token (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İ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 değer dizesi.


&lt;AuthorizationCode&gt; öğe

Yetkilendirme kodu için profili alır. Parametrenizde yetkilendirme kodu dizesi veya düz jeton dizesi (nadir durumda olan bir durum). Bu örnekte, yetkilendirme kodu bir istekte geçirilen sorgu parametresinden alınır. Bu işlemi 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 (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İsteğe bağlı

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

Kimlik doğrulama kodu dizesi içeren bir akış değişkeni veya değişmez değer dizesi.

&lt;ClientId&gt; öğe

Bir istemci kimliğiyle ilgili bilgileri getirir. Bu örnekte, sorgu parametresinden alınır. Bu işlemle doldurulan değişkenlerin bir 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 (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Kimlik doğrulama kodu dizesi içeren bir akış değişkeni veya değişmez değer dizesi.

&lt;IgnoreAccessTokenStatus&gt; öğe

Jetonun süresi dolmuş veya jeton iptal edilmiş olsa bile jeton bilgilerini döndürür. Bu öğe yalnızca erişim jetonlarıyla birlikte kullanılmalıdır. Yenileme jetonları ve yetkilendirme gibi diğer varlıklarla ilgili bilgiler kodları, varsayılan olarak 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ış

&lt;RefreshToken&gt; öğe

Yenileme jetonuna ilişkin profili alır. Örneğin, yenileme jetonu dizesini veya düz jeton dizesi (nadiren karşılaşılan) Bu örnekte, yenileme jetonu bir istekte geçirilen sorgu parametresinden alınır. Bu işlemi 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 (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İ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 değer dizesi.

Akış değişkenleri

GetOAuthV2Info politikası bu değişkenleri doldurur ve genellikle ancak henüz bir izin veya doğrulama gerçekleşmediyse profil verilerine ihtiyaç duyuyor. .

İstemci 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}

Jeton değişkenlerini yenileyin

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ıyla (.xsd) tanımlanır. Referans olması amacıyla politika şemaları GitHub'da bulabilirsiniz.

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