Проверка подлинности развертываний в службе приложений Azure

Завершено

Для выполнения упражнений в этом модуле вы вошли в среду-"песочницу". Так как эта среда является интерактивной, все развертывания проходят проверку подлинности с использованием учетных данных, которые использовались при инициализации "песочницы". Однако ваши развертывания не будут использовать эту интерактивную среду, если вы автоматизируете процесс сборки. В сценарии автоматизации необходимо настроить в проекте один из поддерживаемых методов проверки подлинности.

В этом модуле вы узнаете, как ваша компания может настроить Maven для использования проверки подлинности Azure.

Проверка подлинности вашего веб-приложения

Azure предоставляет гибкие возможности для выбора способа проверки подлинности приложения. Выбор варианта зависит от среды сборки вашей компании. Ниже перечислены три варианта проверки подлинности кода приложения с помощью Maven в порядке сложности (от наименьшего до большинства):

  • Проверка подлинности с помощью Azure CLI или использование Cloud Shell в портал Azure.

  • Создайте субъект-службу Azure, создайте JSON-файл с учетными данными субъекта-службы и измените файл проекта pom.xml .

  • Создайте субъект-службу Azure, добавьте учетные данные субъекта-службы в файл Maven и измените файл проектаpom.xml, чтобы использовать параметры Mavensettings.xml.

Корпорация Майкрософт рекомендует использовать третий вариант, так как он обеспечивает наиболее надежный, гибкий и последовательный подход к проверке подлинности. В реальном мире существующие веб-приложения Java вашей компании могут работать на локальных серверах, на которых не установлены средства Azure CLI. Учитывая это, вы, вероятно, реализуете рекомендацию по добавлению проверки подлинности с помощью субъекта-службы и файла Maven settings.xml . Однако в этом упражнении у "песочницы" недостаточно прав для создания субъектов-служб.

Проверка подлинности с помощью Azure CLI

Самый простой способ проверки подлинности Maven — вход с помощью Azure CLI. Подключаемый модуль Maven для службы приложений Azure может развернуть приложение с использованием ваших учетных данных без дополнительной настройки.

Если вы используете Azure Cloud Shell, так как вы выполнили упражнения с песочницей Microsoft Learn в этом модуле, вы вошли в Azure по умолчанию; Вам больше не нужно выполнять команды. Если же вы используете Azure CLI на отдельном компьютере, вам потребуется выполнить вход с помощью команды az login.

Проверка подлинности с помощью субъекта-службы

Второй метод проверки подлинности веб-приложения включает создание субъекта-службы Azure и сохранение учетных данных субъекта-службы в файл, на который вы будете ссылаться из параметров проекта.

