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, "access_token" (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, "refresh_token" (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ı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğ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 |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<AccessToken> öğ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. |
<AuthorizationCode> öğ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. |
<ClientId> öğ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. |
<IgnoreAccessTokenStatus> öğ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ış |
<RefreshToken> öğ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ı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes. The error names shown below are the strings
that are assigned to the fault.name
variable when an error occurs. See the Fault
variables section below for more details.
Fault code | HTTP status | Cause |
---|---|---|
steps.oauth.v2.access_token_expired |
500 | The access token sent to the policy is expired. |
steps.oauth.v2.authorization_code_expired |
500 | The authorization code sent to the policy is expired. |
steps.oauth.v2.invalid_access_token |
500 | The access token sent to the policy is invalid. |
steps.oauth.v2.invalid_client-invalid_client_id |
500 | The client ID sent to the policy is invalid. |
steps.oauth.v2.invalid_refresh_token |
500 | The refresh token sent to the policy is invalid. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 | The authorization code sent to the policy is invalid. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | Please see this Apigee Community post for information about troubleshooting this error. |
steps.oauth.v2.refresh_token_expired |
500 | The refresh token sent to the policy is expired. |
Deployment errors
Refer to the message reported in the UI for information about deployment errors.
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Example error response
{ "fault":{ "faultstring":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
Example fault rule
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>