Aracılığıyla paylaş


Öğretici: Azure Spring Apps uygulamasından Azure İşlevleri çağırmak için yönetilen kimlik kullanma

Not

Temel, Standart ve Kurumsal planları 17 Mart 2025'te kullanımdan kaldırılma dönemine girdi. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Bu makale şunlar için geçerlidir:✅ Temel/Standart ✅ Kurumsal

Bu makalede, Azure Spring Apps'te barındırılan bir uygulama için yönetilen kimlik oluşturma ve BUNU KULLANARAK HTTP ile tetiklenen İşlevleri çağırma adımları gösterilmektedir.

Hem Azure İşlevleri hem de Uygulama Hizmetleri, Microsoft Entra kimlik doğrulaması için yerleşik destek sunar. Azure Spring Apps için Yönetilen Kimlikler ile birlikte bu yerleşik kimlik doğrulama özelliğini kullanarak, modern OAuth semantiğini kullanarak RESTful hizmetlerini çağırabilirsiniz. Bu yöntem gizli dizilerin kodda depolanmasını gerektirmez ve dış kaynaklara erişimi denetlemek için daha ayrıntılı denetimler sağlar.

Önkoşullar

Kaynak grubu oluşturma

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. İşlev uygulamasını içerecek bir kaynak grubu oluşturmak için aşağıdaki komutu kullanın:

az group create --name <resource-group-name> --location <location>

Daha fazla bilgi için az group create komutuna bakın.

İşlev uygulaması oluşturma

İşlev uygulaması oluşturmak için önce bir yedekleme depolama hesabı oluşturmanız gerekir. az storage account create komutunu kullanabilirsiniz.

Önemli

Her İşlev uygulamasının ve depolama hesabının benzersiz bir adı olmalıdır.

Depolama hesabını oluşturmak için aşağıdaki komutu kullanın. değerini İşlev uygulamanızın adıyla ve <function-app-name> depolama hesabınızın adıyla değiştirin<storage-account-name>.

az storage account create \
    --resource-group <resource-group-name> \
    --name <storage-account-name> \
    --location <location> \
    --sku Standard_LRS

Depolama hesabı oluşturulduktan sonra aşağıdaki komutu kullanarak İşlev uygulamasını oluşturun:

az functionapp create \
    --resource-group <resource-group-name> \
    --name <function-app-name> \
    --consumption-plan-location <location> \
    --os-type windows \
    --runtime node \
    --storage-account <storage-account-name> \
    --functions-version 4

biçimindeki hostNamesdöndürülen https://<your-functionapp-name>.azurewebsites.net değeri not edin. İşlev uygulamasını test için İşlev uygulamasının kök URL'sindeki bu değeri kullanın.

Microsoft Entra kimlik doğrulamasını etkinleştirme

İşlev uygulamanıza erişmek için Microsoft Entra kimlik doğrulamasını etkinleştirmek için aşağıdaki adımları kullanın.

  1. Azure portalında kaynak grubunuza gidin ve oluşturduğunuz İşlev uygulamasını açın.
  2. Gezinti bölmesinde Kimlik doğrulaması'nı ve ardından ana bölmede Kimlik sağlayıcısı ekle'yi seçin.
  3. Kimlik sağlayıcısı ekle sayfasında, Kimlik sağlayıcısı açılan menüsünden Microsoft'u seçin.
  4. Ekle'yi seçin.
  5. Kimlik sağlayıcısı ekle sayfasındaki Temel ayarlar için Desteklenen hesap türleriniHerhangi bir Microsoft Entra dizini - Çok kiracılı olarak ayarlayın.
  6. Kimliği Doğrulanmamış istekleri HTTP 401 Yetkisiz: API'ler için önerilir olarak ayarlayın. Bu ayar, kimliği doğrulanmamış tüm isteklerin reddedilmesini sağlar (401 yanıtı).
  7. Ekle'yi seçin.

Ayarları ekledikten sonra İşlev uygulaması yeniden başlatılır ve sonraki tüm isteklerden Microsoft Entra Kimliği aracılığıyla oturum açması istenir. Kimliği doğrulanmamış isteklerin şu anda İşlev uygulamasının kök URL'si (komutun hostNames çıkışında az functionapp create döndürülür) ile reddedildiğini test edebilirsiniz. Daha sonra kuruluşunuzun Microsoft Entra oturum açma ekranına yönlendirilmelisiniz.

Daha sonra kullanmak için Uygulama Kimliği'ne ve Uygulama Kimliği URI'sine ihtiyacınız vardır. Azure portalında, oluşturduğunuz İşlev uygulamasına gidin.

Uygulama Kimliği'ni almak için gezinti bölmesinde Kimlik Doğrulaması'nı seçin ve ardından İşlev uygulamasının adını içeren kimlik sağlayıcısının Uygulama (istemci) Kimliği değerini kopyalayın.

