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ı
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>