Udostępnij przez


Samouczek: wywoływanie usługi Azure Functions z aplikacji Azure Spring Apps przy użyciu tożsamości zarządzanej

Note

Plany Podstawowy, Standardowy i Enterprise weszły w okres wycofania z dniem 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Ten artykuł dotyczy:✅ Podstawowa/Standardowa ✅ Enterprise

W tym artykule pokazano, jak utworzyć tożsamość zarządzaną dla aplikacji hostowanej w usłudze Azure Spring Apps i użyć jej do wywoływania funkcji wyzwalanych przez protokół HTTP.

Usługi Azure Functions i App Services mają zintegrowaną obsługę uwierzytelniania Microsoft Entra. Korzystając z tej wbudowanej funkcji uwierzytelniania wraz z tożsamościami zarządzanymi dla usługi Azure Spring Apps, można wywoływać usługi RESTful przy użyciu nowoczesnych semantyki OAuth. Ta metoda nie wymaga przechowywania wpisów tajnych w kodzie i zapewnia bardziej szczegółowe mechanizmy kontroli kontrolowania dostępu do zasobów zewnętrznych.

Prerequisites

Tworzenie grupy zasobów

Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Użyj następującego polecenia, aby utworzyć grupę zasobów zawierającą aplikację funkcji:

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

Aby uzyskać więcej informacji, zapoznaj się z poleceniem az group create.

Utwórz aplikację funkcji

Aby utworzyć aplikację funkcji, musisz najpierw utworzyć konto magazynu kopii zapasowej. Możesz użyć polecenia az storage account create .

Important

Każda aplikacja typu Function i konto przechowywania muszą mieć unikatową nazwę.

Użyj następującego polecenia, aby utworzyć konto magazynowe. Zastąp <function-app-name> nazwą aplikacji Function i <storage-account-name> nazwą konta przechowywania.

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

Po utworzeniu konta magazynu użyj następującego polecenia, aby utworzyć aplikację funkcji:

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

Zanotuj zwróconą hostNames wartość, która ma format https://<your-functionapp-name>.azurewebsites.net. Użyj tej wartości w głównym adresie URL aplikacji Function do testowania aplikacji Function.

Włącz uwierzytelnianie Microsoft Entra

Wykonaj poniższe kroki, aby włączyć uwierzytelnianie Microsoft Entra w celu uzyskania dostępu do aplikacji Function.

  1. W witrynie Azure Portal przejdź do grupy zasobów, a następnie otwórz utworzoną aplikację funkcji.
  2. W okienku nawigacji wybierz pozycję Uwierzytelnianie , a następnie wybierz pozycję Dodaj dostawcę tożsamości w okienku głównym.
  3. Na stronie Dodawanie dostawcy tożsamości wybierz pozycję Microsoft z menu rozwijanego Dostawca tożsamości .
  4. Wybierz Dodaj.
  5. W obszarze Podstawowe ustawienia na stronie Dodawanie dostawcy tożsamości ustaw opcję Obsługiwane typy kont na Dowolny katalog Microsoft Entra — Multi-tenantowy.
  6. Ustaw nieuwierzytelnione żądania na http 401 Brak autoryzacji: zalecane dla interfejsów API. To ustawienie gwarantuje, że wszystkie nieuwierzytelnione żądania zostaną odrzucone (401 odpowiedź).
  7. Wybierz Dodaj.

Po dodaniu ustawień aplikacja funkcjonalna zostanie ponownie uruchomiona, a wszystkie kolejne żądania będą wymagały zalogowania się poprzez Microsoft Entra ID. Możesz sprawdzić, że żądania nieuwierzytelnione są obecnie odrzucane korzystając z głównego adresu URL aplikacji Function (zwróconego w danych wyjściowych polecenia hostNamesaz functionapp create). Następnie powinno nastąpić przekierowanie do ekranu logowania Microsoft Entra w Twojej organizacji.

Do późniejszego użycia potrzebne są identyfikator aplikacji oraz URI identyfikatora aplikacji. W Azure portal przejdź do utworzonej aplikacji Function App.

