Wdrażanie aplikacji Java Tomcat w usłudze aplikacja systemu Azure
W tym artykule pokazano, jak wdrożyć aplikację Tomcat przy użyciu logowania przy użyciu konta Microsoft Entra w usłudze aplikacja systemu Azure 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 Wdrażanie na platformie Azure w następujących artykułach:
- Włączanie logowania dla aplikacji Java Tomcat przy użyciu identyfikatora Entra firmy Microsoft
- Włączanie logowania dla aplikacji Java Tomcat przy użyciu biblioteki MSAL4J z usługą Azure Active Directory B2C
- Włączanie aplikacji Java Tomcat w celu logowania użytkowników i uzyskiwania dostępu do programu Microsoft Graph
- Zabezpieczanie aplikacji Java Tomcat przy użyciu ról i oświadczeń ról
- Zabezpieczanie aplikacji Java Tomcat przy użyciu grup i oświadczeń grup
Wymagania wstępne
Wtyczka Maven dla aplikacji usługi aplikacja systemu Azure
Jeśli narzędzie Maven nie jest preferowanym narzędziem programistycznym, zobacz następujące podobne samouczki korzystające z innych narzędzi:
Konfigurowanie wtyczki Maven
Podczas wdrażania w usłudze aplikacja systemu Azure wdrożenie automatycznie używa poświadczeń platformy Azure z poziomu interfejsu wiersza polecenia platformy Azure. 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 authentication with Maven plugins (Uwierzytelnianie za pomocą 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 aplikacja systemu Azure, wersję języka Java i wersję serwera Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
W obszarze Utwórz nową konfigurację przebiegu naciśnij klawisz Y, a następnie naciśnij klawisz Enter.
W polu Zdefiniuj wartość dla systemu operacyjnego naciśnij klawisz 1 dla systemu Windows lub 2 dla systemu Linux, a następnie naciśnij klawisz Enter.
W polu Zdefiniuj wartość dla javaVersion naciśnij klawisz 2 dla języka Java 11, a następnie naciśnij klawisz Enter.
W polu Zdefiniuj wartość dla elementu webContainer naciśnij klawisz 4 dla serwera Tomcat 9.0, a następnie naciśnij klawisz Enter.
W polu Zdefiniuj wartość dla wartości pricingTier naciśnij klawisz Enter , aby wybrać domyślną warstwę P1v2 .
Aby potwierdzić, naciśnij klawisz Y, a następnie naciśnij klawisz 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 aplikacja systemu Azure 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>
Konfiguracje usługi App Service można modyfikować bezpośrednio w pom.xml. Niektóre typowe konfiguracje są wymienione w poniższej tabeli:
Właściwości | Wymagania | opis |
---|---|---|
subscriptionId |
fałsz | Identyfikator subskrypcji. |
resourceGroup |
prawda | Grupa zasobów platformy Azure dla aplikacji. |
appName |
prawda | Nazwa aplikacji. |
region |
fałsz | Region, w którym ma być hostowana aplikacja. Domyślna wartość to centralus . Aby zapoznać się z prawidłowymi regionami, zobacz Obsługiwane regiony. |
pricingTier |
fałsz | Warstwa cenowa aplikacji. Wartość domyślna dotyczy P1v2 obciążenia produkcyjnego. Zalecaną minimalną wartością dla programowania i testowania języka Java jest B2 . Aby uzyskać więcej informacji, zobacz Cennik usługi App Service. |
runtime |
fałsz | Konfiguracja środowiska uruchomieniowego. Aby uzyskać więcej informacji, zobacz Szczegóły konfiguracji. |
deployment |
fałsz | 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 Typowe konfiguracje. Aby uzyskać konfiguracje specyficzne dla usługi aplikacja systemu Azure, zobacz Azure app: Configuration Details (Aplikacja platformy Azure: szczegóły konfiguracji).
Pamiętaj, aby zapisać wartości i resourceGroup
do późniejszego appName
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żonego wystąpienia 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 wybranoexample-domain
nazwę aplikacji w poprzednim kroku, musisz teraz użyćhttps://example-domain.azurewebsites.net
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ę w wdrożonej aplikacji w usłudze aplikacja systemu Azure, 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 strony Platforma tożsamości Microsoft dla deweloperów 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 poleceń.
W sekcji Identyfikatory URI przekierowania sieci Web - wybierz pozycję Dodaj identyfikator URI.
Wypełnij identyfikator URI aplikacji, dołączają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 aplikacja systemu Azure 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 adresem http://<your-app-name>.azurewebsites.net/
. Otwórz adres URL w lokalnej przeglądarce internetowej, gdzie powinna zostać wyświetlona strona początkowa msal4j-servlet-auth
aplikacji.
Usuwanie wartości wpisów tajnych
Plik authentication.properties aplikacji zawiera obecnie wartość klucza tajnego klienta w parametrze aad.secret
. Nie jest dobrym rozwiązaniem, aby zachować tę wartość w tym pliku. Możesz również podejmowania ryzyka, jeśli zatwierdzisz je w repozytorium Git.
W ramach dodatkowego kroku zabezpieczeń tę wartość można przechowywać w usłudze Azure Key Vault i używać 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ść wpisu tajnego
aad.secret
do magazynu kluczy jako nowy wpis tajny: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ć tej tożsamości
get
ilist
uprawnienia do wpisów tajnych 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 w aplikacji, które używa odwołania magazynu kluczy do wpisu tajnego w magazynie kluczy. To ustawienie powoduje udostępnienie wartości wpisu tajnego 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 wierszu 41 zmień bieżącą instrukcję na następujący wiersz:
public static final String SECRET = System.getenv("AADSECRET");
Teraz możesz usunąć
aad.secret
klucz i wartość 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
- Biblioteka Microsoft Authentication Library (MSAL) dla języka Java
- Platforma tożsamości Microsoft (Microsoft Entra ID dla deweloperów)
- Szybki start: Rejestrowanie aplikacji za pomocą platformy tożsamości firmy Microsoft
- Omówienie środowisk wyrażania zgody aplikacji Entra ID firmy Microsoft
- Omówienie zgody użytkownika i administratora
- Przykłady kodu biblioteki MSAL