Wdrażanie aplikacji Java Tomcat w usłudze Azure App Service
W tym artykule pokazano, jak wdrożyć aplikację Tomcat przy użyciu logowania przy użyciu konta Microsoft Entra w usłudze Azure App Service.
W tym artykule założono, że ukończono jeden z następujących artykułów przy użyciu tylko karty Uruchom lokalnie, a teraz chcesz wdrożyć na platformie Azure. Te instrukcje są takie same jak te na karcie
- Włącz logowanie dla aplikacji Java Tomcat przy użyciu usługi Microsoft Entra ID
- Włącz logowanie do aplikacji Java Tomcat za pomocą MSAL4J i Azure Active Directory B2C
- włączanie aplikacji Java Tomcat w celu logowania użytkowników i uzyskiwania dostępu do usługi Microsoft Graph
- Zabezpiecz aplikacje Java Tomcat przy użyciu ról i żądań ról
- chronienie aplikacji Java Tomcat przy użyciu grup i roszczeń grup
Warunki wstępne
Wtyczka Maven dla aplikacji usługi Azure App Service
Jeśli narzędzie Maven nie jest preferowanym narzędziem programistycznym, zobacz następujące podobne samouczki korzystające z innych narzędzi:
- IntelliJ IDEA
- zaćmienie
- programu Visual Studio Code
Konfigurowanie wtyczki Maven
Podczas wdrażania w usłudze Azure App Service, wdrożenie automatycznie używa poświadczeń platformy Azure z Azure CLI. Jeśli interfejs wiersza polecenia platformy Azure nie jest zainstalowany lokalnie, wtyczka Maven uwierzytelnia się przy użyciu protokołu OAuth lub logowania urządzenia. Aby uzyskać więcej informacji, zobacz uwierzytelnianie przy użyciu wtyczek Maven.
Aby skonfigurować wtyczkę, wykonaj następujące czynności:
Uruchom następujące polecenie, aby skonfigurować wdrożenie. To polecenie pomaga skonfigurować system operacyjny usługi Azure App Service, wersję języka Java i wersję serwera Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
W przypadku Utwórz nową konfigurację uruchamianianaciśnij Y, a następnie naciśnij Enter.
W przypadku Zdefiniuj wartość dla systemu operacyjnegonaciśnij 1 dla systemu Windows lub 2 dla systemu Linux, a następnie naciśnij Wprowadź.
W przypadku zdefiniuj wartość dlajavaVersion, naciśnij 2 dla Java 11, następnie naciśnij Enter.
W przypadku Zdefiniuj wartość dlawebContainer naciśnij 4 dla serwera Tomcat 9.0, a następnie naciśnij Enter.
Aby zdefiniować wartość cennikaTier, naciśnij Wprowadź, aby wybrać domyślną warstwę P1v2.
W przypadku Potwierdźnaciśnij Y, a następnie naciśnij Enter.
W poniższym przykładzie przedstawiono dane wyjściowe procesu wdrażania:
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] ------------------------------------------------------------------------
Po potwierdzeniu wybranych opcji wtyczka dodaje wymagany element i ustawienia wtyczki do pliku pom.xml projektu w celu skonfigurowania aplikacji do uruchamiania w usłudze Azure App Service.
Odpowiednia część pliku pom.xml powinna wyglądać podobnie do poniższego przykładu:
<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>
Ustawienia usługi App Service można modyfikować bezpośrednio w pom.xml. Niektóre typowe konfiguracje są wymienione w poniższej tabeli:
Własność | Wymagane | Opis |
---|---|---|
subscriptionId |
fałszywy | Identyfikator subskrypcji. |
resourceGroup |
prawdziwy | Grupa zasobów platformy Azure dla aplikacji. |
appName |
prawdziwy | Nazwa aplikacji. |
region |
fałszywy | Region, w którym ma być hostowana aplikacja. Wartość domyślna to centralus . Aby poznać prawidłowe regiony, zobacz Obsługiwane regiony. |
pricingTier |
fałszywy | Poziom cenowy dla Twojej aplikacji. Wartość domyślna to P1v2 dla obciążenia produkcyjnego. Zalecaną minimalną wartością programowania i testowania języka Java jest B2 . Aby uzyskać więcej informacji, zapoznaj się z Cennikiem usługi App Service. |
runtime |
fałszywy | Konfiguracja środowiska uruchomieniowego. Aby uzyskać więcej informacji, zobacz Configuration Details. |
deployment |
fałszywy | Konfiguracja wdrożenia. Aby uzyskać więcej informacji, zobacz Szczegóły konfiguracji. |
Pełną listę konfiguracji można znaleźć w dokumentacji referencyjnej wtyczki. Wszystkie wtyczki usługi Azure Maven mają wspólny zestaw konfiguracji. Aby uzyskać te konfiguracje, zobacz Common Configurations. Aby uzyskać informacje o konfiguracjach specyficznych dla usługi Azure App Service, zobacz Aplikacja platformy Azure: Szczegóły konfiguracji.
Pamiętaj, aby zapisać wartości appName
i resourceGroup
do późniejszego użycia.
Przygotowywanie aplikacji do wdrożenia
Podczas wdrażania aplikacji w usłudze App Service adres URL przekierowania zmieni się na adres URL przekierowania wdrożonej instancji aplikacji. Aby zmienić te ustawienia w pliku właściwości, wykonaj następujące czynności:
Przejdź do pliku authentication.properties aplikacji i zmień wartość
app.homePage
na nazwę domeny wdrożonej aplikacji, jak pokazano w poniższym przykładzie. Jeśli na przykład w poprzednim kroku wybranoexample-domain
nazwy aplikacji, musisz teraz użyćhttps://example-domain.azurewebsites.net
dla wartościapp.homePage
. Upewnij się, że protokół został również zmieniony zhttp
nahttps
.# 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
Po zapisaniu tego pliku użyj następującego polecenia, aby ponownie skompilować aplikację:
mvn clean package
Aktualizowanie rejestracji aplikacji Microsoft Entra ID
Ponieważ identyfikator URI przekierowania zmienia się dla aplikacji wdrożonej w usłudze Azure App Service, musisz również zmienić identyfikator URI przekierowania w rejestracji aplikacji Microsoft Entra ID. Aby wprowadzić tę zmianę, wykonaj następujące czynności:
Przejdź do platformy tożsamości firmy Microsoft dla deweloperów stronie rejestracje aplikacji.
Użyj pola wyszukiwania, aby wyszukać rejestrację aplikacji — na przykład
java-servlet-webapp-authentication
.Otwórz rejestrację aplikacji, wybierając jej nazwę.
Wybierz Uwierzytelnianie z menu.
W sekcji - URI przekierowań wybierz pozycję Dodaj URI.
Wpisz identyfikator URI swojej aplikacji, dodając
/auth/redirect
— na przykładhttps://<your-app-name>.azurewebsites.net/auth/redirect
.Wybierz pozycję Zapisz.
Wdrażanie aplikacji
Teraz możesz przystąpić do wdrażania aplikacji w usłudze Azure App Service. Użyj następującego polecenia, aby upewnić się, że zalogowano się do środowiska platformy Azure w celu wykonania wdrożenia:
az login
Po korzystaniu ze wszystkich konfiguracji gotowych w pliku pom.xml możesz teraz użyć następującego polecenia, aby wdrożyć aplikację Java na platformie Azure:
mvn package azure-webapp:deploy
Po zakończeniu wdrażania aplikacja jest gotowa pod http://<your-app-name>.azurewebsites.net/
. Otwórz adres URL w lokalnej przeglądarce internetowej, gdzie powinna zostać wyświetlona strona początkowa aplikacji msal4j-servlet-auth
.
Usuń wartości tajne
Plik authentication.properties aplikacji obecnie przechowuje wartość tajnego klucza klienta w parametrze aad.secret
. Nie jest dobrą praktyką, aby zachować tę wartość w tym pliku. Możesz również podejmować ryzyko, jeśli zatwierdzisz go w repozytorium Git.
W ramach dodatkowego kroku zabezpieczeń można przechowywać tę wartość w usłudze Azure Key Vault i użyć odwołań usługi Key Vault, aby udostępnić ją w aplikacji.
Wykonaj następujące kroki, aby przenieść wartość aad.secret
do usługi Key Vault i użyć jej w kodzie:
Użyj następujących poleceń, aby utworzyć wystąpienie usługi Azure Key Vault:
export RESOURCE_GROUP=<your-resource-group-name> export KEY_VAULT=<your-key-vault-name> az keyvault create \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULT
Użyj następujących poleceń, aby dodać wartość poufną
aad.secret
do magazynu kluczy jako nowy sekret.az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
Teraz musisz przyznać aplikacji dostęp do magazynu kluczy. Aby wykonać to zadanie, najpierw utwórz nową tożsamość dla aplikacji przy użyciu następujących poleceń:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
Użyj następujących poleceń, aby nadać tym tożsamościom
get
ilist
uprawnienia do tajemnic w usłudze 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
Użyj następującego polecenia, aby utworzyć ustawienie aplikacji, które używa odwołania do magazynu kluczy do sekretu w twoim magazynie kluczy. To ustawienie powoduje udostępnienie wartości sekretu aplikacji jako zmiennej środowiskowej.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
Użyj następującego kodu, aby załadować tę wartość ze zmiennych środowiskowych. W pliku \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java w linii 41 zmień bieżącą instrukcję na następujący wiersz:
public static final String SECRET = System.getenv("AADSECRET");
Teraz możesz usunąć klucz i wartość
aad.secret
z pliku authentication.properties.Skompiluj kod przy użyciu następującego polecenia:
mvn clean package
Ponownie wdróż aplikację przy użyciu następującego polecenia:
mvn package azure-webapp:deploy
Wdrożenie zostało ukończone.
Więcej informacji
- Microsoft Authentication Library (MSAL) for Java
- platforma tożsamości firmy Microsoft (Microsoft Entra ID dla deweloperów)
- Szybki start: rejestrowanie aplikacji za pomocą platformy tożsamości firmy Microsoft
- Understanding Microsoft Entra ID application consent experiences (Informacje o środowiskach zgody aplikacji Microsoft Entra ID)
- Zrozumienie zgody użytkownika i administratora
- przykłady kodu biblioteki MSAL