Aby uzyskać identyfikator aplikacji, wybierz Uwierzytelnianie w okienku nawigacji, a następnie skopiuj wartość Identyfikatora aplikacji (klienta) dostawcy tożsamości, obejmującego nazwę aplikacji funkcji.

Zrzut ekranu portalu Azure przedstawiający stronę uwierzytelniania dla aplikacji funkcji, z wyróżnioną nazwą aplikacji funkcji w sekcji dostawcy tożsamości.

Aby uzyskać identyfikator URI aplikacji, wybierz pozycję Udostępnij interfejs API w panelu nawigacyjnym, a następnie skopiuj wartość identyfikatora URI aplikacji.

Zrzut ekranu portalu Azure przedstawiający stronę Udostępnianie interfejsu API dla aplikacji funkcji z wyróżnionym identyfikatorem URI aplikacji.

Tworzenie funkcji wyzwalanej przez protokół HTTP

W pustym katalogu lokalnym użyj następujących poleceń, aby utworzyć nową aplikację funkcji i dodać funkcję wyzwalaną przez protokół HTTP:

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

Domyślnie funkcje używają uwierzytelniania opartego na kluczach do zabezpieczania punktów końcowych HTTP. Aby włączyć uwierzytelnianie firmy Microsoft Entra, aby zabezpieczyć dostęp do funkcji, ustaw authLevel klucz na anonymous w pliku function.json, jak pokazano w poniższym przykładzie:

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

Aby uzyskać więcej informacji, zobacz sekcję Zabezpieczanie punktów końcowych HTTP w temacieZabezpieczanie usługi Azure Functions.

Użyj następującego polecenia, aby opublikować aplikację w wystąpieniu utworzonym w poprzednim kroku:

func azure functionapp publish <function-app-name>

Dane wyjściowe polecenia publikowania powinny zawierać adres URL nowo utworzonej funkcji, jak pokazano w następujących danych wyjściowych:

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

Tworzenie wystąpienia i aplikacji usługi Azure Spring Apps

Użyj następujących poleceń, aby dodać rozszerzenie spring i utworzyć nowe wystąpienie usługi Azure Spring Apps:

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

Użyj następującego polecenia, aby utworzyć aplikację o nazwie msiapp z tożsamością zarządzaną przypisaną przez system zgodnie z żądaniem parametru --assign-identity :

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

Tworzenie przykładowej aplikacji Spring Boot w celu wywołania funkcji

Ten przykład wywołuje funkcję uruchamianą za pomocą protokołu HTTP, najpierw żądając tokenu dostępu z punktu końcowego MSI i używając tego tokenu do uwierzytelniania żądania HTTP funkcji. Aby uzyskać więcej informacji, zobacz sekcję Pobieranie tokenu przy użyciu protokołu HTTP w temacie How to use managed identities for Azure resources on an Azure VM to acquire an access token (Jak używać tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure w celu uzyskania tokenu dostępu).

  1. Użyj następującego polecenia sklonuj przykładowy projekt:

    git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
    
  2. Użyj następującego polecenia, aby określić identyfikator URI funkcji i nazwę wyzwalacza we właściwościach aplikacji:

    cd azure-spring-apps-samples/managed-identity-function
    vim src/main/resources/application.properties
    
  3. Aby użyć tożsamości zarządzanej dla aplikacji Azure Spring Apps, dodaj następujące właściwości i przypisz im te wartości w pliku src/main/resources/application.properties:

    azure.function.uri=https://<function-app-name>.azurewebsites.net
    azure.function.triggerPath=httptrigger
    azure.function.application-id.uri=<function-app-application-ID-uri>
    
  4. Użyj następującego polecenia, aby spakować przykładową aplikację:

    mvn clean package
    
  5. Użyj następującego polecenia, aby wdrożyć aplikację w usłudze Azure Spring Apps:

    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. Użyj następującego polecenia, aby uzyskać dostęp do publicznego punktu końcowego lub testowego punktu końcowego w celu przetestowania aplikacji:

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

    W treści odpowiedzi zwracany jest następujący komunikat.

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

Dalsze kroki