Чтобы создать субъект-службу Azure с помощью Azure CLI, выполните следующие действия.

  1. Выполните следующую команду из Azure CLI, чтобы создать субъект-службу Azure:

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Где https://mywebapp-1234567890.azurewebsites.net/ — это URL-адрес вашего приложения.

    Эта команда возвращает ответ с объектом JSON, похожим на следующий пример:

    Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "...",
      "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
    }
    
  2. Измените файл веб-приложения pom.xml , чтобы использовать сведения в выходных данных JSON.

    1. pom.xml Откройте файл с помощью редактора кода:

      cd ~/MyWebApp
      code pom.xml
      
    2. Найдите раздел <configuration> для azure-webapp-maven-plugin.

    3. Добавьте следующий XML-код после строки, <region> содержащей элемент, и используйте сведения в выходных данных JSON:

      <auth>
          <type>service_principal</type>
          <client>value-of-appId</client>
          <tenant>value-of-tenant</tenant>
          <key>value-of-password</key>
          <environment>azure</environment>
      </auth>
      

      Раздел azure-webapp-maven-plugin у вас должен иметь следующий вид:

      <plugin>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-webapp-maven-plugin</artifactId>
          <version>2.13.0</version>
          <configuration>
              <schemaVersion>v2</schemaVersion>
              <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup>
              <appName>MyWebApp-1714654093047</appName>
              <pricingTier>S1</pricingTier>
              <region>centralus</region>
              <auth>
                  <type>service_principal</type>
                  <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client>
                  <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant>
                  <key>abcdefghijklmnopqrstuvwxyz1234567890</key>
                  <environment>azure</environment>
              </auth>
              <runtime>
                  <os>Linux</os>
                  <javaVersion>Java 17</javaVersion>
                  <webContainer>Tomcat 10.0</webContainer>
              </runtime>
              <deployment>
                  <resources>
                      <resource>
                          <directory>${project.basedir}/target</directory>
                          <includes>
                              <include>*.war</include>
                          </includes>
                      </resource>
                  </resources>
              </deployment>
          </configuration>
      </plugin>
      
      
    4. Сохраните изменения, нажав CTRL+S.

    5. Закройте редактор кода, нажав CTRL+Q.

  3. Используйте Maven для создания и развертывания веб-приложения в службе приложение Azure:

    mvn azure-webapp:deploy
    

    Maven отображает ряд сообщений сборки, и окончательное сообщение должно указывать на успешное развертывание в Azure:

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] -------------------< com.microsoft.example:MyWebApp >-------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO] 
    [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Auth type: SERVICE_PRINCIPAL
    [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559
    [INFO] There is only one subscription '...' in your account, will use it automatically.
    [INFO] Subscription: ...
    [INFO] Failed to get version of your artifact, skip artifact compatibility test
    [INFO] Trying to deploy external resources to MyWebApp-1714654093047...
    [INFO] Successfully deployed the resources to MyWebApp-1714654093047
    [INFO] Trying to deploy artifact to MyWebApp-1714654093047...
    [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war]  ...
    [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net                            
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  47.052 s
    [INFO] Finished at: 2024-05-02T13:10:54Z
    [INFO] ------------------------------------------------------------------------
    

    Строка Auth type: SERVICE_PRINCIPAL в ответе указывает, что субъект-служба использовалась для публикации веб-приложения в Azure.

Проверка подлинности с помощью файла settings.xml Maven

Третий метод проверки подлинности веб-приложения включает создание субъекта-службы Azure, создание файла Maven, содержащего учетные данные субъекта-службы, и изменение файла проекта pom.xml для использования параметров Mavensettings.xml.

Действия по созданию субъекта-службы Azure с Azure CLI будут такими же, как и в предыдущем разделе этого модуля.

  1. Выполните следующую команду из Azure CLI, чтобы создать субъект-службу Azure:

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Где https://mywebapp-1234567890.azurewebsites.net/ — это URL-адрес вашего приложения.

    Эта команда возвращает ответ с объектом JSON, похожим на следующий пример:

    Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "...",
      "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
    }
    
  2. Создайте пользовательскую версию файла settings.xml для использования в Maven.

    1. Создайте XML-файл для параметров Maven с помощью редактора кода:

      code ~/.m2/settings.xml
      
    2. Вставьте следующий код XML в файл.

      <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <servers>
          <server>
             <id>azure-auth</id>
             <configuration>
                 <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client>
                 <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant>
                 <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key>
             </configuration>
          </server>
        </servers>
      </settings>
      

      Где:

      Параметр Описание
      client Указывает значение appId субъекта-службы.
      key Указывает значение password субъекта-службы.
      tenant Указывает значение tenant субъекта-службы.
    3. Сохраните изменения, нажав CTRL+S.

    4. Закройте редактор кода, нажав CTRL+Q.

  3. Измените файл веб-приложения pom.xml , чтобы ссылаться на файл проверки подлинности.

    1. pom.xml Откройте файл с помощью редактора кода:

      cd ~/MyWebApp
      code pom.xml
      
    2. Найдите раздел <configuration> для azure-webapp-maven-plugin.

    3. Добавьте следующий XML-код после строки, содержащей элемент <region>:

      <auth>
        <type>service_principal</type>
        <serverId>azure-auth</serverId>
      </auth>
      

      Раздел azure-webapp-maven-plugin у вас должен иметь следующий вид:

      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>2.13.0</version>  
        <configuration> 
          <schemaVersion>V2</schemaVersion>  
          <resourceGroup>maven-publish</resourceGroup>  
          <appName>MyWebApp-1234567890</appName>  
          <pricingTier>S1</pricingTier>  
          <region>centralus</region>
          <auth>
            <type>service_principal</type>
            <serverId>azure-auth</serverId>
          </auth>
          <runtime>
              <os>Linux</os>
              <javaVersion>Java 17</javaVersion>
              <webContainer>Tomcat 10.0</webContainer>
          </runtime>
          <deployment> 
            <resources> 
              <resource> 
                <directory>${project.basedir}/target</directory>  
                <includes> 
                  <include>*.war</include> 
                </includes> 
              </resource> 
            </resources> 
          </deployment> 
        </configuration> 
      </plugin> 
      
    4. Сохраните изменения, нажав CTRL+S.

    5. Закройте редактор кода, нажав CTRL+Q.

  4. Используйте Maven для создания и развертывания веб-приложения в службе приложение Azure:

    mvn azure-webapp:deploy
    

    Maven отображает ряд сообщений сборки, и окончательное сообщение должно указывать на успешное развертывание в Azure:

    [INFO] -------------------< com.microsoft.example:MyWebApp >-------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO] 
    [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Auth type: SERVICE_PRINCIPAL
    [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
    [INFO] There is only one subscription '...' in your account, will use it automatically.
    [INFO] Subscription: ...
    [INFO] Failed to get version of your artifact, skip artifact compatibility test
    [INFO] Trying to deploy external resources to MyWebApp-1714654093047...
    [INFO] Successfully deployed the resources to MyWebApp-1714654093047
    [INFO] Trying to deploy artifact to MyWebApp-1714654093047...
    [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war]  ...
    [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net                            
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  53.611 s
    [INFO] Finished at: 2024-05-02T13:53:31Z
    [INFO] ------------------------------------------------------------------------
    

    Строка Auth type: SERVICE_PRINCIPAL в ответе указывает, что учетные данные субъекта-службы использовались для публикации веб-приложения в Azure.

Проверьте свои знания

1.

Какой из следующих методов не поддерживается для проверки подлинности развертываний с помощью подключаемого модуля Maven для службы приложение Azure?

2.

True или false: можно сохранить JSON, возвращаемый при создании субъекта-службы Azure в файл, и использовать этот файл для проверки подлинности с помощью подключаемого модуля Maven для службы приложение Azure.

3.

Какой из следующих методов рекомендуется использовать для проверки подлинности развертываний с помощью подключаемого модуля Maven для службы приложений Azure?