VerificationAPIKey politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

API Anahtarı Doğrula politikası, çalışma zamanında API anahtarlarının doğrulanmasını zorunlu kılar ve yalnızca onaylı API anahtarları olan uygulamaların API'lerinize erişmesine izin verir. Bu politika, API anahtarlarının geçerli olmasını, iptal edilmemesini ve API ürünlerinizle ilişkili belirli kaynakları tüketmesi için onaylanmasını sağlar.

Sana Özel

Sorgu parametresindeki anahtar

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="request.queryparam.apikey" />
</VerifyAPIKey>

Bu örnekte politika, API anahtarını request.queryparam.apikey adlı bir akış değişkeninde bulmayı bekler. request.queryparam.{name} değişkeni, istemci isteğinde geçirilen bir sorgu parametresinin değeriyle doldurulan standart bir Edge akış değişkenidir.

Aşağıdaki curl komutu, API anahtarını bir sorgu parametresinde aktarır:

curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls

Başlıktaki not

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="request.header.x-apikey" />
</VerifyAPIKey>

Bu örnekte politika, API anahtarını request.header.x-apikey adlı bir akış değişkeninde bulmayı bekler. request.header.{name} değişkeni, istemci isteğinde geçirilen bir başlığın değeriyle doldurulan standart bir Edge akış değişkenidir.

Aşağıdaki cURL'de, API anahtarının bir üstbilgi içinde nasıl iletileceği gösterilmektedir:

curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"

Değişkendeki anahtar

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="requestAPIKey.key"/>
</VerifyAPIKey>

Politika, anahtarı içeren herhangi bir değişkene başvurabilir. Bu örnekteki politika, API anahtarını requestAPIKey.key adlı bir değişkenden çıkarır.

Bu değişkenin nasıl doldurulacağı size bağlıdır. Örneğin, requestAPIKey.key öğesini aşağıda gösterildiği gibi myKey adlı bir sorgu parametresinden doldurmak için Değişkenleri Ayıklama politikasını kullanabilirsiniz:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar">
    <Source>request</Source>
    <QueryParam name="myKey">
        <Pattern ignoreCase="true">{key}</Pattern>
    </QueryParam>
    <VariablePrefix>requestAPIKey</VariablePrefix>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

Politika akışı değişkenlerine erişim

<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars">
    <AssignVariable>
        <Name>devFirstName</Name>
        <Ref>verifyapikey.verify-api-key.developer.firstName</Ref>
        <Value>ErrorOnCopy</Value>
    </AssignVariable>
    <AssignVariable>
        <Name>devLastName</Name>
        <Ref>verifyapikey.verify-api-key.developer.lastName</Ref>
        <Value>ErrorOnCopy</Value>
    </AssignVariable>
    <AssignVariable>
        <Name>devEmail</Name>
        <Ref>verifyapikey.verify-api-key.developer.email</Ref>
        <Value>ErrorOnCopy</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Edge, geçerli bir API anahtarı için API Anahtarını Doğrula politikasını yürütürken bir akış değişkeni grubunu otomatik olarak doldurur. Uygulama adı, uygulama kimliği ve uygulamayı kaydeden geliştirici veya şirket hakkındaki bilgilere erişmek için bu değişkenleri kullanabilirsiniz. Yukarıdaki örnekte, API Anahtarı'nı doğruladıktan sonra geliştiricinin adına, soyadına ve e-posta adresine erişmek için Mesaj Ata politikasını kullanırsınız.

Bu değişkenlerin tümüne şu ön ek eklenir:

verifyapikey.{policy_name}

Bu örnekte, API anahtarı politikasının adı "verify-api-key"dir. Dolayısıyla, verifyapikey.verify-api-key.developer.firstName. değişkenine erişerek istekte bulunan geliştiricinin adına referans verirsiniz

Edge'i öğrenin


API Anahtarını Doğrulama politikası hakkında

Geliştirici, Edge'e uygulama kaydettiğinde Edge otomatik olarak tüketici anahtarı ve gizli anahtar çifti oluşturur. Uygulamanın tüketici anahtarı ve gizli anahtarı çiftini Edge kullanıcı arayüzünde görebilir veya bu öğelere Edge API'den erişebilirsiniz.

Uygulama kaydı sırasında geliştirici, uygulamayla ilişkilendirmek için bir veya daha fazla API ürünü seçer. Burada API ürünü, API proxy'leri üzerinden erişilebilen kaynaklardan oluşan bir koleksiyondur. Geliştirici, daha sonra API anahtarını (tüketici anahtarı) uygulamayla ilişkili bir API ürünündeki API'lere yapılan her isteğin parçası olarak iletir. Daha fazla bilgi için Yayınlama özeti bölümüne bakın.

