共用方式為


將 Java JBoss EAP 應用程式部署至 Azure App Service

本文說明如何將 JBoss EAP 應用程式使用 Microsoft Entra 帳戶登入,部署至 Azure App Service。

本文假設您只使用 在本機 索引卷標上執行下列其中一篇文章,而您現在想要部署至 Azure。 這些指示與下列文章中的[部署至 Azure]標籤中的內容相同:

先決條件

設定 Maven 外掛程式

Azure App Service 的部署程式會自動從 Azure CLI 使用您的 Azure 認證。 如果未在本機安裝 Azure CLI,Maven 外掛程式會向 OAuth 或裝置登入進行驗證。 如需詳細資訊,請參閱 Maven 外掛程式的 驗證

使用下列步驟來設定外掛程式:

  1. 執行顯示在旁的 Maven 命令來配置部署。 此命令可協助您設定 App Service 作業系統、Java 版本和 Tomcat 版本。

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. 針對 建立新的執行組態,先按 Y,再按 Enter

  3. 針對 定義 OS的值,請按 2 表示 Linux,然後按 Enter

  4. 針對 定義 javaVersion的值,請按 2 代表 Java 11,然後按 Enter

  5. 針對 定義 webContainer的值,請按 1 為 JBosseap7,然後按 Enter

  6. 針對 定義定價層級的值,請按 Enter 以選擇預設 P1v3 層級。

  7. 針對 確認,請先按 Y,然後再按 Enter

下列範例顯示部署程式的輸出:

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

確認您的選擇之後,外掛程式會將外掛程式元件組態和必要的設定新增至專案的 pom.xml 檔案,以設定您的應用程式以在 Azure App Service 中執行。

pom.xml 檔案的相關部分看起來應該類似下列範例:

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

您可以直接在 pom.xml中修改 App Service 的組態。 下表列出一些常見的組態:

財產 必填 描述 版本
schemaVersion 組態架構的版本。 支援的值為 v1v2 1.5.2
subscriptionId 訂用帳戶標識碼。 0.1.0+
resourceGroup 應用程式的 Azure 資源群組。 0.1.0+
appName 應用程式的名稱。 0.1.0+
region 裝載您應用程式的區域。 預設值為 centralus。 如需有效的區域,請參閱 支援的區域 0.1.0+
pricingTier 應用程式的定價層。 生產工作負載的預設值是 P1v2。 Java 開發和測試的建議最小值是 B2。 如需詳細資訊,請參閱 App Service 定價 0.1.0+
runtime 執行階段環境設定。 如需詳細資訊,請參閱 組態詳細資料 0.1.0+
deployment 部署組態。 如需詳細資訊,請參閱 組態詳細資料 0.1.0+

如需組態的完整清單,請參閱外掛程式參考檔。 所有 Azure Maven 外掛程式都會共用一組常見的組態。 如需這些組態,請參閱 一般組態。 如需 Azure App Service 的特定組態,請參閱 Azure 應用程式:設定詳細資料

請務必將 appNameresourceGroup 值儲存在一起,以供日後使用。

準備應用程式以進行部署

當您將應用程式部署至 App Service 時,重新導向 URL 會變更為已部署應用程式實例的重新導向 URL。 使用下列步驟來變更屬性檔案中的這些設定:

  1. 流覽至應用程式的 authentication.properties 檔案,並將 app.homePage 的值變更為已部署應用程式的功能變數名稱,如下列範例所示。 例如,如果您在上一個步驟中為應用程式名稱選擇 example-domain,您現在必須針對 app.homePage 值使用 https://example-domain.azurewebsites.net。 請確定您也已將通訊協定從 http 變更為 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. 儲存此檔案之後,請使用下列命令重建您的應用程式:

    mvn clean package
    

更新您的 Microsoft Entra ID 應用程式註冊

由於已部署的應用程式將重定向 URI 變更為 Azure App Service,因此您也需要在 Microsoft Entra ID 應用程式註冊中變更重定向 URI。 使用下列步驟進行這項變更:

  1. 瀏覽至 Microsoft 身分識別平台開發人員 應用程式註冊 頁面。

  2. 使用搜尋方塊來搜尋您的應用程式註冊 ,例如,java-servlet-webapp-authentication

  3. 選取應用程式名稱以開啟您的應用程式註冊。

  4. 從功能表中選取 [驗證]。

  5. 在 [Web - 重新導向 URI] 區段中,選取 [新增 URI]。

  6. 填寫應用程式的 URI,並附加 /auth/redirect ,例如,https://<your-app-name>.azurewebsites.net/auth/redirect

  7. 選取 [儲存]。

部署應用程式

您現在已準備好將應用程式部署至 Azure App Service。 使用下列命令,確定您已登入 Azure 環境以執行部署:

az login

pom.xml 檔案中備妥所有組態後,您現在可以使用下列命令將 Java 應用程式部署至 Azure:

mvn package azure-webapp:deploy

部署完成之後,您的應用程式就會在 http://<your-app-name>.azurewebsites.net/就緒。 使用本機網頁瀏覽器開啟 URL,您應該會在其中看到 msal4j-servlet-auth 應用程式的起始頁面。

移除秘密值

應用程式 authentication.properties 檔案目前在 aad.secret 參數中保留用戶端密碼的值。 將此值保留在這個檔案中並不好的做法。 如果您將其提交到 Git 存放庫,您可能也會面臨風險。

作為額外的安全步驟,您可以將此值儲存在 Azure Key Vault 中,並使用 Key Vault 參考,使其在應用程式中可用。

使用下列步驟將 aad.secret 的值移至 Key Vault,並在您的程式代碼中使用:

  1. 使用下列命令來建立 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. 使用下列命令,將 aad.secret 的秘密值新增至金鑰保存庫作為新的秘密:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. 您現在需要為應用程式提供金鑰保存庫的存取權。 若要執行這項工作,請先使用下列命令為您的應用程式建立新的身分識別:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. 使用下列命令為此身分識別 getlist 授予您密鑰保存庫中的秘密的權限:

    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. 使用下列命令,在您的應用程式中建立一個應用程式設定,參考您金鑰保存庫中的機密。 此設定可讓應用程式使用秘密的值做為環境變數。

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. 使用下列程式代碼從環境變數載入此值。 在第 41 行的 \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java 檔案中,將目前的語句變更為下列這一行:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. 您現在可以從 authentication.properties 檔案中刪除 aad.secret 密鑰和值。

  8. 使用下列命令重建程式碼:

    mvn clean package
    
  9. 使用下列命令重新部署應用程式:

    mvn package azure-webapp:deploy
    

您的部署現已完成。

詳細資訊