Authentifizieren von Bereitstellungen bei Azure App Service
- 10 Minuten
Um die Übungen in diesem Modul abzuschließen, wurden Sie in der Sandkastenumgebung angemeldet. Da diese Umgebung interaktiv ist, wurden alle Ihre Bereitstellungen mithilfe der Anmeldeinformationen authentifiziert, die Sie beim Initialisieren der Sandbox verwendet haben. Für Ihre Bereitstellungen wird diese interaktive Umgebung jedoch nicht verwendet, wenn Sie Ihren Erstellungsprozess automatisieren. In einem Automatisierungsszenario müssen Sie Ihr Projekt so konfigurieren, dass eine der unterstützten Authentifizierungsmethoden verwendet wird.
In dieser Lektion erfahren Sie, wie Ihr Unternehmen Maven für die Verwendung der Azure-Authentifizierung konfigurieren kann.
Authentifizieren Ihrer Web-App
Azure bietet Ihnen die Flexibilität, zu entscheiden, wie Sie Ihre App authentifizieren möchten. Die von Ihnen ausgewählte Option hängt von der Entwicklungsumgebung Ihres Unternehmens ab. Die drei Optionen zum Authentifizieren Ihres Anwendungscodes bei Maven sind hier aufgeführt, in Der Reihenfolge der Komplexität (von der geringsten bis zur meisten):
Authentifizieren Sie sich mithilfe der Azure CLI oder verwenden Sie die Cloud Shell im Azure-Portal.
Erstellen Sie einen Azure-Dienstprinzipal, erstellen Sie eine JSON-Datei mit Ihren Dienstprinzipalanmeldeinformationen, und ändern Sie die
pom.xml
-Datei Ihres Projekts.Erstellen eines Azure-Dienstprinzipals, Hinzufügen Ihrer Dienstprinzipalanmeldeinformationen in einer Maven-
settings.xml
-Datei und Anpassen derpom.xml
-Datei Ihres Projekts, sodass die Maven-Einstellungen verwendet werden.
Microsoft empfiehlt die dritte Option, da sie den zuverlässigsten, flexiblen und konsistenten Ansatz für die Authentifizierung bietet. In einer realen Umgebung werden die vorhandenen Java-Web-Apps Ihres Unternehmens möglicherweise auf lokalen Servern ausgeführt, auf denen die Azure CLI-Tools nicht installiert sind. Auf dieser Grundlage würden Sie vermutlich die Empfehlung implementieren, Authentifizierung mithilfe eines Dienstprinzipals und einer Maven-settings.xml
-Datei hinzuzufügen. Im Rahmen dieser Übung stehen für die Sandbox jedoch nicht ausreichend Berechtigungen zum Erstellen von Dienstprinzipalen zur Verfügung.
Authentifizierung mit der Azure CLI
Die einfachste Möglichkeit zum Authentifizieren von Maven besteht darin, sich mit der Azure CLI anzumelden. Das Maven-Plug-In für Azure App Service kann die App dann mit Ihren Anmeldeinformationen bereitstellen, ohne dass eine zusätzliche Konfiguration erforderlich ist.
Wenn Sie azure Cloud Shell verwenden, während Sie die Übungen mit der Microsoft Learn Sandbox in diesem Modul abgeschlossen haben, sind Sie standardmäßig bei Azure angemeldet. Sie müssen keine weiteren Befehle ausführen. Wenn Sie jedoch die Azure CLI von einem separaten Computer verwenden, müssen Sie sich mit dem az login
Befehl anmelden.
Authentifizierung mit einem Dienstprinzipal
Die zweite Methode zur Authentifizierung Ihrer Web-App besteht darin, einen Azure-Dienstprinzipal zu erstellen und die Anmeldeinformationen des Dienstprinzipals in eine Datei zu speichern, auf die Sie in den Projekteinstellungen verweisen.
Führen Sie die folgenden Schritte aus, um einen Azure-Dienstprinzipal mit der Azure CLI zu erstellen.
Führen Sie den folgenden Befehl aus der Azure CLI aus, um einen Azure-Dienstprinzipal zu erstellen:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Wo
https://mywebapp-1234567890.azurewebsites.net/
befindet sich die URL Ihrer Web-App.Dieser Befehl gibt eine Antwort mit einem JSON-Objekt zurück, das dem folgenden Beispiel ähnelt:
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" }
Ändern Sie die Datei Ihrer Web-App
pom.xml
so, dass sie die Informationen in der JSON-Ausgabe verwendet.Öffnen Sie Ihre
pom.xml
Datei mit dem Code-Editor:cd ~/MyWebApp code pom.xml
Suchen Sie nach dem
<configuration>
-Abschnitt fürazure-webapp-maven-plugin
.Fügen Sie den folgenden XML-Code nach der Zeile hinzu, die das
<region>
Element enthält, und verwenden Sie die Informationen in der JSON-Ausgabe:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>
Ihr
azure-webapp-maven-plugin
Abschnitt sollte nun dem folgenden Beispiel ähneln:<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>
Speichern Sie Ihre Änderungen, indem Sie STRG+S eingeben.
Beenden Sie den Code-Editor, indem Sie STRG+Q eingeben.
Verwenden Sie Maven, um Ihre Web-App in Azure App Service zu erstellen und bereitzustellen:
mvn azure-webapp:deploy
Maven zeigt eine Reihe von Buildnachrichten an, und die endgültige Meldung sollte auf eine erfolgreiche Bereitstellung in Azure hinweisen:
[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] ------------------------------------------------------------------------
Die Zeile
Auth type: SERVICE_PRINCIPAL
in der Antwort gibt an, dass der Dienstprinzipal verwendet wurde, um Ihre Web-App in Azure zu veröffentlichen.
Authentifizierung mit einer Maven-Datei settings.xml
Die dritte Methode für die Authentifizierung Ihrer Web-App beinhaltet das Erstellen eines Azure-Dienstprinzipals. Anschließend erstellen Sie eine Maven-settings.xml
-Datei, die Ihre Dienstprinzipalanmeldeinformationen enthält, und dann passen Sie die pom.xml
-Datei Ihres Projekts so an, dass die Maven-Einstellungen verwendet werden.
Die Schritte zum Erstellen eines Azure-Dienstprinzipals mit der Azure CLI sind identisch mit dem vorherigen Abschnitt dieser Einheit.
Führen Sie den folgenden Befehl aus der Azure CLI aus, um einen Azure-Dienstprinzipal zu erstellen:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Wo
https://mywebapp-1234567890.azurewebsites.net/
befindet sich die URL Ihrer Web-App.Dieser Befehl gibt eine Antwort mit einem JSON-Objekt zurück, das dem folgenden Beispiel ähnelt:
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" }
Erstellen Sie eine Benutzerversion der Datei
settings.xml
, die von Maven verwendet werden soll.Erstellen Sie eine neue XML-Datei für Ihre Maven-Einstellungen mit dem Code-Editor:
code ~/.m2/settings.xml
Fügen Sie den folgenden XML-Code in die Datei ein:
<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>
Ort:
Parameter BESCHREIBUNG client
Gibt den appId
-Wert des Dienstprinzipals ankey
Gibt den password
-Wert des Dienstprinzipals antenant
Gibt den tenant
-Wert des Dienstprinzipals anSpeichern Sie Ihre Änderungen, indem Sie STRG+S eingeben.
Beenden Sie den Code-Editor, indem Sie STRG+Q eingeben.
Ändern Sie die Datei Ihrer Web-App, um auf die Authentifizierungsdatei
pom.xml
zu verweisen.Öffnen Sie Ihre
pom.xml
Datei mit dem Code-Editor:cd ~/MyWebApp code pom.xml
Suchen Sie nach dem
<configuration>
-Abschnitt fürazure-webapp-maven-plugin
.Fügen Sie den folgenden XML-Code nach der Zeile hinzu, die das
<region>
Element enthält:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Ihr
azure-webapp-maven-plugin
Abschnitt sollte nun dem folgenden Beispiel ähneln:<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>
Speichern Sie Ihre Änderungen, indem Sie STRG+S eingeben.
Beenden Sie den Code-Editor, indem Sie STRG+Q eingeben.
Verwenden Sie Maven, um Ihre Web-App in Azure App Service zu erstellen und bereitzustellen:
mvn azure-webapp:deploy
Maven zeigt eine Reihe von Buildnachrichten an, und die endgültige Meldung sollte auf eine erfolgreiche Bereitstellung in Azure hinweisen:
[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] ------------------------------------------------------------------------
Die
Auth type: SERVICE_PRINCIPAL
Zeile in der Antwort gibt an, dass Ihre Dienstprinzipal-Anmeldeinformationen verwendet wurden, um Ihre Webanwendung auf Azure zu veröffentlichen.