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ğitim boyunca şunları öğreneceksiniz:

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

API'nizin yetkisiz erişime karşı korunması önemlidir. Bunu yapmanın bir yolu API anahtarlarını (ortak anahtarlar, tüketici anahtarları veya uygulama anahtarları olarak da adlandırılır) kullanmaktır.

Bir uygulama API'nize istek gönderdiğinde, uygulamanın geçerli bir anahtar sağlaması gerekir. Çalışma zamanında API Anahtarını Doğrulama politikası, sağlanan API anahtarının şunları kontrol ettiğini kontrol eder:

  • Geçerli
  • İptal edilmedi
  • İstenen kaynakları sunan API ürününün API anahtarıyla eşleşir

Anahtar geçerliyse isteğe izin verilir. Anahtar geçersizse istek, yetkilendirme hatasına neden olur.

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

Gerekenler

  • Apigee Edge hesabı. Henüz bir hesabınız yoksa Apigee Edge hesabı oluşturma sayfasındaki talimatlarla kaydolabilirsiniz.
  • API çağrısı yapacak bir web tarayıcısı.
  • (Ek kredi bölümü için, gerekli değildir) Komut satırından API çağrıları yapmak için makinenize cURL yüklenmiştir.

API proxy'si oluşturma

"Sahte hedef" 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 bu kayıtlara bir web tarayıcısından erişebilirsiniz. Aşağıdakileri tıklayarak deneyin:

http://mocktarget.apigee.net

Hedef, Hello, Guest! değerini döndürür. Kullanılabilen 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ında kullanıcı adınızı tıklayarak ve ardından listeden kuruluşu seçerek istediğiniz kuruluşa geçin.

    kullanıcı profili menüsünde kuruluş seçin
  3. API proxy'leri listesini görüntülemek için açılış sayfasında API Proxy'leri seçeneğini tıklayın.

    Edge API'leri Menüsü
  4. + Proxy'yi tıklayın.
    Proxy oluştur düğmesi
  5. Proxy Oluşturma 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
    Proje Temel Yolu

    Şununla değiştir: /helloapikey

    Project Base Path, API proxy'sine istek göndermek için kullanılan URL'nin bir parçasıdır.

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

    Mevcut API

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

    Bu tanımlayıcı, 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 ardından İleri'yi tıklayın. Bu işlem, API proxy'nize iki politika ekler.
  9. Virtual Hosts (Sanal Ana Makineler) sayfasında default (varsayılan) ve secure (güvenli) seçeneklerini belirleyip Next'i (İleri) tıklayın. Varsayılan'ı seçmek, API'nizi http:// ile çağırmanıza olanak tanır. Güvenli'yi seçmek, API'nizi https:// ile çağırmanıza olanak tanır.
  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ğuna ve API proxy'sinin test ortamınıza dağıtıldığına dair bir onay mesajı görürsünüz.
  12. API proxy'sine ilişkin Genel Bakış sayfasını görüntülemek için Proxy'yi düzenle'yi tıklayın.

Politikaları görüntüle

  1. API proxy düzenleyicisinde Geliştir sekmesini tıklayın. API proxy'sinin istek akışına iki politikanın eklendiğini göreceksiniz:
    • API Anahtarını Doğrulama: Geçerli bir API anahtarının mevcut (sorgu parametresi olarak gönderilir) olduğundan emin olmak için API çağrısını kontrol eder.
    • Remove Query Param apikey: API anahtarını kontrol ettikten sonra kaldıran ve böylece gereksiz yere açığa çıkmaması için API anahtarını kaldıran bir AttributionMessage politikasıdır.
  2. Akış görünümünde API Anahtarını Doğrula politikası simgesini tıklayın ve alt kod görünümünden politikanın XML yapılandırmasına bakın. <APIKey> öğesi, çağrı yapıldığında API anahtarını nerede araması gerektiğini politikaya bildirir. Varsayılan olarak anahtarı, HTTP isteğinde apikey adlı bir sorgu parametresi olarak 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 API proxy'sinin politikalar tarafından nasıl korunduğunu görmek için 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 yönlendirmek üzere yapılandırıldığı hedef hizmettir ancak şimdilik doğrudan bu hizmetten yararlanacaksınız:

    http://mocktarget.apigee.net
    

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

  2. Hata

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

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

    ORG_NAME kısmını Edge kuruluşunuzun adıyla değiştirin.

    API Anahtarını Doğrulama politikası olmadan bu çağrı, önceki çağrıyla aynı yanıtı verir. Ancak bu durumda, aşağıdaki hata yanıtını alırsınız:

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

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

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

