Azure App Service에 Java Tomcat 앱 배포
이 문서에서는 Microsoft Entra 계정으로 로그인하여 Tomcat 앱을 Azure App Service에 배포하는 방법을 보여줍니다.
이 문서에서는 실행 탭만 사용하여 다음 문서 중 하나를 완료했으며 이제 Azure에 배포하려고 합니다. 이러한 지침은 다음 문서의 Azure 배포
- Microsoft Entra ID를 사용하여 Java Tomcat 앱용 로그인 기능을 활성화
- MSAL4J를 사용하여 Azure Active Directory B2C로 Java Tomcat 앱의 로그인 활성화
- Java Tomcat 앱이 사용자를 로그인하고 Microsoft Graph 액세스하도록 설정
- 역할 및 역할 클레임 사용하여 Java Tomcat 앱 보안
- 그룹 및 그룹 클레임 사용하여 Java Tomcat 앱 보안
필수 구성 요소
Azure App Service 앱용 Maven 플러그 인
Maven이 선호하는 개발 도구가 아닌 경우 다른 도구를 사용하는 다음과 같은 유사한 자습서를 참조하세요.
- IntelliJ IDEA
- Eclipse
- Visual Studio Code
- IntelliJ IDEA
- Azure CLI
Maven 플러그 인 구성
Azure App Service에 배포하는 경우 배포는 Azure CLI의 Azure 자격 증명을 자동으로 사용합니다. Azure CLI가 로컬로 설치되지 않은 경우 Maven 플러그 인은 OAuth 또는 디바이스 로그인을 사용하여 인증합니다. 자세한 내용은 Maven 플러그인 인증 및을 참조하세요.
다음 단계를 사용하여 플러그 인을 구성합니다.
다음 명령을 실행하여 배포를 구성합니다. 이 명령을 사용하면 Azure App Service 운영 체제, Java 버전 및 Tomcat 버전을 설정할 수 있습니다.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
새 실행 구성만들기의 경우 Y누른 다음 Enter누릅니다.
OS의 값을 정의하려면 Windows는 1, Linux는 2를 누르고, Enter를 누르십시오.
javaVersion값을 정의하려면 Java 11의 경우 2를 누르고, 그 다음 Enter를 누릅니다.
webContainer대한
정의 값의 경우 Tomcat 9.0에 대해 4 누른 다음Enter 키를 누릅니다.pricingTier값을 정의하려면 Enter 키를 눌러 기본 P1v2 계층을 선택하세요.
확인하려면 Y누른 다음 Enter 키를누릅니다.
다음 예제에서는 배포 프로세스의 출력을 보여줍니다.
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] ------------------------------------------------------------------------
선택 사항을 확인한 후 플러그 인은 필요한 플러그 인 요소와 설정을 프로젝트의 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에서 직접 수정할 수 있습니다. 다음 표에는 몇 가지 일반적인 구성이 나열되어 있습니다.
재산 | 필수 | 묘사 |
---|---|---|
subscriptionId |
거짓 | 구독 ID입니다. |
resourceGroup |
참 | 앱에 대한 Azure 리소스 그룹입니다. |
appName |
진실 | 앱의 이름입니다. |
region |
거짓 | 앱을 호스트할 지역입니다. 기본값은 centralus . 유효한 지역은 지원되는 지역참조하세요. |
pricingTier |
거짓 | 앱의 가격 책정 계층입니다. 기본값은 프로덕션 워크로드에 대한 P1v2 . Java 개발 및 테스트에 권장되는 최소값은 B2 . 자세한 내용은 App Service 가격 책정참조하세요. |
runtime |
거짓 | 런타임 환경 구성입니다. 자세한 내용은 구성 세부 정보참조하세요. |
deployment |
거짓 | 배포 구성입니다. 자세한 내용은 구성 세부 정보참조하세요. |
전체 구성 목록은 플러그 인 참조 설명서를 참조하세요. 모든 Azure Maven 플러그 인은 공통 구성 집합을 공유합니다. 이러한 구성은 일반 구성참조하세요. Azure App Service와 관련된 구성은 Azure 앱: 구성 세부 정보참조하세요.
나중에 사용할 수 있도록 appName
및 resourceGroup
값을 따로 저장해야 합니다.
배포를 위한 앱 준비
App Service에 애플리케이션을 배포하면 리디렉션 URL이 배포된 앱 인스턴스의 리디렉션 URL로 변경됩니다. 속성 파일에서 이러한 설정을 변경하려면 다음 단계를 사용합니다.
다음 예제와 같이 앱의 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
이 파일을 저장한 후 다음 명령을 사용하여 앱을 다시 빌드합니다.
mvn clean package
Microsoft Entra ID 앱 등록 업데이트
리디렉션 URI가 Azure App Service에 배포된 앱으로 변경되므로 Microsoft Entra ID 앱 등록에서도 리디렉션 URI를 변경해야 합니다. 다음 단계를 사용하여 변경합니다.
개발자용 Microsoft ID 플랫폼으로 이동하여 앱 등록 페이지를
. 검색 상자를 사용하여 앱 등록(예:
java-servlet-webapp-authentication
)을 검색합니다.이름을 선택하여 앱 등록을 엽니다.
메뉴에서 인증 선택합니다.
웹 - 리디렉션 URI 섹션에서 URI추가를 선택합니다.
앱의 URI를 입력하고
/auth/redirect
추가합니다(예:https://<your-app-name>.azurewebsites.net/auth/redirect
).저장을 선택합니다.
앱 배포
이제 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로 이동하고 코드에서 사용합니다.
다음 명령을 사용하여 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
다음 명령을 사용하여 Key Vault에
aad.secret
비밀 값을 새 비밀로 추가합니다.az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
이제 앱에 키 자격 증명 모음에 대한 액세스 권한을 부여해야 합니다. 이 작업을 수행하려면 먼저 다음 명령을 사용하여 앱에 대한 새 ID를 만듭니다.
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
다음 명령을 사용하여 Key Vault의 비밀에 대한 ID
get
및list
의 권한을 설정하십시오.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
다음 명령을 사용하여 키 저장소의 비밀에 대한 참조를 사용하는 애플리케이션 설정을 앱에 추가하세요. 이 설정을 사용하면 앱에서 비밀 값을 환경 변수로 사용할 수 있습니다.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
다음 코드를 사용하여 환경 변수에서 이 값을 로드합니다. \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java 파일의 41줄에서 현재 문을 다음 줄로 변경합니다.
public static final String SECRET = System.getenv("AADSECRET");
이제 authentication.properties 파일에서
aad.secret
키와 값을 삭제할 수 있습니다.다음 명령을 사용하여 코드를 다시 빌드합니다.
mvn clean package
다음 명령을 사용하여 애플리케이션을 다시 배포합니다.
mvn package azure-webapp:deploy
이제 배포가 완료되었습니다.
자세한 정보
- Java용 MSAL(Microsoft 인증 라이브러리)
- Microsoft ID 플랫폼(개발자용 Microsoft Entra ID)
- 빠른 시작: Microsoft ID 플랫폼 애플리케이션 등록
- Microsoft Entra ID 애플리케이션 동의 환경 이해
- 사용자 및 관리자 동의 이해
- MSAL 코드 예제