다음을 통해 공유


Azure App Service에 Java JBoss EAP 앱 배포

이 문서에서는 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. 가격 계층의 값을 정의하려면, 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 거짓 구독 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 선택한 경우 이제 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 ID 플랫폼 앱 등록 페이지로 이동하십시오.

  2. 검색 상자를 사용하여 앱 등록(예: java-servlet-webapp-authentication)을 검색합니다.

  3. 이름을 선택하여 앱 등록을 엽니다.

  4. 메뉴에서 인증 선택합니다.

  5. - 리디렉션 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. 이제 앱에 키 자격 증명 모음에 대한 액세스 권한을 부여해야 합니다. 이 작업을 수행하려면 먼저 다음 명령을 사용하여 앱에 대한 새 ID를 만듭니다.

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. 다음 명령을 사용하여 이 ID getlist에게 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. 다음 명령을 사용하여 키 자격 증명 모음의 비밀에 대한 키 자격 증명 모음 참조를 사용하는 애플리케이션 설정을 앱에 만듭니다. 이 설정을 사용하면 앱에서 비밀 값을 환경 변수로 사용할 수 있습니다.

    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. 이제 authentication.properties 파일에서 aad.secret 키와 값을 삭제할 수 있습니다.

  8. 다음 명령을 사용하여 코드를 다시 빌드합니다.

    mvn clean package
    
  9. 다음 명령을 사용하여 애플리케이션을 다시 배포합니다.

    mvn package azure-webapp:deploy
    

이제 배포가 완료되었습니다.

자세한 정보