API anahtarları kimlik doğrulama jetonu olarak veya OAuth erişim jetonları almak için kullanılabilir. OAuth'ta API anahtarları "istemci kimliği" olarak adlandırılır. Adlar birbirinin yerine kullanılabilir. Daha fazla bilgi için OAuth ana sayfası sayfasına göz atın.

Edge, API Anahtarını Doğrula politikasını yürütürken bir akış değişkeni grubunu otomatik olarak doldurur. Daha fazla bilgi için aşağıdaki Akış değişkenleri bölümüne bakın.

Öğe Referansı

Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir:

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <APIKey ref="variable_containing_api_key"/>
</VerifyAPIKey>

<VerifyAPIKey> özellikleri

Aşağıdaki örnekte <VerifyAPIKey> etiketindeki özellikler gösterilmektedir:

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-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çerebilir. Bu değer 255 karakterden uzun olamaz.

İ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 <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanmaz.

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 name özelliğinin değeri kullanılır.

Varlık İsteğe bağlı
Tür Dize

<APIKey> öğesi

Bu öğe, API anahtarını içeren akış değişkenini belirtir. Genellikle istemci API anahtarını bir sorgu parametresi, HTTP üst bilgisi veya form parametresi içinde gönderir. Örneğin, anahtar x-apikey adlı bir başlıkta gönderilirse anahtar şu değişkende bulunur: request.header.x-apikey

Varsayılan Yok
Varlık Gerekli
Tür Dize

Özellikler

Aşağıdaki tabloda <APIKey> öğesinin özellikleri açıklanmaktadır

Özellik Açıklama Varsayılan Varlık
referans

API anahtarını içeren değişkene referans. Politika başına yalnızca bir konuma izin verilir.

Yok Gerekli

Örnekler

Bu örneklerde anahtar, parametrelerde ve x-apikey adlı bir başlıkta iletilir.

Bir sorgu parametresi olarak:

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="request.queryparam.x-apikey"/>
</VerifyAPIKey>

HTTP üstbilgisi olarak:

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="request.header.x-apikey"/>
</VerifyAPIKey>

HTTP form parametresi olarak:

<VerifyAPIKey name="APIKeyVerifier">
    <APIKey ref="request.formparam.x-apikey"/>
</VerifyAPIKey>

Şemalar

Akış değişkenleri

Geçerli bir API anahtarında bir API Anahtarını Doğrulama politikası zorunlu kılındığında, Edge bir akış değişkeni grubunu doldurur. Bu değişkenler, akışın daha sonraki aşamalarında yürütülen politikalar veya kod tarafından kullanılabilir. Bunlar genellikle API anahtarının uygulama adı, anahtarı yetkilendirmek için kullanılan API ürünü veya API anahtarının özel özellikleri gibi özelliklerine göre özel işleme gerçekleştirmek için kullanılır.

Politika, aşağıdakiler de dahil olmak üzere birkaç farklı akış değişkeni türünü doldurur:

  • Genel
  • Uygulama
  • Geliştirici
  • Şirket
  • Analizler

Her bir akış değişkeni türünün farklı bir ön eki vardır. Özellikle dizi olarak belirtilenler dışında tüm değişkenler skaler değerlerdir.

Genel akış değişkenleri

Aşağıdaki tabloda, API Anahtarını Doğrulama politikası tarafından doldurulan genel akış değişkenleri listelenmektedir. Bu değişkenlerin tümüne şu ön ek eklenir:

verifyapikey.{policy_name}

Örneğin: verifyapikey.{policy_name}.client_id

Kullanılabilir değişkenler şunlardır:

Değişken Açıklama
client_id İstekte bulunan uygulama tarafından sağlanan tüketici anahtarı (API anahtarı veya uygulama anahtarı olarak da bilinir).
client_secret Tüketici anahtarıyla ilişkilendirilen tüketici sırrı.
redirection_uris İstekteki tüm yönlendirme URI'leri.
developer.app.id

İstekte bulunan geliştirici uygulamasının kimliği.

developer.app.name İstekte bulunan geliştirici uygulamasının uygulama adı.
developer.id

İstekte bulunan uygulamanın sahibi olarak kayıtlı geliştiricinin kimliği.

