Bagikan melalui


Menyebarkan aplikasi Java Tomcat ke Azure App Service

Artikel ini memperlihatkan kepada Anda cara menyebarkan aplikasi Tomcat dengan masuk oleh akun Microsoft Entra ke Azure App Service.

Artikel ini mengasumsikan bahwa Anda menyelesaikan salah satu artikel berikut ini hanya menggunakan tab Jalankan secara lokal, dan sekarang Anda ingin menyebarkan ke Azure. Instruksi ini sama dengan yang ada di tab Sebarkan ke Azure dalam artikel ini:

Prasyarat

  • Azure CLI

Mengonfigurasi plugin Maven

Saat Anda menyebarkan ke Azure App Service, penyebaran secara otomatis menggunakan kredensial Azure Anda dari Azure CLI. Jika Azure CLI tidak diinstal secara lokal, maka plugin Maven mengautentikasi dengan OAuth atau masuk perangkat. Untuk informasi selengkapnya, lihat autentikasi dengan plugin Maven.

Gunakan langkah-langkah berikut untuk mengonfigurasi plugin:

  1. Jalankan perintah berikut untuk mengonfigurasi penyebaran. Perintah ini membantu Anda menyiapkan sistem operasi Azure App Service, versi Java, dan versi Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Untuk Buat konfigurasi eksekusi baru, tekan Y, lalu tekan Enter.

  3. Untuk Tentukan nilai untuk OS, tekan 1 untuk Windows, atau 2 untuk Linux, lalu tekan Enter.

  4. Untuk Tentukan nilai untuk javaVersion, tekan 2 untuk Java 11, lalu tekan Enter.

  5. Untuk Tentukan nilai untuk webContainer, tekan 4 untuk Tomcat 9.0, lalu tekan Enter.

  6. Untuk Tentukan nilai untuktingkat harga, tekan Enter untuk memilih tingkat default P1v2.

  7. Untuk Konfirmasi, tekan Y, lalu tekan Enter.

Contoh berikut menunjukkan output proses penyebaran:

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

Setelah Anda mengonfirmasi pilihan Anda, plugin menambahkan elemen dan pengaturan plugin yang diperlukan ke file pom.xml proyek Anda untuk mengonfigurasi aplikasi Anda agar berjalan di Azure App Service.

Bagian yang relevan dari file pom.xml akan terlihat mirip dengan contoh berikut:

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

Anda dapat mengubah konfigurasi untuk App Service langsung di pom.xmlAnda. Beberapa konfigurasi umum tercantum dalam tabel berikut:

Harta benda Diperlukan Deskripsi
subscriptionId palsu ID langganan.
resourceGroup benar Grup sumber daya Azure untuk aplikasi Anda.
appName benar Nama aplikasi Anda.
region palsu Wilayah tempat menghosting aplikasi Anda. Nilai defaultnya adalah centralus. Untuk wilayah yang valid, lihat Wilayah yang Didukung.
pricingTier palsu Tingkat harga untuk aplikasi Anda. Nilai defaultnya adalah P1v2 untuk beban kerja produksi. Nilai minimum yang direkomendasikan untuk pengembangan dan pengujian Java adalah B2. Untuk informasi selengkapnya, lihat Harga Layanan Aplikasi.
runtime palsu Konfigurasi lingkungan runtime. Untuk informasi selengkapnya, lihat detail konfigurasi .
deployment palsu Konfigurasi penyebaran. Untuk informasi selengkapnya, lihat detail konfigurasi .

Untuk daftar lengkap konfigurasi, lihat dokumentasi referensi plugin. Semua plugin Azure Maven berbagi serangkaian konfigurasi umum. Untuk konfigurasi ini, lihat Common Configurations. Untuk konfigurasi khusus untuk Azure App Service, lihat aplikasi Azure : Detail Konfigurasi.

Pastikan untuk menyimpan nilai appName dan resourceGroup untuk digunakan nanti.

Menyiapkan aplikasi untuk penyebaran

