Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Microsoft Entra hesabıyla Azure App Service'te oturum açma ile bir Tomcat uygulamasının nasıl dağıtılacağı gösterilmektedir.
Bu makalede, aşağıdaki makalelerden birini yalnızca Yerel olarak çalıştır sekmesini kullanarak tamamladığınız ve şimdi Azure'a dağıtmak istediğiniz varsayılır. Bu yönergeler, şu makalelerde Azure'a dağıt sekmesindeki yönergelerle aynıdır:
- Microsoft Entra ID kullanarak Java Tomcat uygulamaları için oturum açmayı etkinleştirme
- Azure Active Directory B2C ile MSAL4J kullanarak Java Tomcat uygulamaları için oturum açmayı etkinleştirme
- Java Tomcat uygulamalarının kullanıcılarda oturum açmasını ve Microsoft Graph erişmesini etkinleştirme
- Rolleri ve rol taleplerini kullanarak Java Tomcat uygulamalarının güvenliğini sağlama
- Grupları ve grup taleplerini kullanarak Java Tomcat uygulamalarını güvenli
Önkoşullar
Azure App Service uygulamaları için
Maven Eklentisi Maven tercih ettiğiniz geliştirme aracı değilse, diğer araçları kullanan aşağıdaki benzer öğreticilere bakın:
Maven eklentisini yapılandırma
Azure App Service'e dağıtım yaptığınızda, dağıtım otomatik olarak Azure CLI'dan Azure kimlik bilgilerinizi kullanır. Azure CLI yerel olarak yüklü değilse Maven eklentisi OAuth veya cihaz oturum açma ile kimlik doğrulaması yapar. Daha fazla bilgi için bkz. Maven eklentileriyle kimlik doğrulaması.
Eklentiyi yapılandırmak için aşağıdaki adımları kullanın:
Dağıtımı yapılandırmak için aşağıdaki komutu çalıştırın. Bu komut Azure App Service işletim sistemini, Java sürümünü ve Tomcat sürümünü ayarlamanıza yardımcı olur.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:configYeni bir çalıştırma yapılandırması
oluşturmak için, Y tuşuna basın, ardındanEnter tuşuna basın.İşletim sistemiiçin değer tanımlamak üzere
, Windows için 1 veya Linux için2 tuşuna basın, ardındanEnter tuşuna basın.javaVersioniçin değer tanımlama
için, Java 11 için 2 basın ve ardından Enterbasın. webContainerdeğerini tanımla
için, Tomcat 9.0 için 4 basın ve ardından enterbasın. pricingTierdeğerini tanımlama
için, varsayılan P1v2 katmanını seçmek için Enterbasın. Onaylaiçin, veY tuşlarına basın, ardından veEnter tuşuna basın.
Aşağıdaki örnekte dağıtım işleminin çıkışı gösterilmektedir:
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] ------------------------------------------------------------------------
Seçimlerinizi onayladıktan sonra eklenti, uygulamanızı Azure App Service'te çalışacak şekilde yapılandırmak için gerekli eklenti öğesini ve ayarlarını projenizin pom.xml dosyasına ekler.
pom.xml dosyasının ilgili bölümü aşağıdaki örneğe benzer olmalıdır:
<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 yapılandırmalarını doğrudan pom.xml'de değiştirebilirsiniz. Bazı yaygın yapılandırmalar aşağıdaki tabloda listelenmiştir:
| Mülk | Gerekli | Açıklama |
|---|---|---|
subscriptionId |
yanlış | Abonelik kimliği. |
resourceGroup |
doğru | Uygulamanızın Azure kaynak grubu. |
appName |
doğru | Uygulamanızın adı. |
region |
yanlış | Uygulamanızın barındırıldığı bölge. Varsayılan değer centralus. Geçerli bölgeler için bkz. desteklenen bölgeler |
pricingTier |
yanlış | Uygulamanızın fiyatlandırma katmanı. Varsayılan değer, üretim iş yükü için P1v2. Java geliştirme ve test için önerilen en düşük değer B2. Daha fazla bilgi için Uygulama Hizmeti Fiyatlandırmasıkısmına bakın. |
runtime |
yanlış | Çalışma zamanı ortamı yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları. |
deployment |
yanlış | Dağıtım yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları. |
Yapılandırmaların tam listesi için eklenti başvuru belgelerine bakın. Tüm Azure Maven eklentileri ortak bir yapılandırma kümesini paylaşır. Bu yapılandırmalar için bkz. Ortak Yapılandırmalar. Azure App Service'e özgü yapılandırmalar için bkz. Azure uygulaması: Yapılandırma Ayrıntıları.
appName ve resourceGroup değerlerini daha sonra kullanmak üzere bir kenara kaydettiğinizden emin olun.
Uygulamayı dağıtım için hazırlama
Uygulamanızı App Service'e dağıttığınızda, yeniden yönlendirme URL'niz dağıtılan uygulama örneğinizin yeniden yönlendirme URL'sine dönüşür. Özellikler dosyanızdaki bu ayarları değiştirmek için aşağıdaki adımları kullanın:
Aşağıdaki örnekte gösterildiği gibi uygulamanızın authentication.properties dosyasına gidin ve
app.homePagedeğerini dağıtılan uygulamanızın etki alanı adıyla değiştirin. Örneğin, önceki adımda uygulama adınız içinexample-domainseçtiyseniz, şimdihttps://example-domain.azurewebsites.netdeğeri içinapp.homePagekullanmanız gerekir. Protokolü dehttpolarakhttpsolarak değiştirdiğinizden emin olun.# 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.netBu dosyayı kaydettikten sonra uygulamanızı yeniden derlemek için aşağıdaki komutu kullanın:
mvn clean package
Microsoft Entra ID uygulama kaydınızı güncelleştirme
Yeniden yönlendirme URI'si dağıtılan uygulamanızda Azure App Service'e değiştiğinden, Microsoft Entra Id uygulama kaydınızda yeniden yönlendirme URI'sini de değiştirmeniz gerekir. Bu değişikliği yapmak için aşağıdaki adımları kullanın:
Geliştiriciler için Microsoft kimlik platformunun Uygulama Kayıtları sayfasına gidin.
Uygulama kaydınızı aramak için arama kutusunu kullanın; örneğin,
java-servlet-webapp-authentication.Adını seçerek uygulama kaydınızı açın.
Menüden Kimlik Doğrulaması seçin.
Web - Yönlendirme URI'leri bölümünde URI ekleseçin.
Uygulamanızın URI'sini doldurun ve
/auth/redirect(örneğin,https://<your-app-name>.azurewebsites.net/auth/redirect) yazın.Kaydetöğesini seçin.
Uygulamayı dağıt
Artık uygulamanızı Azure App Service'e dağıtmaya hazırsınız. Dağıtımı yürütmek üzere Azure ortamınızda oturum açtığınızdan emin olmak için aşağıdaki komutu kullanın:
az login
pom.xml dosyanızda tüm yapılandırma hazır olduğunda, java uygulamanızı Azure'a dağıtmak için aşağıdaki komutu kullanabilirsiniz:
mvn package azure-webapp:deploy
Dağıtım tamamlandıktan sonra uygulamanız http://<your-app-name>.azurewebsites.net/konumunda hazırdır.
msal4j-servlet-auth uygulamasının başlangıç sayfasını görmeniz gereken yerel web tarayıcınızla URL'yi açın.
Gizli değerleri kaldır
Uygulamanın authentication.properties dosyası şu anda aad.secret parametresinde istemci sırrınızın değerini barındırıyor. Bu değeri bu dosyada tutmak iyi bir uygulama değildir. Bunu bir Git deposuna işliyorsanız da risk alıyor olabilirsiniz.
Ek bir güvenlik adımı olarak, bu değeri Azure Key Vault
aad.secret değerini Key Vault'a taşımak ve kodunuzda kullanmak için aşağıdaki adımları kullanın:
Azure Key Vault örneği oluşturmak için aşağıdaki komutları kullanın:
export RESOURCE_GROUP=<your-resource-group-name> export KEY_VAULT=<your-key-vault-name> az keyvault create \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULTanahtar kasanıza
aad.secretgizli değerini yeni bir gizli değer olarak eklemek için aşağıdaki komutları kullanın:az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"Şimdi uygulamanıza anahtar kasanıza erişim vermeniz gerekir. Bu görevi yapmak için önce aşağıdaki komutları kullanarak uygulamanız için yeni bir kimlik oluşturun:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAMEBu kimliğe Key Vault'unuzdaki sırlar üzerinde
getvelistiznini vermek için aşağıdaki komutları kullanın: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 $IDENTITYUygulamanızda, anahtar kasanızdaki sır için bir anahtar kasası referansı kullanan bir uygulama ayarı oluşturmak amacıyla aşağıdaki komutu kullanın. Bu ayar, gizli dizinin değerini uygulamanızda ortam değişkeni olarak kullanılabilir hale getirir.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'Bu değeri ortam değişkenlerinden yüklemek için aşağıdaki kodu kullanın. \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java dosyasında, 41. satırdaki mevcut deyimi şu satırla değiştirin:
public static final String SECRET = System.getenv("AADSECRET");Artık
aad.secretanahtarını ve değerini authentication.properties dosyasından silebilirsiniz.Aşağıdaki komutu kullanarak kodu yeniden oluşturun:
mvn clean packageAşağıdaki komutu kullanarak uygulamayı yeniden dağıtın:
mvn package azure-webapp:deploy
Dağıtımınız tamamlandı.