次の方法で共有


Java JBoss EAP アプリを Azure App Service にデプロイする

この記事では、Microsoft Entra アカウントによるサインインを使用して JBoss EAP アプリを 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 の値を定義するには、Linux の場合は 「2」を押し、次に Enter キーを押します。

  4. javaVersion の値を定義するには、Java 11 の場合は 2 キーを押し、Enter キーを押します。

  5. WebContainer の値を定義するには、JBosseap7 の場合は 1 キーを押し、Enter キーを押します。

  6. [ PricingTier の値の定義] で、 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>

App Service の構成は、 pom.xmlで直接変更できます。 一般的な構成をいくつか次の表に示します。

プロパティ 必須 説明 バージョン
schemaVersion 偽り 構成スキーマのバージョン。 サポートされている値は、v1v2です。 1.5.2
subscriptionId 偽り サブスクリプション ID。 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を選択した場合は、https://example-___domain.azurewebsites.net値にapp.homePageを使用する必要があります。 プロトコルも 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 ID プラットフォームの [アプリの登録 ] ページに移動します。

  2. 検索ボックスを使用して、アプリの登録 ( java-servlet-webapp-authenticationなど) を検索します。

  3. 名前を選択して、アプリの登録を開きます。

  4. メニューから [認証 ] を選択します。

  5. [Web - Redirect 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/でアプリケーションの準備が整います。 ローカル Web ブラウザーで 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. アプリにキーボールトへのアクセス権を付与する必要があります。 このタスクを実行するには、まず次のコマンドを使用して、アプリの新しい ID を作成します。

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. 次のコマンドを使用して、Key Vault 内のシークレットに対してこの ID 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. 環境変数からこの値を読み込むには、次のコードを使用します。 \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java ファイルの 41 行目で、現在のステートメントを次の行に変更します。

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. aad.secret ファイルからキーと値を削除できるようになりました。

  8. 次のコマンドを使用してコードを再構築します。

    mvn clean package
    
  9. 次のコマンドを使用して、アプリケーションを再デプロイします。

    mvn package azure-webapp:deploy
    

これでデプロイは完了しました。

詳細情報