developer.{custom_attrib_name} Uygulama anahtarı profilinden türetilen tüm özel özellikler.
DisplayName Politikanın <DisplayName> özelliğinin değeri.
failed API anahtarı doğrulaması başarısız olduğunda değeri "true" (doğru) olarak ayarlayın.
{custom_app_attrib} Uygulama profilinden türetilen herhangi bir özel özellik. Özel özelliğin adını belirtin.
apiproduct.name* İsteği doğrulamak için kullanılan API ürününün adı.
apiproduct.{custom_attrib_name}* API ürün profilinden türetilen herhangi bir özel özellik.
apiproduct.developer.quota.limit* API ürünü için ayarlanan kota sınırı (varsa).
apiproduct.developer.quota.interval* Varsa API ürününde ayarlanan kota aralığı.
apiproduct.developer.quota.timeunit* API ürününde ayarlanan kota zaman birimi (varsa).
* API ürünleri geçerli ortam, proxy'ler ve kaynaklarla (proxy.pathsuffix türetildi) yapılandırılmışsa API ürün değişkenleri otomatik olarak doldurulur. API ürünlerini ayarlamak için API'leri yayınlamak için Edge Management API'yi kullanma bölümüne bakın.

Uygulama akışı değişkenleri

Uygulama hakkında bilgi içeren aşağıdaki akış değişkenleri politika tarafından doldurulur. Bu değişkenlerin tümüne şu ön ek eklenir:

verifyapikey.{policy_name}.app.

Örneğin:

verifyapikey.{policy_name}.app.name

Kullanılabilir değişkenler şunlardır:

Değişken Açıklama
name Uygulamanın adı.
id Uygulamanın kimliği.
accessType Apigee tarafından kullanılmaz.
callbackUrl Uygulamanın geri çağırma URL'si. Genellikle yalnızca OAuth için kullanılır.
DisplayName Uygulamanın görünen adı.
status Uygulamanın durumu (ör. "onaylandı" veya "iptal edildi").
apiproducts Uygulamayla ilişkilendirilen API ürünlerinin listesini içeren bir dizi.
appFamily Uygulamayı içeren herhangi bir uygulama ailesi veya "varsayılan".
appParentStatus Uygulamanın üst öğesinin durumu (ör. "etkin" veya "etkin değil")
appType Uygulama türü (ör. "Şirket" veya "Geliştirici").
appParentId Üst uygulamanın kimliği.
created_at Uygulamanın oluşturulduğu tarih/saat damgası.
created_by Uygulamayı oluşturan geliştiricinin e-posta adresi.
last_modified_at Uygulamanın en son güncellendiği tarih/saat damgası.
last_modified_by Uygulamayı son güncelleyen geliştiricinin e-posta adresi.
{app_custom_attributes} Herhangi bir özel uygulama özelliği. Özel özelliğin adını belirtin.

Geliştirici akış değişkenleri

Geliştirici hakkında bilgi içeren aşağıdaki akış değişkenleri politika tarafından doldurulur. Bu değişkenlerin tümüne şu ön ek eklenir:

verifyapikey.{policy_name}.developer

Örneğin:

verifyapikey.{policy_name}.developer.id

Kullanılabilir değişkenler şunlardır:

Değişken Açıklama
id {org_name}@@{developer_id} değerini döndürür
userName Geliştiricinin kullanıcı adı.
firstName Geliştiricinin adı.
lastName Geliştiricinin soyadı.
email Geliştiricinin e-posta adresi.
status Geliştiricinin durumu (etkin, etkin değil veyalogin_lock).
apps Geliştiriciyle ilişkilendirilmiş uygulamalar dizisi.
created_at Geliştiricinin oluşturulduğu tarih/saat damgası.
created_by Geliştiriciyi oluşturan kullanıcının e-posta adresi.
last_modified_at Geliştiricinin son değiştirildiği tarih/saat damgası.
last_modified_by Geliştiriciyi değiştiren kullanıcının e-posta adresi.
{developer_custom_attributes} Herhangi bir özel geliştirici özelliği. Özel özelliğin adını belirtin.
Company Geliştiriciyle ilişkilendirilen şirketin adı (varsa).

Şirket akışı değişkenleri

Şirket hakkında bilgi içeren aşağıdaki akış değişkenleri politika tarafından doldurulur. Bu değişkenlerin tümüne şu ön ek eklenir:

verifyapikey.{policy_name}.company

Örneğin:

verifyapikey.{policy_name}.company.name

Kullanılabilir değişkenler şunlardır:

Değişken Açıklama
name Şirket adı.
displayName Şirketin görünen adı.
id

Şirket kimliği.

apps Şirket uygulamalarının listesini içeren bir dizi.
appOwnerStatus
Uygulama sahibinin etkin, etkin değil veyalogin_lock olarak durumu.
created_at Şirketin oluşturulduğu tarih/saat damgası.
created_by Şirketi oluşturan kullanıcının e-posta adresi.
last_modified_at Şirketin son değiştirildiği tarih/saat damgası.
last_modified_by Şirketi son değiştiren kullanıcının e-posta adresi.
{company_custom_attributes} Herhangi bir özel şirket özelliği. Özel özelliğin adını belirtin.

