Distribuera Java Tomcat-appar till Azure App Service
Den här artikeln visar hur du distribuerar en Tomcat-app med inloggning av Microsoft Entra-konto till Azure App Service.
Den här artikeln förutsätter att du har slutfört någon av följande artiklar med hjälp av fliken Kör lokalt och att du nu vill distribuera till Azure. De här anvisningarna är desamma som på fliken Distribuera till Azure i följande artiklar:
- Aktivera inloggning för Java Tomcat-appar med Microsoft Entra-ID
- Aktivera inloggning för Java Tomcat-appar med MSAL4J med Azure Active Directory B2C
- Aktivera Java Tomcat-appar för att logga in användare och få åtkomst till Microsoft Graph
- Skydda Java Tomcat-appar med hjälp av roller och rollanspråk
- Skydda Java Tomcat-appar med hjälp av grupper och gruppanspråk
Förutsättningar
Maven-plugin-program för Azure App Service-appar
Om Maven inte är det utvecklingsverktyg du föredrar kan du läsa följande liknande självstudier som använder andra verktyg:
Konfigurera Maven-plugin-programmet
När du distribuerar till Azure App Service använder distributionen automatiskt dina Azure-autentiseringsuppgifter från Azure CLI. Om Azure CLI inte installeras lokalt autentiseras Maven-plugin-programmet med OAuth eller enhetsinloggning. Mer information finns i autentisering med Maven-plugin-program.
Använd följande steg för att konfigurera plugin-programmet:
Kör följande kommando för att konfigurera distributionen. Det här kommandot hjälper dig att konfigurera Azure App Service-operativsystemet, Java-versionen och Tomcat-versionen.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
Tryck på Y för Skapa ny körningskonfiguration och tryck sedan på Retur.
För Definiera värde för operativsystem trycker du på 1 för Windows eller 2 för Linux och trycker sedan på Retur.
För Definiera värde för javaVersion trycker du på 2 för Java 11 och trycker sedan på Retur.
För Definiera värde för webContainer trycker du på 4 för Tomcat 9.0 och trycker sedan på Retur.
För Definiera värde för pricingTier trycker du på Retur för att välja standardnivån P1v2 .
Tryck på Y för Bekräfta och tryck sedan på Retur.
I följande exempel visas utdata från distributionsprocessen:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------
När du har bekräftat dina val lägger plugin-programmet till det nödvändiga plugin-elementet och inställningarna i projektets pom.xml-fil för att konfigurera appen så att den körs i Azure App Service.
Den relevanta delen av pom.xml-filen bör se ut ungefär som i följande exempel:
<build>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>>azure-webapp-maven-plugin</artifactId>
<version>x.xx.x</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<resourceGroup>your-resourcegroup-name</resourceGroup>
<appName>your-app-name</appName>
...
</configuration>
</plugin>
</plugins>
</build>
Du kan ändra konfigurationerna för App Service direkt i pom.xml. Några vanliga konfigurationer visas i följande tabell:
Property | Obligatoriskt | Beskrivning |
---|---|---|
subscriptionId |
falskt | Prenumerations-ID:t. |
resourceGroup |
true | Azure-resursgruppen för din app. |
appName |
true | Namnet på din app. |
region |
falskt | Den region där appen ska vara värd. Standardvärdet är centralus . Giltiga regioner finns i Regioner som stöds. |
pricingTier |
falskt | Prisnivån för din app. Standardvärdet är P1v2 för en produktionsarbetsbelastning. Det rekommenderade minimivärdet för Java-utveckling och -testning är B2 . Mer information finns i Prissättning för App Service. |
runtime |
falskt | Konfigurationen av körningsmiljön. Mer information finns i Konfigurationsinformation. |
deployment |
falskt | Distributionskonfigurationen. Mer information finns i Konfigurationsinformation. |
En fullständig lista över konfigurationer finns i referensdokumentationen för plugin-programmet. Alla Azure Maven-plugin-program delar en gemensam uppsättning konfigurationer. De här konfigurationerna finns i Vanliga konfigurationer. Konfigurationer som är specifika för Azure App Service finns i Azure-app: Konfigurationsinformation.
Se till att spara värdena appName
och resourceGroup
för senare användning.
Förbereda appen för distribution
När du distribuerar programmet till App Service ändras omdirigerings-URL:en till omdirigerings-URL:en för din distribuerade appinstans. Använd följande steg för att ändra de här inställningarna i egenskapsfilen:
Navigera till appens authentication.properties-fil och ändra värdet
app.homePage
för till den distribuerade appens domännamn, som du ser i följande exempel. Om du till exempel valdeexample-domain
för ditt appnamn i föregående steg måste du nu användahttps://example-domain.azurewebsites.net
förapp.homePage
värdet. Se till att du också har ändrat protokollet frånhttp
tillhttps
.# app.homePage is by default set to dev server address and app context path on the server # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net app.homePage=https://<your-app-name>.azurewebsites.net
När du har sparat den här filen använder du följande kommando för att återskapa din app:
mvn clean package
Uppdatera din Microsoft Entra ID-appregistrering
Eftersom omdirigerings-URI:n ändras till din distribuerade app till Azure App Service måste du också ändra omdirigerings-URI:n i din Microsoft Entra ID-appregistrering. Gör den här ändringen med hjälp av följande steg:
Gå till sidan Microsofts identitetsplattform för utvecklare Appregistreringar.
Använd sökrutan för att söka efter din appregistrering – till exempel
java-servlet-webapp-authentication
.Öppna appregistreringen genom att välja dess namn.
Markera Autentisering på kommandomenyn.
I avsnittet Omdirigerings-URI:er för webben - väljer du Lägg till URI.
Fyll i URI:n för din app och lägg till
/auth/redirect
– till exempelhttps://<your-app-name>.azurewebsites.net/auth/redirect
.Välj Spara.
Distribuera appen
Nu är du redo att distribuera din app till Azure App Service. Använd följande kommando för att se till att du är inloggad i Azure-miljön för att köra distributionen:
az login
Med all konfiguration klar i din pom.xml-fil kan du nu använda följande kommando för att distribuera din Java-app till Azure:
mvn package azure-webapp:deploy
När distributionen är klar är programmet redo på http://<your-app-name>.azurewebsites.net/
. Öppna URL:en med din lokala webbläsare, där du bör se programmets msal4j-servlet-auth
startsida.
Ta bort hemliga värden
Filen authentication.properties för programmet innehåller för närvarande värdet för din klienthemlighet i parametern aad.secret
. Det är inte bra att behålla det här värdet i den här filen. Du kan också ta en risk om du checkar in den på en Git-lagringsplats.
Som ett extra säkerhetssteg kan du lagra det här värdet i Azure Key Vault och använda Key Vault-referenser för att göra det tillgängligt i ditt program.
Använd följande steg för att flytta värdet aad.secret
för till Key Vault och använda det i koden:
Använd följande kommandon för att skapa en Azure Key Vault-instans:
export RESOURCE_GROUP=<your-resource-group-name> export KEY_VAULT=<your-key-vault-name> az keyvault create \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULT
Använd följande kommandon för att lägga till det hemliga värdet för
aad.secret
i nyckelvalvet som en ny hemlighet:az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
Nu måste du ge din app åtkomst till ditt nyckelvalv. Om du vill utföra den här uppgiften skapar du först en ny identitet för din app med hjälp av följande kommandon:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
Använd följande kommandon för att ge den här identiteten
get
ochlist
behörigheten för hemligheterna i ditt Key Vault:export IDENTITY=$(az webapp identity show \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --query principalId \ --output tsv) az keyvault set-policy \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULT \ --secret-permissions get list \ --object-id $IDENTITY
Använd följande kommando för att skapa en programinställning i din app som använder en nyckelvalvsreferens till hemligheten i ditt nyckelvalv. Den här inställningen gör hemlighetens värde tillgängligt för din app som en miljövariabel.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
Använd följande kod för att läsa in det här värdet från miljövariablerna. Ändra den aktuella instruktionen till följande rad på rad 41 i filen \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java :
public static final String SECRET = System.getenv("AADSECRET");
Nu kan du ta bort
aad.secret
nyckeln och värdet från filen authentication.properties .Återskapa koden med hjälp av följande kommando:
mvn clean package
Distribuera om programmet med hjälp av följande kommando:
mvn package azure-webapp:deploy
Distributionen är nu klar.
Mer information
- Microsoft Authentication Library (MSAL) för Java
- Microsofts identitetsplattform (Microsoft Entra-ID för utvecklare)
- Snabbstart: Registrera ett program med Microsofts identitetsplattform
- Förstå funktioner för medgivande för Microsoft Entra-ID-program
- Förstå användar- och administratörsmedgivande
- MSAL-kodexempel