API anahtarlarını zorunlu kılarak API'lerin güvenliğini sağlama

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

Neler öğreneceksiniz?

Bu eğitimde şunları öğreneceksiniz:

  • API anahtarı gerektiren bir API proxy'si oluşturun.
  • API ürünü ekleyin.
  • Geliştirici ekleme ve uygulama kaydetme
  • API'nizi API anahtarıyla çağırın.

API'nizi yetkisiz erişime karşı korumanız önemlidir. Bunu yapmanın bir yolu API anahtarlarını (ortak anahtarlar, tüketici anahtarları veya uygulama anahtarları olarak da bilinir) kullanmaktır.

Bir uygulama, API'nize istek gönderdiğinde geçerli bir anahtar sağlamalıdır. Çalışma zamanında, API anahtarını doğrulama politikası, sağlanan API anahtarının aşağıdakileri karşıladığını kontrol eder:

  • Geçerli
  • İptal edilmemiş olmalıdır.
  • İstenen kaynakları kullanıma sunan API ürününün API anahtarıyla eşleşir.

Anahtar geçerliyse istek kabul edilir. Anahtar geçersizse istek yetkilendirme hatasıyla sonuçlanır.

Bu eğitimde, erişmek için geçerli bir API anahtarı gerektiren bir API proxy'si oluşturacaksınız.

İhtiyacınız olanlar

  • Apigee Edge hesabı Henüz hesabınız yoksa Apigee Edge hesabı oluşturma başlıklı makaledeki talimatları uygulayarak kaydolabilirsiniz. Apigee Edge hesabı oluşturma.
  • API çağrısı yapmak için bir web tarayıcısı.
  • (Ek bilgi bölümü için gereklidir) Komut satırından API çağrıları yapmak için makinenize cURL yüklenmiş olmalıdır.

API proxy'sini oluşturma

"mocktarget" hakkında

mocktarget hizmeti Apigee'de barındırılır ve basit veriler döndürür. API anahtarı veya erişim jetonu gerektirmez. Hatta web tarayıcısında erişebilirsiniz. Aşağıdakileri tıklayarak deneyin:

http://mocktarget.apigee.net

