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ı. İ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> öğ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>