API ürünü ekleyin

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ün ürün ayrıntılarını girin.

    Alan Açıklama
    Ad API ürününün dahili adı. Adda özel karakter 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 dilediğiniz zaman düzenleyebilirsiniz. Belirtilmezse Name (Ad) değeri kullanılır. Bu alan, Ad değeri kullanılarak otomatik olarak doldurulur. Bu alanın iç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 onayla Herhangi bir uygulamadan bu API ürünü için anahtar isteklerinin 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, az önce oluşturduğunuz API proxy'sini seçin. Örneğin, helloworld_apikey.
  5. Ekle'yi tıklayın.
  6. Yollar bölümünde "/" 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 ekleyin

Sıradaki bölümde, API'lerinizi kullanmak için kaydolan bir geliştiricinin iş akışını simüle edeceğiz. Bir geliştiricinin, API'lerinizi çağıran bir veya daha fazla uygulaması olur ve her uygulama benzersiz bir API anahtarı alır. Bu, API sağlayıcısı olarak size API'lerinize erişim üzerinde daha ayrıntılı kontrol ve uygulama bazında API trafiği hakkında daha ayrıntılı raporlar sunar.

Geliştirici oluşturma

Geliştirici oluşturmak için:

  1. Menüde 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

Bir geliştirici uygulamasını kaydetmek için:

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

    p
    Bu alanda bunu yap
    Ad ve Görünen Ad Şunu girin: keyser_app
    Şirket / Geliştirici Seç: Developer
    Developer Seç: Keyser Soze (keyser@example.com)
    Geri çağırma URL'si ve Notlar Boş bırak
  4. Kimlik bilgileri bölümünde, Süre Sonu menüsünden Hiçbir zaman'ı seçin. Bu uygulamaya ait kimlik bilgilerinin süresi hiçbir zaman dolmaz.
  5. Ürünler altında, Ürün ekle'yi tıklayın.
  6. helloworld_apikey-Product öğesini 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 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'i tıklayın.
  2. keyser_app sayfasında, Kimlik bilgileri bölümündeki Anahtar'ın yanında bulunan Göster'i tıklayın. Product bölümünde, anahtarın helloworld_apikey ile ilişkilendirildiğine dikkat edin.

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

API'yi anahtarla çağırma

Artık bir API anahtarınız var. Şimdi bu anahtarı kullanarak API proxy'sini çağırabilirsiniz. Web tarayıcınıza aşağıdaki bilgileri girin. Aşağıda, ORG_NAME yerine Edge kuruluş adınızı ve API_KEY yerine API anahtarını yazın. Sorgu parametresinde fazladan boşluk bulunmadığı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! API proxy'si oluşturdunuz ve çağrıya geçerli bir API anahtarının dahil edilmesini zorunlu kılarak bu proxy'yi korudunuz.

Genel olarak API anahtarının sorgu parametresi olarak iletilmesinin iyi bir uygulama olmadığını unutmayın. Bunun yerine HTTP üst bilgisinde iletmeyi düşünmelisiniz.

En iyi uygulama: Anahtarı HTTP üstbilgisinde iletme

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

  1. API proxy'sini düzenleyin. Geliştirme > API Proxy'leri > helloworld_apikey'yi seçin ve Geliştirme görünümüne gidin.
  2. API Anahtarını Doğrula politikasını seçin ve politika XML'ini, politikanın queryparam yerine header içinde bakmasını sağlayacak şekilde 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 tam olarak tamamlamak için AttributionMessage politikasını, sorgu parametresi yerine üstbilgiyi kaldıracak şekilde 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 ilişkili bazı konular şunlardır:

Biraz daha derine indiğimizde, API'leri API anahtarlarıyla korumak işin yalnızca bir parçasıdır. API koruması çoğu zaman OAuth gibi ek güvenlik önlemleri içerir.

OAuth, özet olarak erişim jetonları için kimlik bilgilerini (kullanıcı adı ve şifre gibi) değiştiren açık bir protokoldür. Erişim jetonları, orijinal kimlik bilgilerinden ödün vermeden uygulamadan uygulamaya bile bir mesaj ardışık düzeni etrafında iletilebilen uzun ve rastgele dizelerdir. Erişim jetonlarının ömrü genellikle kısa olduğundan sürekli yenileri oluşturulur.