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

Завершено

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

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

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

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

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

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

  • Создайте субъект-службу 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 a role assignment under the scope of "/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss"
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "pppppppp-pppp-pppp-pppp-pppppppppppp",
      "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
    }
    
  2. Используя сведения из az ad sp create-for-rbac ответа, создайте файл проверки подлинности с информацией субъекта-службы.

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

      cd ~/MyWebApp
      code auth.json
      
    2. Добавьте следующий синтаксис:

      {
        "clientId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "clientSecret": "pppppppp-pppp-pppp-pppp-pppppppppppp",
        "subscriptionId": "ssssssss-ssss-ssss-ssss-ssssssssssss",
        "tenantId": "tttttttt-tttt-tttt-tttt-tttttttttttt"
      }
      

      Где:

      Параметр Описание
      clientId Указывает значение appId субъекта-службы.
      clientSecret Указывает значение password субъекта-службы.
      subscriptionId Указывает подписку Azure, которая была возвращена командой az ad sp create-for-rbac.
      tenantId Указывает значение 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>:

      <authentication>
        <file>/absolute/path/to/auth.json</file>
      </authentication>
      

      Где /absolute/path/to/auth.json — это полный путь к файлу auth.json, созданному ранее.

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

      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>1.9.0</version>  
        <configuration> 
          <schemaVersion>V2</schemaVersion>  
          <resourceGroup>maven-publish</resourceGroup>  
          <appName>MyWebApp-1234567890</appName>  
          <pricingTier>F1</pricingTier>  
          <region>centralus</region>
          <authentication>
            <file>/home/username/MyWebApp/auth.json</file>
          </authentication>
          <runtime> 
            <os>linux</os>  
            <javaVersion>jre8</javaVersion>  
            <webContainer>TOMCAT 8.5</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] ------------------------------------------------------------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.9.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Authenticate with file: /home/username/MyWebApp/auth.json
    [INFO] [Correlation ID: 12345678-1234-1234-1234-123456789abc] Instance discovery was successful
    [INFO] Updating app service plan
    [INFO] Updating target Web App...
    [INFO] Successfully updated Web App.
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 1 resource to /home/robert/MyWebApp/target/azure-webapp/MyWebApp-1234567890
    [INFO] Trying to deploy artifact to MyWebApp-1234567890...
    [INFO] Deploying the war file MyWebApp.war...
    [INFO] Successfully deployed the artifact to https://mywebapp-1234567890.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 28.759 s
    [INFO] Finished at: 2020-02-12T21:12:00+00:00
    [INFO] Final Memory: 43M/286M
    [INFO] ------------------------------------------------------------------------
    

    Строка Authenticate with file: /home/username/MyWebApp/auth.json в ответе указывает, что файл проверки подлинности использовался для публикации веб-приложения в 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 a role assignment under the scope of "/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss"
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "pppppppp-pppp-pppp-pppp-pppppppppppp",
      "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>:

      <authentication>
        <serverId>azure-auth</serverId>
      </authentication>
      

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

      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>1.9.0</version>  
        <configuration> 
          <schemaVersion>V2</schemaVersion>  
          <resourceGroup>maven-publish</resourceGroup>  
          <appName>MyWebApp-1234567890</appName>  
          <pricingTier>F1</pricingTier>  
          <region>centralus</region>
          <authentication>
            <serverId>azure-auth</serverId>
          </authentication>
          <runtime> 
            <os>linux</os>  
            <javaVersion>jre8</javaVersion>  
            <webContainer>TOMCAT 8.5</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] ------------------------------------------------------------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.9.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Authenticate with ServerId: azure-auth
    [INFO] [Correlation ID: 12345678-1234-1234-1234-123456789abc] Instance discovery was successful
    [INFO] Updating app service plan
    [INFO] Updating target Web App...
    [INFO] Successfully updated Web App.
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 1 resource to /home/robert/MyWebApp/target/azure-webapp/MyWebApp-1234567890
    [INFO] Trying to deploy artifact to MyWebApp-1234567890...
    [INFO] Deploying the war file MyWebApp.war...
    [INFO] Successfully deployed the artifact to https://mywebapp-1234567890.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 21.648 s
    [INFO] Finished at: 2020-02-12T21:12:00+00:00
    [INFO] Final Memory: 43M/300M
    [INFO] ------------------------------------------------------------------------
    

    Строка Authenticate with ServerId: azure-auth в ответе указывает, что учетные данные субъекта-службы использовались для публикации веб-приложения в Azure.

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

1.

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

2.

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

3.

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