Udostępnij za pośrednictwem


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:

Wymagania wstępne

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:

  1. 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.12.0:config
    
  2. W obszarze Utwórz nową konfigurację przebiegu naciśnij klawisz Y, a następnie naciśnij klawisz Enter.

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

  4. W polu Zdefiniuj wartość dla javaVersion naciśnij klawisz 2 dla języka Java 11, a następnie naciśnij klawisz Enter.

  5. W polu Zdefiniuj wartość dla elementu webContainer naciśnij klawisz 4 dla serwera Tomcat 9.0, a następnie naciśnij klawisz Enter.

  6. W polu Zdefiniuj wartość dla wartości pricingTier naciśnij klawisz Enter , aby wybrać domyślną warstwę P1v2 .

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

  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 wybrano example-domain nazwę aplikacji w poprzednim kroku, musisz teraz użyć https://example-domain.azurewebsites.net 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ę 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:

  1. Przejdź do strony Platforma tożsamości Microsoft dla deweloperów 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 poleceń.

  5. W sekcji Identyfikatory URI przekierowania sieci Web - wybierz pozycję Dodaj identyfikator URI.

  6. Wypełnij identyfikator URI aplikacji, dołączają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 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:

  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ść 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>"
    
  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ć tej tożsamości get i list 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
    
  5. 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)'
    
  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ąć aad.secret klucz i wartość 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