Udostępnij za pośrednictwem


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

Warunki wstępne

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:

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

  3. W przypadku Zdefiniuj wartość dla systemu operacyjnegonaciśnij 1 dla systemu Windows lub 2 dla systemu Linux, a następnie naciśnij Wprowadź.

  4. W przypadku zdefiniuj wartość dlajavaVersion, naciśnij 2 dla Java 11, następnie naciśnij Enter.

  5. W przypadku Zdefiniuj wartość dlawebContainer naciśnij 4 dla serwera Tomcat 9.0, a następnie naciśnij Enter.

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

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

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

  1. Przejdź do platformy tożsamości firmy Microsoft dla deweloperów stronie rejestracje aplikacji.

  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 - URI przekierowań wybierz pozycję 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 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:

  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ć 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>"
    
  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ć tym tożsamościom get i list 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
    
  5. 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)'
    
  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 linii 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