Bölüm 3: Örnek üçüncü taraf API uygulaması

Önceki bölüm: Kimlik doğrulaması gereksinimleri

Örnek senaryoda, ana uygulama erişim anahtarıyla güvenliği sağlanan bir üçüncü taraf API kullanır. Bu bölümde Azure İşlevleri kullanan API gösterilmektedir, ancak uygulamayı başka bir bulut sağlayıcısında veya geleneksel bir web sunucusunda barındırdığınızdan bağımsız olarak API'nin nasıl veya nerede uygulandığından bağımsız olarak aynı ilkeler geçerlidir.

Önemli olan, korumalı uç noktaya yönelik tüm istemci isteklerinin, uygulamanın güvenli bir şekilde yönetmesi gereken erişim anahtarını içermesi gerektiğidir. Bu bölümde, Azure İşlevleri'ni kullanarak böyle bir API'nin nasıl uygulanabileceğine ilişkin genel bir bakış sağlanmaktadır, ancak ilkeleri kendi ihtiyaçlarınıza göre uyarlayabilirsiniz.

Örnek üçüncü taraf API uygulaması

Örnek üçüncü taraf API'leri, 1 ile 999 arasında rastgele bir sayı döndüren basit bir uç noktadır. API, uç noktaya erişmek için istekte sağlamanız gereken bir erişim anahtarıyla güvenli hale getirilir. Tanıtım amacıyla, bu API uç noktasına https://msdocs-example-api.azurewebsites.net/api/RandomNumberdağıtılır. Ancak API'yi çağırmak için erişim anahtarını d0c5atM1cr0s0ft bir ?code= URL parametresinde veya HTTP üst bilgisinin bir 'x-functions-key' özelliğinde sağlamanız gerekir. Örneğin, uygulamayı ve API'yi dağıttığınızda bu URL'yi bir tarayıcıda veya curl'de deneyin: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Erişim anahtarı geçerliyse, uç nokta 1 ile 999 arasında bir sayı olan ve {"value": 959} gibi örneklenebilecek "değer" adlı tek bir özelliği içeren bir JSON yanıtı döndürür.

Uç nokta Python'da uygulanır ve Azure İşlevleri'ne dağıtılır. Kod aşağıdaki gibidir:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

Örnek depoda, bu kod third_party_api/RandomNumber/__init__.py altında bulunur. RandomNumber klasörü işlevin adını sağlar ve __init__.py kodu içerir. klasöründeki başka bir dosya olanfunction.json, işlevin ne zaman tetiklendiğinden söz eder. third_party_api üst klasöründeki diğer dosyalar, işlevin kendisini barındıran Azure İşlevi uygulamasının ayrıntılarını sağlar.

Kodu dağıtmak için örnek sağlama betiği şu adımları gerçekleştirir:

  1. Durumu ve iç işlemleri yönetmek için Azure CLI komutuyla az storage account create Azure İşlevleri için bir yedekleme depolama hesabı oluşturun.

  2. Azure CLI komutuyla bir Azure İşlevleri uygulaması oluşturun. az function app create

  3. Konağın tam olarak sağlanması için 60 saniye bekledikten sonra Azure İşlevleri Temel Araçları komutunu kullanarak kodu dağıtabilirsiniz.

  4. İşleve erişim anahtarını ( d0c5atM1cr0s0ft, ) atayın. (İşlev anahtarlarında arka plan için bkz. Azure İşlevleri'nin güvenliğini sağlama .)

    Sağlama betiğinde bu adım az functionapp function keys set Azure CLI komutu kullanılarak gerçekleştirilir.

    İsterseniz, REST API çağrısı aracılığıyla İşlevler Anahtar Yönetimi API'sine yapılan bu adımın nasıl yapılacağını göstermek için açıklamalar eklenir. Bu REST API'yi çağırmak için, İşlev uygulamasının ana anahtarını almak için önce başka bir REST API çağrısı yapılmalıdır.

Erişim anahtarlarını Azure portalı üzerinden de atayabilirsiniz. İşlevler uygulamasının sayfasında İşlevler'i seçin ve ardından güvenliği sağlamak için belirli bir işlevi seçin (bu örnekte adı RandomNumber verilmiştir). İşlevin sayfasında İşlev Anahtarları'nı seçerek bu anahtarları oluşturup yönetebileceğiniz sayfayı açın.