Saat Anda menyebarkan aplikasi ke App Service, URL pengalihan Anda berubah ke URL pengalihan instans aplikasi yang Anda sebarkan. Gunakan langkah-langkah berikut untuk mengubah pengaturan ini di file properti Anda:

  1. Arahkan ke file authentication.properties aplikasi Anda dan ubah nilai app.homePage menjadi nama domain aplikasi yang telah dideploy, seperti yang ditunjukkan dalam contoh berikut. Misalnya, jika Anda memilih example-domain untuk nama aplikasi di langkah sebelumnya, Anda sekarang harus menggunakan https://example-domain.azurewebsites.net untuk nilai app.homePage. Pastikan Anda juga telah mengubah protokol dari http ke 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. Setelah menyimpan file ini, gunakan perintah berikut untuk membangun kembali aplikasi Anda:

    mvn clean package
    

Memperbarui pendaftaran aplikasi ID Microsoft Entra Anda

Karena URI pengalihan berubah ke aplikasi yang disebarkan ke Azure App Service, Anda juga perlu mengubah URI pengalihan di pendaftaran aplikasi ID Microsoft Entra Anda. Gunakan langkah-langkah berikut untuk membuat perubahan ini:

  1. Navigasikan ke halaman platform identitas Microsoft untuk pengembang Pendaftaran aplikasi.

  2. Gunakan kotak pencarian untuk mencari pendaftaran aplikasi Anda - misalnya, java-servlet-webapp-authentication.

  3. Buka pendaftaran aplikasi Anda dengan memilih namanya.

  4. Pilih Autentikasi dari menu.

  5. Di bagian Web URI Pengalihan - , pilih Tambahkan URI .

  6. Isi URI aplikasi Anda, tambahkan /auth/redirect - misalnya, https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Pilih Simpan.

Menyebarkan aplikasi

Anda sekarang siap untuk menyebarkan aplikasi Anda ke Azure App Service. Gunakan perintah berikut untuk memastikan Anda masuk ke lingkungan Azure Anda untuk menjalankan penyebaran:

az login

Dengan semua konfigurasi yang siap di file pom.xml, Anda sekarang dapat menggunakan perintah berikut untuk menyebarkan aplikasi Java Anda ke Azure:

mvn package azure-webapp:deploy

Setelah penyebaran selesai, aplikasi Anda siap pada http://<your-app-name>.azurewebsites.net/. Buka URL dengan browser web lokal Anda, di mana Anda akan melihat halaman awal aplikasi msal4j-servlet-auth.

Menghapus nilai rahasia

File authentication.properties aplikasi saat ini menyimpan nilai rahasia klien Anda dalam parameter . Tidak baik untuk menyimpan nilai ini dalam file ini. Anda mungkin juga mengambil risiko jika Anda menerapkannya ke repositori Git.

Sebagai langkah tambahan keamanan, Anda dapat menyimpan nilai ini di Azure Key Vault dan menggunakan referensi Key Vault untuk membuatnya tersedia di aplikasi Anda.

Gunakan langkah-langkah berikut untuk memindahkan nilai aad.secret ke Key Vault dan gunakan dalam kode Anda:

  1. Gunakan perintah berikut untuk membuat instans 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. Gunakan perintah berikut untuk menambahkan nilai rahasia aad.secret ke brankas kunci Anda sebagai rahasia baru:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Anda sekarang perlu memberikan akses aplikasi ke brankas kunci Anda. Untuk melakukan tugas ini, pertama-tama buat identitas baru untuk aplikasi Anda dengan menggunakan perintah berikut:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Gunakan perintah berikut untuk memberikan identitas ini get dan izin list pada rahasia di Key Vault Anda:

    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. Gunakan perintah berikut untuk membuat pengaturan aplikasi di aplikasi Anda yang menggunakan referensi brankas kunci ke rahasia dalam brankas kunci Anda. Pengaturan ini membuat nilai rahasia tersedia untuk aplikasi Anda sebagai variabel lingkungan.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Gunakan kode berikut untuk memuat nilai ini dari variabel lingkungan. Dalam file \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java, pada baris 41, ubah pernyataan saat ini ke baris berikut:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Sekarang Anda dapat menghapus kunci dan nilai dari file authentication.properties.

  8. Bangun ulang kode dengan menggunakan perintah berikut:

    mvn clean package
    
  9. Sebarkan ulang aplikasi dengan menggunakan perintah berikut:

    mvn package azure-webapp:deploy
    

Penyebaran Anda sekarang selesai.

Informasi selengkapnya