Проверка подлинности развертываний в службе приложений 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, выполните следующие действия.
Выполните следующую команду из 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" }
Используя сведения из
az ad sp create-for-rbac
ответа, создайте файл проверки подлинности с информацией субъекта-службы.Создайте JSON-файл с помощью редактора кода:
cd ~/MyWebApp code auth.json
Добавьте следующий синтаксис:
{ "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
субъекта-службы.Сохраните изменения, нажав CTRL+S.
Закройте редактор кода, нажав CTRL+Q.
Измените файл веб-приложения
pom.xml
, чтобы ссылаться на файл проверки подлинности.pom.xml
Откройте файл с помощью редактора кода:cd ~/MyWebApp code pom.xml
Найдите раздел
<configuration>
дляazure-webapp-maven-plugin
.Добавьте следующий 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>
Сохраните изменения, нажав CTRL+S.
Закройте редактор кода, нажав CTRL+Q.
Используйте 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 будут такими же, как и в предыдущем разделе этого модуля.
Выполните следующую команду из 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" }
Создайте пользовательскую версию файла
settings.xml
для использования в Maven.Создайте XML-файл для параметров Maven с помощью редактора кода:
code ~/.m2/settings.xml
Вставьте следующий код 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
субъекта-службы.Сохраните изменения, нажав CTRL+S.
Закройте редактор кода, нажав CTRL+Q.
Измените файл веб-приложения
pom.xml
, чтобы ссылаться на файл проверки подлинности.pom.xml
Откройте файл с помощью редактора кода:cd ~/MyWebApp code pom.xml
Найдите раздел
<configuration>
дляazure-webapp-maven-plugin
.Добавьте следующий 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>
Сохраните изменения, нажав CTRL+S.
Закройте редактор кода, нажав CTRL+Q.
Используйте 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.