Kimlik sağlayıcısında İşlev uygulaması adının vurgulandığı bir İşlev uygulamasının Kimlik Doğrulaması sayfasını gösteren Azure portalının ekran görüntüsü.

Uygulama Kimliği URI'sini almak için gezinti bölmesinden Bir API'yi kullanıma sunma'yı seçin ve uygulama kimliği URI değerini kopyalayın.

Uygulama Kimliği URI'si vurgulanmış bir İşlev uygulaması için API'yi kullanıma sunma sayfasını gösteren Azure portalının ekran görüntüsü.

HTTP ile tetiklenen işlev oluşturma

Boş bir yerel dizinde, yeni bir işlev uygulaması oluşturmak ve HTTP ile tetiklenen bir işlev eklemek için aşağıdaki komutları kullanın:

func init --worker-runtime node
func new --template HttpTrigger --name HttpTrigger

Varsayılan olarak, işlevler HTTP uç noktalarının güvenliğini sağlamak için anahtar tabanlı kimlik doğrulamasını kullanır. İşlevlere erişimin güvenliğini sağlamak üzere Microsoft Entra kimlik doğrulamasını etkinleştirmek için aşağıdaki örnekte gösterildiği gibi anahtarı authLevelanonymous dosyasında olarak ayarlayın:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      ...
    }
  ]
}

Daha fazla bilgi için Azure İşlevleri Güvenliğini Sağlama'nın Güvenli HTTP uç noktaları bölümüne bakın.

Uygulamayı önceki adımda oluşturulan örneğe yayımlamak için aşağıdaki komutu kullanın:

func azure functionapp publish <function-app-name>

Yayımla komutundan elde edilen çıkış, aşağıdaki çıkışta gösterildiği gibi yeni oluşturduğunuz işlevin URL'sini listelemelidir:

Deployment completed successfully.
Syncing triggers...
Functions in <your-functionapp-name>:
    HttpTrigger - [httpTrigger]
        Invoke url: https://<function-app-name>.azurewebsites.net/api/httptrigger

Azure Spring Apps hizmet örneği ve uygulaması oluşturma

Spring uzantısını eklemek ve Azure Spring Apps'in yeni bir örneğini oluşturmak için aşağıdaki komutları kullanın:

az extension add --upgrade --name spring
az spring create \
    --resource-group <resource-group-name> \
    --name <Azure-Spring-Apps-instance-name> \
    --location <location>

Parametresi tarafından msiapp istendiği gibi sistem tarafından atanan yönetilen kimlikle adlı --assign-identity bir uygulama oluşturmak için aşağıdaki komutu kullanın:

az spring app create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name "msiapp" \
    --assign-endpoint true \
    --assign-identity

İşlevi çağırmak için örnek bir Spring Boot uygulaması oluşturma

Bu örnek, önce MSI uç noktasından erişim belirteci isteyerek ve işlev HTTP isteğinin kimliğini doğrulamak için bu belirteci kullanarak HTTP ile tetiklenen işlevi çağırır. Daha fazla bilgi için Erişim belirteci almak için Azure VM'de Azure kaynakları için yönetilen kimlikleri kullanma bölümünün HTTP kullanarak belirteç alma bölümüne bakın.

  1. Aşağıdaki komutu kullanarak örnek projeyi kopyalayın:

    git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
    
  2. Uygulama özelliklerinizde işlev URI'nizi ve tetikleyici adını belirtmek için aşağıdaki komutu kullanın:

    cd azure-spring-apps-samples/managed-identity-function
    vim src/main/resources/application.properties
    
  3. Azure Spring Apps uygulamalarında yönetilen kimliği kullanmak için src/main/resources/application.properties adresine şu değerlerle aşağıdaki özellikleri ekleyin:

    azure.function.uri=https://<function-app-name>.azurewebsites.net
    azure.function.triggerPath=httptrigger
    azure.function.application-id.uri=<function-app-application-ID-uri>
    
  4. Örnek uygulamanızı paketlemek için aşağıdaki komutu kullanın:

    mvn clean package
    
  5. Uygulamayı Azure Spring Apps'e dağıtmak için aşağıdaki komutu kullanın:

    az spring app deploy \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name "msiapp" \
        --artifact-path target/asc-managed-identity-function-sample-0.1.0.jar
    
  6. Uygulamanızı test etmek için genel uç noktaya veya test uç noktasına erişmek için aşağıdaki komutu kullanın:

    curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
    

    Yanıt gövdesinde aşağıdaki ileti döndürülür.

    Function Response: Hello, springcloud. This HTTP triggered function executed successfully.
    

Sonraki adımlar