Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Erişim jetonları, yenileme jetonları, yetkilendirme kodları ve istemci uygulaması özelliklerinin özelliklerini alıp değişkenleri bu özelliklerin değerleriyle doldurur.
Bu politika, jeton veya yetkilendirme kodundaki bir değere dayalı dinamik ve koşullu davranışı yapılandırmanız gerektiğinde yararlıdır. Jeton doğrulaması her gerçekleştiğinde, değişkenler otomatik olarak jeton özelliklerinin değerleriyle doldurulur. Bununla birlikte, 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. Jetonları ve Yetkilendirme Kodlarını Özelleştirme konusuna da bakın.
Bu politikaya aktardığınız bir 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çinden erişmek için OAuth V2 Bilgilerini Alma politikası kullanılmaktadır.
Erişim jetonu
Erişim jetonuna referans almak için politikanızda <AccessToken>
öğesini kullanın.
Aşağıdaki örnekte, erişim jetonunun "access_token" adlı bir sorgu parametresinde bulunması beklenmektedir (gerçek uygulama ayrıntıları size bağlıdır):
<GetOAuthV2Info name="MyTokenAttrsPolicy"> <AccessToken ref="request.queryparam.access_token"></AccessToken> </GetOAuthV2Info>
Politika, erişim jetonuna göre jetonun profilini arar ve bir değişken grubunu profil verileriyle doldurur.
Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanarak erişim jetonuyla ilişkili kapsamları almaktadır:
var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');
Bu değişkenlere kodda erişmek için başına "oauthv2accesstoken" eklemeniz gerektiğini unutmayın. Erişim jetonu üzerinden kullanılabilen değişkenlerin tam listesi için Erişim jetonu değişkenleri bölümüne bakın.
Yetkilendirme kodu
Yetkilendirme kodu özelliklerini almak için politikanızda <AuthorizationCode>
öğesini kullanın.
Aşağıdaki örnekte, erişim jetonunun "kod" 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 kullanıldığında politika, kod bilgilerini arar ve bir değişken grubunu yetkilendirme kodu verileriyle doldurur.
Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanarak yetkilendirme koduyla ilişkili bir özel özelliği alır:
var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);
Bu değişkenlere kodda erişmek için "oauthv2authcode" ön ekini kullanmanız gerektiğini unutmayın. Yetkilendirme kodu üzerinden kullanılabilen değişkenlerin tam listesi için Yetkilendirme kodu değişkenleri bölümüne bakın.
Yenileme jetonu
Yenileme jetonu özelliklerini almak için politikanızda <RefreshToken>
öğesini kullanın.
Aşağıdaki örnekte, "refresh_token" adlı bir sorgu parametresinde erişim jetonunun bulunması beklenmektedir (gerçek uygulama ayrıntıları size bağlıdır):
<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy"> <RefreshToken ref="request.queryparam.refresh_token"/> </GetOAuthV2Info>
Politika, yenileme jetonuna göre yenileme jetonunun bilgilerini arar ve bir değişken grubunu, yenileme jetonu verileriyle doldurur.
Daha sonra, bu değişkenlere JavaScript veya başka bir araç kullanarak erişebilirsiniz. Aşağıdaki örnek, JavaScript kullanılarak yenileme jetonuyla ilişkili bir özel özellik almaktadır:
var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);
Koddaki değişkenlere erişmek için başına "oauthv2refreshtoken" eklemeniz gerektiğini unutmayın. Yenileme jetonuyla kullanılabilen değişkenlerin tam listesi için Jeton değişkenlerini yenileme bölümüne bakın.
Statik
Bazı nadir durumlarda, statik olarak yapılandırılmış bir jetonun (değişken aracılığıyla erişilemeyen) profilini almanız gerekebilir. Erişim jetonunun değerini bir öğe olarak sağlayarak bunu 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.
İstemci Kimliği
Bu örnekte, istemci kimliğini kullanarak istemci uygulamasıyla ilgili bilgilerin nasıl alınacağı gösterilmektedir.
Politika yürütüldükten sonra, bir grup değişkene müşteri bilgileriyle doldurulur. Bu durumda politika, istemci kimliğini client_id
adlı bir sorgu parametresinde bulmayı bekler. Politika, istemci kimliğini kullanarak istemcinin profilini arar ve bir değişken grubunu profil verileriyle doldurur. Değişkenlerin önüne oauthv2client.
eklenir
<GetOAuthV2Info name="GetClientAttributes"> <ClientId ref="request.queryparam.client_id"></ClientId> </GetOAuthV2Info>
Daha sonra, JavaScript veya başka bir araç kullanarak değişkenlere erişebilirsiniz. Örneğin, JavaScript kullanarak istemci uygulamasıyla ilişkilendirilmiş geliştirici uygulaması adını ve geliştirici e-postasını 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ı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin 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 özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<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 jetonu için profili alır. Erişim jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte, erişim jetonu bir istekte geçirilen sorgu parametresinden alınmıştır. İptal edilmiş veya süresi dolmuş bir jetonla ilgili bilgileri döndürmek isterseniz <ignoreAccessTokenStatus> öğesini kullanın.
<AccessToken ref="request.queryparam.access_token"></AccessToken>
Varsayılan: |
request.formparam.access_token (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL) |
Bulunma: |
İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: |
Erişim jetonu dizesi içeren akış değişkeni veya harflerden oluşan bir dize. |
<AuthorizationCode> öğesi
Yetkilendirme kodu profilini alır. Yetkilendirme kodu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte, yetkilendirme kodu bir istekte iletilen sorgu parametresinden alınır. Bu işlem tarafından doldurulan değişkenlerin listesi 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 (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL) |
Bulunma: |
İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: |
Yetkilendirme kodu dizesi içeren akış değişkeni veya harflerden oluşan bir dize. |
<ClientId> öğesi
Bir istemci kimliğiyle ilgili bilgileri getirir. Bu örnekte, istemci kimliği bir istekte geçirilen sorgu parametresinden alınır. Bu işlemin doldurulduğu değişkenlerin 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 (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL) |
Bulunma: |
İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: | Yetkilendirme kodu dizesi içeren akış değişkeni veya harflerden oluşan bir dize. |
<ignoreAccessTokenStatus> öğesi
Jetonun süresi dolmuş veya jetonu iptal edilmiş olsa bile jeton bilgilerini döndürür. Bu öğe yalnızca erişim jetonlarıyla kullanılabilir. Varsayılan olarak, yenileme jetonları ve yetkilendirme kodları gibi diğer varlıklar için 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ış |
<YenileToken> öğesi
Yenileme jetonu için profili alır. Yenileme jetonu dizesini içeren bir değişken veya değişmez jeton dizesi (nadir bulunan büyük/küçük harf) aktarırsınız. Bu örnekte yenileme jetonu, bir istekte geçirilen sorgu parametresinden alınır. Bu işlem tarafından doldurulan değişkenlerin listesi 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 (istek gövdesinde belirtilen ve x-www-form-url ile kodlanmış bir URL) |
Bulunma: |
İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: |
Yenileme jetonu dizesi içeren bir akış değişkeni veya harflerden oluşan bir dize. |
Akış değişkenleri
Bu değişkenleri GetOAuthV2Info politikası doldurur ve genellikle profil verilerine ihtiyaç duyduğunuz ancak henüz bir izin veya doğrulamanın gerçekleşmediği durumlarda kullanılır. .
Client ID 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, GitHub'da politika şemaları bulunabilir.
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir. Aşağıda gösterilen hata adları, bir hata meydana geldiğinde fault.name
değişkenine atanan dizelerdir. Daha fazla bilgi için aşağıdaki Hata değişkenleri 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 doldu. |
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çersiz. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | Bu hatayı giderme konusunda bilgi edinmek için lütfen bu Apigee Topluluğu yayınına göz atın. |
steps.oauth.v2.refresh_token_expired |
500 | Politikaya gönderilen yenileme jetonunun süresi doldu. |
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, bu politika çalışma zamanında bir hata tetiklediğinde ayarlanır.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen 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" } } }
Hata kuralı örneği
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>