Udostępnij za pośrednictwem


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 Deploy to Azure (Wdrażanie na platformie Azure) w następujących artykułach:

Warunki wstępne

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:

  1. 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
    
  2. W przypadku Utwórz nową konfigurację uruchamianianaciśnij Y, a następnie naciśnij Enter.

  3. Aby zdefiniować wartość dla systemu operacyjnego, naciśnij 2 dla Linuxa, a następnie naciśnij Enter.

  4. Dla zdefiniowania wartości dlajavaVersion, naciśnij 2 dla Java 11, a następnie naciśnij Enter.

  5. W przypadku Zdefiniuj wartość dlawebContainer naciśnij 1 dla JBosseap7, a następnie naciśnij Enter.

  6. Aby zdefiniować wartość cennikaTier, naciśnij Wprowadź, aby wybrać domyślną warstwę P1v3.

  7. 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:

  1. 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 wybrano example-domain nazwy aplikacji, musisz teraz użyć https://example-domain.azurewebsites.net dla wartości app.homePage. Upewnij się, że protokół został również zmieniony z http na https.

    # 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
    
  2. 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:

  1. Przejdź do strony rejestracji aplikacji platformy tożsamości Microsoft dla deweloperów .

  2. Użyj pola wyszukiwania, aby wyszukać rejestrację aplikacji — na przykład java-servlet-webapp-authentication.

  3. Otwórz rejestrację aplikacji, wybierając jej nazwę.

  4. Wybierz Uwierzytelnianie z menu.

  5. W sekcji - Przekierowania URI wybierz Dodaj URI.

  6. Wpisz identyfikator URI swojej aplikacji, dodając /auth/redirect — na przykład https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. 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:

  1. 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
    
  2. 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>"
    
  3. 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
    
  4. Użyj następujących poleceń, aby nadać tożsamości get i list 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
    
  5. 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)'
    
  6. 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");
    
  7. Teraz możesz usunąć klucz i wartość aad.secret z pliku authentication.properties.

  8. Skompiluj kod przy użyciu następującego polecenia:

    mvn clean package
    
  9. Ponownie wdróż aplikację przy użyciu następującego polecenia:

    mvn package azure-webapp:deploy
    

Wdrożenie zostało ukończone.

Więcej informacji