Analytics değişkenleri

Geçerli bir API anahtarı için bir API Anahtarını Doğrulama politikası zorunlu kılındığında aşağıdaki değişkenler Analytics'te otomatik olarak doldurulur. Bu değişkenler yalnızca API Anahtarını Doğrulama politikası ve OAuth politikaları tarafından doldurulur.

Değişkenler ve değerler, geliştiriciler ve uygulamalar tarafından tüketilen tüketim kalıpları hakkında görünürlük sağlamak amacıyla Analytics raporları oluşturmak için boyut olarak kullanılabilir.

  • apiproduct.name
  • developer.app.name
  • client_id
  • developer.id

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.

Hata kodu HTTP durumu Neden
keymanagement.service.CompanyStatusNotActive 401 Kullandığınız API anahtarına sahip Geliştirici Uygulaması ile ilişkilendirilmiş Şirket, etkin değil durumunda. Bir Şirket'in durumu etkin değil olarak ayarlandığında, söz konusu Şirket ile ilişkili geliştiricilere veya uygulamalara erişemezsiniz. Kuruluş yöneticisi, Management API'yi kullanarak bir Şirketin durumunu değiştirebilir. Şirketin Durumunu Belirleme başlıklı makaleyi inceleyin.
keymanagement.service.DeveloperStatusNotActive 401

Kullandığınız API anahtarına sahip Geliştirici Uygulaması'nı oluşturan geliştirici, etkin değil durumunda. Bir Uygulama Geliştiricinin durumu etkin değil olarak ayarlandığında, geliştirici tarafından oluşturulan tüm Geliştirici Uygulamaları devre dışı bırakılır. Uygun izinlere sahip bir yönetici kullanıcı (ör. Kuruluş Yöneticisi) bir geliştiricinin durumunu aşağıdaki şekillerde değiştirebilir:

keymanagement.service.invalid_client-app_not_approved 401 API anahtarıyla ilişkilendirilmiş Geliştirici Uygulaması iptal edildi. İptal edilen bir uygulama hiçbir API ürününe erişemez ve Apigee Edge tarafından yönetilen herhangi bir API'yi çağıramaz. Bir kuruluş yöneticisi, Management API'yi kullanarak Geliştirici Uygulamasının durumunu değiştirebilir. Geliştirici Uygulamasını Onaylama veya İptal Etme bölümüne bakın.
oauth.v2.FailedToResolveAPIKey 401 Politika, API anahtarını politikanın <APIKey> öğesinde belirtilen bir değişkende bulmayı bekler. Bu hata, beklenen değişken mevcut olmadığında (çözümemediğinde) ortaya çıkar.
oauth.v2.InvalidApiKey 401 Edge tarafından bir API anahtarı alındı, ancak bu anahtar geçersiz. Edge, veritabanında anahtarı aradığında istekte gönderilen ile tam olarak eşleşmelidir. API daha önce çalışıyorsa anahtarın yeniden oluşturulmadığından emin olun. Anahtar yeniden oluşturulduysa eski anahtarı kullanmaya çalışırsanız bu hatayı görürsünüz. Ayrıntılar için Uygulamaları kaydetme ve API anahtarlarını yönetme konusuna bakın.
oauth.v2.InvalidApiKeyForGivenResource 401 Edge tarafından alınan bir API anahtarı geçerli. Ancak, Geliştirici Uygulaması'ndaki, bir Ürün üzerinden API proxy'nizle ilişkilendirilmiş onaylanmış bir anahtarla eşleşmiyor.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden
SpecifyValueOrRefApiKey <APIKey> öğesinde değer veya anahtar belirtilmemiş.

Hata değişkenleri

Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

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 "FailedToResolveAPIKey"
oauthV2.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.VK-VerifyAPIKey.failed = true

Örnek hata yanıtları

{  
   "fault":{  
      "faultstring":"Invalid ApiKey",
      "detail":{  
         "errorcode":"oauth.v2.InvalidApiKey"
      }
   }
}
{  
   "fault":{  
      "detail":{  
         "errorcode":"keymanagement.service.DeveloperStatusNotActive"
      },
      "faultstring":"Developer Status is not Active"
   }
}

Hata kuralı örneği

<FaultRule name="FailedToResolveAPIKey">
    <Step>
        <Name>AM-FailedToResolveAPIKey</Name>
    </Step>
    <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition>
</FaultRule>

İlgili konular