Autentisera distributioner till Azure App Service
- 10 minuter
För att slutföra övningarna i den här modulen har du loggat in i sandbox-miljön. Eftersom den här miljön är interaktiv har alla dina distributioner autentiserats med de autentiseringsuppgifter som du använde när du initierade sandbox-miljön. Distributionerna använder dock inte den här interaktiva miljön om du automatiserar byggprocessen. I ett automatiseringsscenario måste du konfigurera projektet så att det använder någon av de autentiseringsmetoder som stöds.
I den här lektionen får du lära dig hur ditt företag kan konfigurera Maven att använda Azure-autentisering.
Autentisera din webbapp
Azure ger dig flexibiliteten att bestämma hur du vill autentisera din app. Vilket alternativ du väljer beror på företagets byggmiljö. De tre alternativen för att autentisera programkoden med Maven visas här i ordning efter komplexitet (från minst till de flesta):
Autentisera med hjälp av Azure CLI eller använd Cloud Shell på Azure-portalen.
Skapa ett Huvudnamn för Azure-tjänsten, skapa en JSON-fil med autentiseringsuppgifterna för tjänstens huvudnamn och ändra projektets
pom.xmlfil.Skapa ett Huvudnamn för Azure-tjänsten, lägg till autentiseringsuppgifterna för tjänstens huvudnamn i en Maven-
settings.xml-fil och ändra projektetspom.xml-fil så att maven-inställningarna används.
Microsoft rekommenderar det tredje alternativet eftersom det ger den mest tillförlitliga, flexibla och konsekventa metoden för autentisering. I en verklig miljö kan företagets befintliga Java-webbappar köras på lokala servrar som inte har Azure CLI-verktygen installerade. Med det i åtanke implementerar du förmodligen rekommendationen att lägga till autentisering med hjälp av tjänstens huvudnamn och en Maven-settings.xml-fil. För den här övningen har sandbox-miljön dock inte tillräcklig behörighet för att skapa tjänsteprincipaler.
Autentisering med Azure CLI
Det enklaste sättet att autentisera Maven är att logga in med Azure CLI. Maven-plugin-programmet för Azure App Service kan sedan distribuera appen med dina autentiseringsuppgifter, utan att det krävs någon extra konfiguration.
Om du använder Azure Cloud Shell, som du har gjort när du slutförde övningarna med Microsoft Learn Sandbox i den här modulen, loggas du in på Azure som standard. du behöver inte köra fler kommandon. Men om du använder Azure CLI från en separat dator måste du logga in med hjälp av kommandot az login.
Autentisering med tjänstens huvudnamn
Den andra metoden för att autentisera din webbapp innebär att skapa en Azure-tjänstens serviceprincipal och spara serviceprincipalens autentiseringsuppgifter till en fil som du hänvisar till i projektinställningarna.
Använd följande steg för att skapa ett tjänstehuvudnamn med Azure CLI.
Kör följande kommando från Azure CLI för att skapa ett tjänsthuvudnamn i Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssssDär
https://mywebapp-1234567890.azurewebsites.net/är webbadressen till din webbapp.Det här kommandot returnerar ett svar med ett JSON-objekt som liknar följande exempel:
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" }Ändra webbappens
pom.xml-fil för att använda informationen i JSON-utdata.Öppna din
pom.xml-fil med kodredigeraren:cd ~/MyWebApp code pom.xmlLeta upp avsnittet
<configuration>förazure-webapp-maven-plugin.Lägg till följande XML efter raden som innehåller elementet
<region>och använd informationen i JSON-utdata:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>Ditt
azure-webapp-maven-pluginavsnitt bör nu likna följande exempel:<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>Spara ändringarna genom att skriva Ctrl+S.
Avsluta kodredigeraren genom att skriva Ctrl+Q.
Använd Maven för att skapa och distribuera din webbapp till Azure App Service:
mvn azure-webapp:deployMaven visar en serie byggmeddelanden och det slutliga meddelandet bör indikera lyckad distribution till 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] ------------------------------------------------------------------------Raden
Auth type: SERVICE_PRINCIPALi svaret anger att service principal användes för att publicera din webbapp till Azure.
Autentisering med en Maven settings.xml-fil
Den tredje metoden för att autentisera din webbapp är att skapa ett Huvudnamn för Azure-tjänsten, skapa en Maven-settings.xml fil som innehåller autentiseringsuppgifterna för tjänstens huvudnamn och ändra projektets pom.xml-fil så att Maven-inställningarna används.
Stegen för att skapa en tjänstprincipal för Azure med Azure CLI är desamma som i föregående avsnitt i den här enheten.
Kör följande kommando från Azure CLI för att skapa ett tjänsthuvudnamn i Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssssDär
https://mywebapp-1234567890.azurewebsites.net/är webbadressen till din webbapp.Det här kommandot returnerar ett svar med ett JSON-objekt som liknar följande exempel:
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" }Skapa en användarversion av den
settings.xmlfil som Maven ska använda.Skapa en ny XML-fil för dina Maven-inställningar med kodredigeraren:
code ~/.m2/settings.xmlKlistra in följande XML i filen:
<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>Var:
Parameter Beskrivning clientAnger tjänsthuvudmannens appId-värdekeyAnger tjänsthuvudmannens password-värdetenantAnger tjänsthuvudmannens tenant-värdeSpara ändringarna genom att skriva Ctrl+S.
Avsluta kodredigeraren genom att skriva Ctrl+Q.
Ändra webbappens
pom.xml-fil så att den refererar till autentiseringsfilen.Öppna din
pom.xml-fil med kodredigeraren:cd ~/MyWebApp code pom.xmlLeta upp avsnittet
<configuration>förazure-webapp-maven-plugin.Lägg till följande XML efter raden som innehåller elementet
<region>:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>Ditt
azure-webapp-maven-pluginavsnitt bör nu likna följande exempel:<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>Spara ändringarna genom att skriva Ctrl+S.
Avsluta kodredigeraren genom att skriva Ctrl+Q.
Använd Maven för att skapa och distribuera din webbapp till Azure App Service:
mvn azure-webapp:deployMaven visar en serie byggmeddelanden och det slutliga meddelandet bör indikera lyckad distribution till 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] ------------------------------------------------------------------------Den
Auth type: SERVICE_PRINCIPALraden i svaret anger att tjänstens huvudautentiseringsuppgifter användes för att publicera din webbapp till Azure.