Hedef getiri Hello, Guest!. Kullanılabilir diğer API kaynaklarının yardım sayfasına ulaşmak için /help kaynağını kullanın.

  1. https://apigee.com/edge adresine gidip oturum açın.
  2. Kullanıcı profili menüsünü görüntülemek için yan gezinme çubuğunun üst kısmındaki kullanıcı adınızı tıklayarak istediğiniz kuruluşa geçin ve listeden kuruluşu seçin.

    Kullanıcı profili menüsünde kuruluşu seçin.
  3. API proxy'leri listesini görüntülemek için açılış sayfasında API Proxies'i (API Proxy'leri) tıklayın.

    Edge API'leri Menüsü
  4. + Proxy'yi tıklayın.
    Proxy oluşturma düğmesi
  5. Proxy Oluştur sayfasında Ters proxy (en yaygın) seçeneğini belirleyin.
  6. Proxy Ayrıntıları sayfasında proxy'yi aşağıdaki gibi yapılandırın:
    Bu alanda bunu yap
    Proxy Adı Şunu girin: helloworld_apikey
    Project Base Path

    Şuna ayarlanacak: /helloapikey

    Proje Temel Yolu, API proxy'sine istekte bulunmak için kullanılan URL'nin bir parçasıdır.

    Not: Apigee'nin API sürümü oluşturma konusundaki önerileri için Web API Design: The Missing Link (Web API Tasarımı: Eksik Halka) e-kitabındaki Versioning (Sürüm Oluşturma) bölümüne bakın.

    Mevcut API

    Şunu girin: http://mocktarget.apigee.net

    Bu, Apigee Edge'in API proxy'sine yapılan bir istekte çağırdığı hedef URL'yi tanımlar.

    Açıklama Şunu girin: hello world protected by API key
  7. İleri'yi tıklayın.
  8. Ortak Politikalar sayfasında, Güvenlik: Yetkilendirme için API Anahtarı'nı seçin ve Sonraki'yi tıklayın. Bu işlem, API proxy'nize iki politika ekler.
  9. Sanal Ana Makineler sayfasında varsayılan ve güvenli'yi seçip Sonraki'yi tıklayın. Varsayılan'ı seçtiğinizde API'nizi http:// ile çağırabilirsiniz. Güvenli'yi seçtiğinizde, API'nizi https:// ile çağırabilirsiniz.
  10. Özet sayfasında test dağıtım ortamının seçili olduğundan emin olun ve Oluştur ve dağıt'ı tıklayın.
  11. Yeni API proxy'nizin ve bir API ürününün başarıyla oluşturulduğu ve API proxy'sinin test ortamınıza dağıtıldığına dair bir onay mesajı görürsünüz.
  12. API proxy'sinin Genel bakış sayfasını görüntülemek için Proxy'yi düzenle'yi tıklayın.

Politikaları görüntüleme

  1. API proxy düzenleyicide Geliştir sekmesini tıklayın. API proxy'sinin istek akışına iki politika eklendiğini görürsünüz:
    • API Anahtarını Doğrula: Geçerli bir API anahtarının mevcut olduğundan (sorgu parametresi olarak gönderilir) emin olmak için API çağrısını kontrol eder.
    • Remove Query Param apikey: API anahtarı kontrol edildikten sonra kaldırarak gereksiz yere iletilmesini ve açığa çıkmasını engelleyen bir AssignMessage politikasıdır.
  2. Akış görünümünde API anahtarını doğrulama politikası simgesini tıklayın ve alt koddaki politika XML yapılandırmasına bakın. <APIKey> öğesi, çağrı yapıldığında API anahtarının nerede aranması gerektiğini politikaya bildirir. Varsayılan olarak, HTTP isteğinde apikey adlı bir sorgu parametresi olarak anahtarı arar:

    <APIKey ref="request.queryparam.apikey" />

    apikey adı rastgeledir ve API anahtarını içeren herhangi bir özellik olabilir.

API'yi çağırmayı deneyin

Bu adımda, doğrudan hedef hizmete başarılı bir API çağrısı yapacak, ardından politikalarla nasıl korunduğunu görmek için API proxy'sine başarısız bir çağrı yapacaksınız.

  1. Başarılı

    Web tarayıcısında aşağıdaki adrese gidin. Bu, API proxy'sinin isteği iletmek üzere yapılandırıldığı hedef hizmettir ancak şimdilik doğrudan bu hizmete erişeceksiniz:

    http://mocktarget.apigee.net

    Şu başarılı yanıtı alırsınız: Hello, Guest!

  2. Hata

    Şimdi API proxy'nizi çağırmayı deneyin:

    http://ORG_NAME-test.apigee.net/helloapikey

    ORG_NAME yerine Edge kuruluşunuzun adını yazın.

    API anahtarını doğrulama politikası olmadan bu çağrı, önceki çağrıyla aynı yanıtı verirdi. Ancak bu durumda aşağıdaki hata yanıtını almanız gerekir:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    Bu, geçerli bir API anahtarı (sorgu parametresi olarak) iletmediğiniz anlamına gelir.

Sonraki adımlarda bir API ürünü ekleyeceksiniz.

API ürünü ekleme

Apigee kullanıcı arayüzünü kullanarak API ürünü eklemek için:

  1. Yayınla > API Ürünleri'ni seçin.
  2. +API Ürünü'nü tıklayın.
  3. API ürününüz için Ürün ayrıntıları'nı girin.

    Alan Açıklama
    Ad API ürününün dahili adı. Ad içinde özel karakterler belirtmeyin.
    Not: API ürünü oluşturulduktan sonra adı düzenleyemezsiniz. Örneğin, helloworld_apikey-Product.
    Görünen ad API ürününün görünen adı. Görünen ad, kullanıcı arayüzünde kullanılır ve istediğiniz zaman düzenlenebilir. Belirtilmezse ad değeri kullanılır. Bu alan, Ad değeri kullanılarak otomatik olarak doldurulur. İçeriğini düzenleyebilir veya silebilirsiniz. Görünen ad özel karakterler içerebilir. Örneğin, helloworld_apikey-Product.
    Açıklama API ürününün açıklaması. Örneğin, Test product for tutorial.
    Ortam API ürününün erişime izin vereceği ortamlar. Örneğin, test veya prod.
    Erişim Herkese açık'ı seçin.
    Erişim isteklerini otomatik olarak onaylama Bu API ürününün anahtar isteklerinin herhangi bir uygulamadan otomatik olarak onaylanmasını etkinleştirin.
    Kota Bu eğitim için yoksayın.
    İzin verilen OAuth kapsamları Bu eğitim için yoksayın.
  4. API kaynakları bölümünde, yeni oluşturduğunuz API proxy'sini seçin. Örneğin, helloworld_apikey.
  5. Ekle'yi tıklayın.
  6. Yollar bölümüne "/" yolunu ekleyin.
  7. Ekle'yi tıklayın.
  8. Kaydet'i tıklayın.

Sonraki adımlarda gerekli API anahtarını alacaksınız.

Kuruluşunuza geliştirici ve uygulama ekleme

Ardından, bir geliştiricinin API'lerinizi kullanmak için kaydolma iş akışını simüle edeceğiz. Bir geliştiricinin, API'lerinizi çağıran bir veya daha fazla uygulaması vardır ve her uygulama benzersiz bir API anahtarı alır. Bu sayede API sağlayıcı olarak siz, API'lerinize erişim üzerinde daha ayrıntılı kontrol sahibi olabilir ve API trafiğiyle ilgili daha ayrıntılı raporlar alabilirsiniz.

Geliştirici oluşturma

Geliştirici oluşturmak için:

  1. Menüden Yayınla > Geliştiriciler'i seçin.
  2. + Geliştirici'yi tıklayın.
  3. Yeni Geliştirici penceresine aşağıdakileri girin:

    Bu alanda enter
    Ad Keyser
    Soyadı Soze
    Kullanıcı Adı keyser
    E-posta keyser@example.com
  4. Oluştur'u tıklayın.

Uygulama kaydetme

Geliştirici uygulaması kaydetmek için:

  1. Yayınla > Uygulamalar'ı seçin.
  2. + Uygulama'yı tıklayın.
  3. New App (Yeni Uygulama) penceresinde aşağıdakileri girin:

    p
    Bu alanda bunu yap
    Ad ve Görünen Ad Şunu girin: keyser_app
    Şirket / Geliştirici Şunu seçin: Developer
    Developer Şunu seçin: Keyser Soze (keyser@example.com)
    Geri çağırma URL'si ve Notlar Boş bırakın
  4. Kimlik bilgileri bölümündeki Geçerlilik bitiş tarihi menüsünden Hiçbir zaman'ı seçin. Bu uygulamanın kimlik bilgileri asla sona ermez.
  5. Ürünler bölümünde Ürün ekle'yi tıklayın.
  6. helloworld_apikey-Product'ı seçin.
  7. Ekle'yi tıklayın.
  8. Çalışmanızı kaydetmek için Uygulama Ayrıntıları bölümünün üst ve sağ tarafındaki Oluştur'u tıklayın.

API anahtarını alma

API anahtarını almak için:

  1. Uygulamalar sayfasında (Yayınla > Uygulamalar) keyser_app seçeneğini tıklayın.
  2. keyser_app sayfasındaki Credentials (Kimlik Bilgileri) bölümünde Key (Anahtar) seçeneğinin yanındaki Show'u (Göster) tıklayın. Ürün bölümünde anahtarın helloworld_apikey ile ilişkilendirildiğini göreceksiniz.

    .
  3. Anahtarı seçip kopyalayın. Bu bilgiyi sonraki adımda kullanacaksınız.

API'yi anahtarla çağırma

Artık bir API anahtarınız olduğuna göre, API proxy'sini çağırmak için bu anahtarı kullanabilirsiniz. Web tarayıcınıza aşağıdakileri girin. Aşağıdaki ORG_NAME yerine Edge kuruluşunuzun adını, API_KEY yerine ise API anahtarını girin. Sorgu parametresinde fazladan boşluk olmadığından emin olun.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Artık API proxy'sini çağırdığınızda şu yanıtı almanız gerekir: Hello, Guest!

Tebrikler! Bir API proxy'si oluşturdunuz ve çağrıya geçerli bir API anahtarı eklenmesini zorunlu kılarak bu proxy'yi korudunuz.

Genel olarak bir API anahtarını sorgu parametresi olarak geçirmenin iyi bir uygulama olmadığını unutmayın. Bunun yerine HTTP üstbilgisinde iletmeyi düşünebilirsiniz.

En iyi uygulama: Anahtarı HTTP üstbilgisinde iletme

Bu adımda, proxy'yi x-apikey adlı bir üstbilgide API anahtarını arayacak şekilde değiştireceksiniz.

  1. API proxy'sini düzenleyin. Develop > API Proxies > helloworld_apikey'yi seçin ve Develop görünümüne gidin.
  2. API Anahtarını Doğrula politikasını seçin ve politikaya header yerine queryparam içinde arama yapmasını söylemek için politika XML'sini değiştirin:

    <APIKey ref="request.header.x-apikey"/>
  3. Değişikliği dağıtmak için API proxy'sini kaydedin.
  4. API anahtarını x-apikey adlı bir üstbilgi olarak iletmek için cURL kullanarak aşağıdaki API çağrısını yapın. Kuruluşunuzun adını değiştirmeyi unutmayın.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Değişikliği tamamen tamamlamak için AssignMessage politikasını, sorgu parametresi yerine başlığı kaldıracak şekilde de yapılandırmanız gerektiğini unutmayın. Örneğin:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

İlgili konular

Bu eğitimle doğrudan ilgili bazı konuları aşağıda bulabilirsiniz:

Biraz daha ayrıntılı olarak, API'leri API anahtarlarıyla korumak hikayenin yalnızca bir parçasıdır. Çoğu zaman, API koruması, OAuth gibi ek güvenlik önlemleri içerir.

OAuth, kimlik bilgilerini (ör. kullanıcı adı ve şifre) erişim jetonlarıyla değiştiren açık bir protokoldür. Erişim jetonları, orijinal kimlik bilgilerinden ödün vermeden mesaj ardışık düzeninde, hatta uygulamadan uygulamaya geçirilebilen uzun ve rastgele dizelerdir. Erişim jetonlarının ömrü genellikle kısadır. Bu nedenle, sürekli olarak yeni jetonlar oluşturulur.