Wdrażanie aplikacji Java JBoss EAP w usłudze Azure App Service
W tym artykule pokazano, jak wdrożyć aplikację JBoss EAP z logowaniem przy użyciu konta Microsoft Entra w usłudze Azure App Service.
Zakłada się, że przed przeczytaniem tego artykułu ukończyłeś jeden z poniższych artykułów, używając wyłącznie zakładki Uruchom lokalnie, a teraz chcesz wdrożyć rozwiązanie na platformie Azure. Te instrukcje są takie same jak te na karcie
- Włączanie logowania dla aplikacji Java JBoss EAP za pomocą usługi Microsoft Entra ID
- Włącz logowanie dla aplikacji Java JBoss EAP przy użyciu biblioteki MSAL4J z usługą Azure Active Directory B2C
- Włącz aplikacje Java JBoss EAP do logowania użytkowników i uzyskiwania dostępu do Microsoft Graph
- Zabezpiecz aplikacje Java JBoss EAP przy użyciu ról i roszczeń ról
- Zabezpiecz aplikacje Java JBoss EAP za pomocą grup i roszczeń grupowych
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
Proces wdrażania w Azure App Service automatycznie używa twoich poświadczeń 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 polecenie Maven wyświetlane obok, aby skonfigurować wdrożenie. To polecenie pomaga skonfigurować system operacyjny usługi App Service, wersję języka Java i wersję serwera Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
W przypadku Utwórz nową konfigurację uruchamianianaciśnij Y, a następnie naciśnij Enter.
Aby zdefiniować wartość dla systemu operacyjnego, naciśnij 2 dla Linuxa, a następnie naciśnij Enter.
Dla zdefiniowania wartości dlajavaVersion, naciśnij 2 dla Java 11, a następnie naciśnij Enter.
W przypadku Zdefiniuj wartość dlawebContainer naciśnij 1 dla JBosseap7, a następnie naciśnij Enter.
Aby zdefiniować wartość cennikaTier, naciśnij Wprowadź, aby wybrać domyślną warstwę P1v3.
Aby potwierdzić , naciśnij Y, a potem Enter.
W poniższym przykładzie przedstawiono dane wyjściowe procesu wdrażania:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Po potwierdzeniu wybranych opcji wtyczka dodaje konfigurację wtyczki i wymagane ustawienia do pliku pom.xml projektu, aby skonfigurować aplikację 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 App Service można modyfikować bezpośrednio w pom.xml. Niektóre typowe konfiguracje są wymienione w poniższej tabeli:
Własność | Wymagane | Opis | Wersja |
---|---|---|---|
schemaVersion |
fałszywy | Wersja schematu konfiguracji. Obsługiwane wartości to v1 i v2 . |
1.5.2 |
subscriptionId |
fałszywy | Identyfikator subskrypcji. | 0.1.0+ |
resourceGroup |
prawdziwy | Grupa zasobów platformy Azure dla aplikacji. | 0.1.0+ |
appName |
prawdziwy | Nazwa aplikacji. | 0.1.0+ |
region |
fałszywy | Region, w którym ma być hostowana aplikacja. Wartość domyślna to centralus . Aby znaleźć prawidłowe regiony, zobacz Obsługiwane regiony. |
0.1.0+ |
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, zobacz Cennik usługi App Service |
0.1.0+ |
runtime |
fałszywy | Konfiguracja środowiska uruchomieniowego. Aby uzyskać więcej informacji, zobacz Configuration Details. | 0.1.0+ |
deployment |
fałszywy | Konfiguracja wdrożenia. Aby uzyskać więcej informacji, zobacz Configuration Details. | 0.1.0+ |
Pełną listę konfiguracji można znaleźć w dokumentacji referencyjnej wtyczki. Wszystkie wtyczki usługi Azure Maven mają wspólny zestaw konfiguracji. Aby zapoznać się z tymi konfiguracjami, 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 zostaje zmieniony na ten z 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 wdrożonej aplikacji 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 strony rejestracji aplikacji platformy tożsamości Microsoft dla deweloperów .
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 - Przekierowania URI wybierz 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 na 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ń tajne wartości
Plik authentication.properties w aplikacji obecnie przechowuje wartość tajnego sekretu klienta w parametrze aad.secret
. Nie jest dobrą praktyką przechowywać tę wartość w tym pliku. Możesz również podejmować ryzyko, jeśli zatwierdzisz to 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ć tajną wartość
aad.secret
do magazynu kluczy jako nową tajną wartość.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ć tożsamości
get
ilist
uprawnienia do tajemnic w 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 tajemnicy w magazynie kluczy. To ustawienie powoduje udostępnienie wartości tajnego klucza Twojej 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ąć 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 Microsoft
- 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)
- Zrozumiej zgodę użytkownika i administratora
- przykłady kodu biblioteki MSAL