Ekinlikler
17 Mar 23 - 21 Mar 23
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Bu makalede, Java için Microsoft Authentication Library (MSAL) ile kullanıcılara oturum açmanızı sağlayan bir Java Tomcat uygulamasının nasıl oluşturulacağı gösterilmektedir. Uygulama ayrıca Microsoft Entra ID güvenlik grubu üyeliğine göre sayfalara erişimi kısıtlar.
Aşağıdaki diyagramda uygulamanın topolojisi gösterilmektedir:
Uygulamanın topolojisini gösteren diyagram.
İstemci uygulaması, kullanıcıları bir Microsoft Entra ID kiracısında oturum açmak ve Microsoft Entra Id'den kimlik belirteci almak için Java için MSAL (MSAL4J) kullanır. Kimlik belirteci, bir kullanıcının bu kiracıyla kimliğinin doğrulandığını kanıtlar. Uygulama, kullanıcının kimlik doğrulaması durumuna ve grup üyeliğine göre yollarını korur.
Bu senaryoya yönelik bir video için bkz . Uygulama rollerini, güvenlik gruplarını, kapsamları ve dizin rollerini kullanarak uygulamalarınızda yetkilendirme uygulama.
GroupAdmin
ve GroupMember
.Aşağıdaki bölümlerde örnek uygulamanın nasıl ayarlanacağı gösterilmektedir.
Örneği kopyalamak için bir Bash penceresi açın ve aşağıdaki komutu kullanın:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/3-Authorization-II/groups
Alternatif olarak, ms-identity-msal-java-samples deposuna gidin, ardından .zip dosyası olarak indirin ve sabit sürücünüze ayıklayın.
Önemli
Windows'ta dosya yolu uzunluğu sınırlamalarını önlemek için depoyu sabit sürücünüzün köküne yakın bir dizine kopyalayın veya ayıklayın.
Bu örnekte bir proje var. Aşağıdaki bölümlerde, Azure portalını kullanarak uygulamayı nasıl kaydedeceğiniz gösterilmektedir.
Kiracınızı seçmek için aşağıdaki adımları kullanın:
Azure Portal’ında oturum açın.
Hesabınız birden fazla Microsoft Entra ID kiracısında varsa Azure portalının köşesindeki profilinizi seçin ve ardından Dizini değiştir'i seçerek oturumunuzu istediğiniz Microsoft Entra ID kiracısına değiştirin.
İlk olarak, Hızlı Başlangıç: Uygulamayı Microsoft kimlik platformu kaydetme başlığı altındaki yönergeleri izleyerek Azure portalına yeni bir uygulama kaydedin.
Ardından kaydı tamamlamak için aşağıdaki adımları kullanın:
Geliştiriciler için Microsoft kimlik platformu Uygulama kayıtları sayfasına gidin.
Yeni kayıt öğesini seçin.
Görüntülenen Uygulamayı kaydet sayfasında aşağıdaki uygulama kayıt bilgilerini girin:
java-servlet-webapp-groups
.http://localhost:8080/msal4j-servlet-groups/auth/redirect
.Uygulamayı kaydetmek için Kaydet'i seçin.
Uygulamanın kayıt sayfasında, daha sonra kullanmak üzere Uygulama (istemci) kimliği değerini bulun ve kopyalayın. Bu değeri uygulamanızın yapılandırma dosyasında veya dosyalarında kullanırsınız.
Yaptığınız değişiklikleri kaydetmek için Kaydet'i seçin.
Uygulamanın kayıt sayfasında, gizli dizi oluşturabileceğiniz ve sertifikaları karşıya yükleyebileceğiniz sayfayı açmak için gezinti bölmesinde Sertifikalar ve gizli diziler'i seçin.
Gizli anahtarlar bölümünün altında, Yeni gizli anahtar'ı seçin.
Uygulama gizli dizisi gibi bir açıklama yazın.
Kullanılabilir sürelerden birini seçin: 1 yıl içinde, 2 yıl içinde veya Hiçbir Zaman Dolmaz.
Ekle'yi seçin. Oluşturulan değer görüntülenir.
Oluşturulan değeri kopyalayıp sonraki adımlarda kullanmak üzere kaydedin. Kodunuzun yapılandırma dosyaları için bu değere ihtiyacınız vardır. Bu değer yeniden görüntülenmez ve başka bir yolla alamazsınız. Bu nedenle, başka bir ekrana veya bölmeye gitmeden önce Azure portalından kaydettiğinizden emin olun.
Uygulamanın kayıt sayfasında, uygulamanızın ihtiyaç duyduğu API'lere erişim eklemek üzere sayfayı açmak için gezinti bölmesinden API izinleri'ni seçin.
İzin ekle'yi seçin.
Microsoft API'leri sekmesinin seçili olduğundan emin olun.
Yaygın kullanılan Microsoft API'leri bölümünde Microsoft Graph'ı seçin.
Temsilci izinleri bölümünde, listeden User.Read ve GroupMember.Read.All'ı seçin. Gerekirse arama kutusunu kullanın.
İzinler ekle'yi seçin.
GroupMember.Read.All
yönetici onayı gerektirir, bu nedenle {tenant} için yönetici onayı ver/iptal et'i seçin ve ardından kiracıdaki tüm hesaplar için istenen izinler için izin vermek isteyip istemediğiniz sorulduğunda Evet'i seçin. Bu eylemi gerçekleştirmek için Microsoft Entra Id kiracı yöneticisi olmanız gerekir.
Uygulamayı yapılandırmak için aşağıdaki adımları kullanın:
Not
Aşağıdaki adımlarda veya ClientID
AppId
ile Application ID
aynıdır.
Projeyi IDE'nizde açın.
./src/main/resources/authentication.properties dosyasını açın.
dizesini {enter-your-tenant-id-here}
bulun. Uygulamanızı yalnızca bu kuruluş dizinindeki Hesaplar seçeneğiyle kaydettiyseniz mevcut değeri Microsoft Entra kiracı kimliğiniz ile değiştirin.
Dizeyi {enter-your-client-id-here}
bulun ve mevcut değeri Azure portalından kopyalanan uygulama kimliğiyle veya java-servlet-webapp-groups
clientId
uygulamanın kimliğiyle değiştirin.
Dizeyi {enter-your-client-secret-here}
bulun ve mevcut değeri Azure portalında uygulamanın oluşturulması java-servlet-webapp-groups
sırasında kaydettiğiniz değerle değiştirin.
Uygulamalarınızı grup talebi alacak şekilde nasıl daha fazla yapılandırabileceğinize ilişkin aşağıdaki seçenekleri kullanabilirsiniz:
İç içe yerleştirilmiş gruplar dahil bir Microsoft Entra ID kiracısında oturum açmış kullanıcının atandığı tüm grupları alın. Daha fazla bilgi için, İç içe gruplar da dahil olmak üzere oturum açmış kullanıcının atandığı tüm grupları almak için uygulamanızı yapılandırma bölümüne bakın.
Uygulamanızın çalışmak üzere programlandığı filtrelenmiş bir grup kümesinden grup talep değerlerini alın. Daha fazla bilgi için, Bir kullanıcının atanabileceği filtrelenmiş bir grup kümesinden grup talep değerlerini almak için uygulamanızı yapılandırma bölümüne bakın. Bu seçenek Microsoft Entra ID Free sürümünde kullanılamaz.
Not
Şirket içi grubun veya grup samAccountName
kimliği yerine grup kimliğini almak için, Microsoft Entra Id kullanarak uygulamalar için grup taleplerini yapılandırma bölümündeki Active Directory'den eşitlenen grup özniteliklerini kullanma önkoşulları bölümüne On Premises Group Security Identifier
bakın.
Uygulamanızı yapılandırmak için aşağıdaki adımları kullanın:
Uygulamanın kayıt sayfasında, uygulamanıza verilen talepler tarafından sağlanan belirteçleri yapılandırabileceğiniz sayfayı açmak için gezinti bölmesinde Belirteç Yapılandırması'nı seçin.
Grup Talebi Düzenle ekranını açmak için Grup talebi ekle'yi seçin.
Güvenlik grupları VEYA Tüm gruplar (dağıtım listelerini içerir ancak uygulamaya atanan grupları içermez) seçeneğini belirleyin. Her iki seçeneğin de seçilmesi, Güvenlik Grupları seçeneğinin etkisini azaltır.
Kimlik bölümünde Grup Kimliği'ni seçin. Bu seçim, Microsoft Entra Id'nin kullanıcı oturum açtıktan sonra uygulamanızın aldığı kimlik belirtecinin gruplar taleplerinde kullanıcının atandığı grupların nesne kimliğini göndermesine neden olur.
Bu seçenek, aşağıdaki durumlar doğru olduğunda kullanışlıdır:
Bu seçenek uygulamanızın fazla kullanım sorununu önlemesine yardımcı olur.
Not
Bu özellik Microsoft Entra ID Free sürümünde kullanılamaz.
Bu seçeneği kullandığınızda iç içe grup atamaları kullanılamaz.
Bu seçeneği uygulamanızda etkinleştirmek için aşağıdaki adımları kullanın:
Uygulamanın kayıt sayfasında, uygulamanıza verilen talepler tarafından sağlanan belirteçleri yapılandırabileceğiniz sayfayı açmak için gezinti bölmesinde Belirteç Yapılandırması'nı seçin.
Grup Talebi Düzenle ekranını açmak için Grup talebi ekle'yi seçin.
Uygulamaya atanan gruplar'ı seçin.
Güvenlik Grupları veya Tüm gruplar (dağıtım listelerini içerir ancak uygulamaya atanan grupları içermez) gibi diğer seçeneklerin seçilmesi, uygulamanızın bu seçeneği kullanmak için seçimden türetdiği avantajları engeller.
Kimlik bölümünde Grup Kimliği'ni seçin. Bu seçim, Kimlik belirtecinin gruplar talepinde kullanıcının atandığı grupların nesne kimliğinin Microsoft Entra Id ile gönderilmesiyle sonuçlanır.
Api'yi kullanıma sunma seçeneğini kullanarak bir web API'sini kullanıma sunarsanız, Erişim bölümünün altındaki Grup Kimliği seçeneğini de belirleyebilirsiniz. Bu seçenek, erişim belirtecinin gruplar talebinde kullanıcının atandığı grupların nesne kimliğini Microsoft Entra Id ile gönderir.
Uygulamanın kayıt sayfasında, uygulamaya genel bakış ekranını açmak için gezinti bölmesinde Genel Bakış'ı seçin.
Yerel dizindeki Yönetilen uygulama bölümünde uygulamanızın adını içeren köprüyü seçin. Bu alan başlığı kesilebilir; örneğin Managed application in ...
. Bu bağlantıyı seçtiğinizde, oluşturduğunuz kiracıda uygulamanızın hizmet sorumlusuyla ilişkili Kurumsal Uygulamaya Genel Bakış sayfasına gidersiniz. Tarayıcınızın geri düğmesini kullanarak uygulama kayıt sayfasına geri gidebilirsiniz.
Uygulamanıza kullanıcı ve grup atayabileceğiniz sayfayı açmak için gezinti bölmesinde Kullanıcılar ve gruplar'ı seçin.
Kullanıcı ekle'yi seçin.
Sonuç ekranından Kullanıcı ve Gruplar'ı seçin.
Bu uygulamaya atamak istediğiniz grupları seçin.
Grupları seçmeyi bitirmek için Seç'i seçin.
Grup atama işlemini tamamlamak için Ata'yı seçin.
Uygulamanız artık, uygulamanızda oturum açmış olan bir kullanıcı bu atanan bir veya daha fazla grubun üyesi olduğunda bu seçili grupları gruplar talebine alır.
Uygulamanızın temel özelliklerini listeleyen sayfayı açmak için gezinti bölmesinde Özellikler'i seçin. Kullanıcı ataması gerekli mi? bayrağını Evet olarak ayarlayın.
Önemli
Kullanıcı ataması gerekli mi? seçeneğini Evet olarak ayarladığınızda, Microsoft Entra ID yalnızca Kullanıcılar ve gruplar bölmesinde uygulamanıza atanan kullanıcıların uygulamanızda oturum açabilmesini denetler. Kullanıcıları doğrudan veya ait oldukları güvenlik gruplarını atayarak atayabilirsiniz.
Uygulamayı yapılandırmak için aşağıdaki adımları kullanın:
Önemli
Belirteç Yapılandırması sayfasında, dnsdomain\sAMAccountName gibi groupID dışında bir seçenek belirlediyseniz, aşağıdaki adımlarda nesne kimliği yerine grup adını girmelisiniz: contoso.com\Test Group
./src/main/resources/authentication.properties dosyasını açın.
Dizeyi {enter-your-admins-group-id-here}
bulun ve var olan değeri, Azure portalından kopyaladığınız grubun nesne kimliğiyle GroupAdmin
değiştirin. Yer tutucu değerinden küme ayraçlarını da kaldırın.
Dizeyi {enter-your-admins-group-id-here}
bulun ve var olan değeri, Azure portalından kopyaladığınız grubun nesne kimliğiyle GroupAdmin
değiştirin. Yer tutucu değerinden küme ayraçlarını da kaldırın.
Maven kullanarak örneği oluşturmak için, örneğin pom.xml dosyasını içeren dizine gidin ve aşağıdaki komutu çalıştırın:
mvn clean package
Bu komut, çeşitli uygulama sunucularında çalıştırabileceğiniz bir .war dosyası oluşturur.
Aşağıdaki bölümlerde, örneğin Azure Uygulaması Hizmetine nasıl dağıtılacağı gösterilmektedir.
Azure Uygulaması Hizmeti 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:
Azure Uygulaması Hizmeti'ne dağıttığı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 Uygulaması Hizmeti 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:config
Yeni çalıştırma yapılandırması oluştur için Y tuşuna basın ve ardından Enter tuşuna basın.
İşletim sistemi için değer tanımla için Windows için 1'e veya Linux için 2'ye basın ve ardından Enter tuşuna basın.
JavaVersion için değer tanımla için Java 11 için 2 tuşuna basın ve ardından Enter tuşuna basın.
webContainer için değer tanımla için Tomcat 9.0 için 4 tuşuna basın ve ardından Enter tuşuna basın.
pricingTier için değer tanımla alanında, varsayılan P1v2 katmanını seçmek için Enter tuşuna basın.
Onayla için Y tuşuna basın ve ardından Enter 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 Uygulaması Hizmetinde ç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ğiştirebilirsiniz. Bazı yaygın yapılandırmalar aşağıdaki tabloda listelenmiştir:
Özellik | Zorunlu | Açıklama |
---|---|---|
subscriptionId |
yanlış | Abonelik kimliği. |
resourceGroup |
true | Uygulamanızın Azure kaynak grubu. |
appName |
true | Uygulamanızın adı. |
region |
yanlış | Uygulamanızın barındırıldığı bölge. Varsayılan değer şudur: centralus . Geçerli bölgeler için bkz . Desteklenen Bölgeler. |
pricingTier |
yanlış | Uygulamanızın fiyatlandırma katmanı. Varsayılan değer bir P1v2 üretim iş yükü içindir. Java geliştirme ve test için önerilen en düşük değerdir B2 . Daha fazla bilgi için bkz . App Service Fiyatlandırması. |
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 Uygulaması Hizmetine özgü yapılandırmalar için bkz. Azure uygulaması: Yapılandırma Ayrıntıları.
ve resourceGroup
değerlerini daha sonra kullanmak üzere bir kenara kaydettiğinizden appName
emin olun.
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 değerini app.homePage
dağıtılan uygulamanızın etki alanı adıyla değiştirin. Örneğin, önceki adımda uygulama adınızı seçtiysenizexample-domain
, şimdi değeri için app.homePage
kullanmanız https://example-domain.azurewebsites.net
gerekir. Protokolü http
https
olarak da 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.net
Bu dosyayı kaydettikten sonra uygulamanızı yeniden derlemek için aşağıdaki komutu kullanın:
mvn clean package
Önemli
Aynı authentication.properties dosyasında, için bir ayarınız aad.secret
vardır. Bu değeri App Service'e dağıtmak iyi bir uygulama değildir. Bu değeri kodunuzda bırakmak ve git deponuza göndermeniz de iyi bir uygulama değildir. Bu gizli dizi değerini kodunuzdan kaldırmak için App Service'e Dağıtma - Gizli diziyi kaldırma bölümünde daha ayrıntılı yönergeler bulabilirsiniz. Bu kılavuz, gizli dizi değerini Key Vault'a göndermek ve Key Vault Başvurularını kullanmak için ek adımlar ekler.
Yeniden yönlendirme URI'si dağıtılan uygulamanızda Azure Uygulaması Hizmeti'ne değiştiğinden, Microsoft Entra Id uygulama kaydınızdaki 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 platformu 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ı'nı seçin.
Web - Yeniden Yönlendirme URI'leri bölümünde URI Ekle'yi seçin.
Uygulamanızın URI'sini doldurun; örneğin, https://<your-app-name>.azurewebsites.net/auth/redirect
öğesini ekleyerek /auth/redirect
.
Kaydet'i seçin.
Artık uygulamanızı Azure Uygulaması Hizmeti'ne 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 konumunda http://<your-app-name>.azurewebsites.net/
hazırdır. Uygulamanın başlangıç sayfasını görmeniz gereken yerel web tarayıcınızla URL'yi msal4j-servlet-auth
açın.
Örneği keşfetmek için aşağıdaki adımları kullanın:
GroupAdmin
, kullanıcı her iki sayfayı da girebilir.GroupMember
gruptaysa, kullanıcı yalnızca Normal Kullanıcı sayfasına girebilir.401: unauthorized
hata görüntülediğini gözlemlemek için Kimlik Belirteci Ayrıntıları'nı seçin.Bu örnek, bir kullanıcıyı oturum açmak ve grup talebi içerebilecek bir kimlik belirteci almak için Java için MSAL (MSAL4J) kullanır. Kimlik belirtecinde emisyon için çok fazla grup varsa örnek, Grup üyeliği verilerini Microsoft Graph'tan almak için Java için Microsoft Graph SDK'sını kullanır. Kullanıcının ait olduğu gruplara bağlı olarak, oturum açan kullanıcı korumalı sayfaların Admins Only
hiçbirine, birine veya her ikisine de erişebilir ve Regular Users
.
Bu örneğin davranışını çoğaltmak istiyorsanız Maven kullanarak projelerinize MSAL4J ve Microsoft Graph SDK'sı eklemeniz gerekir. src/main/java/com/microsoft/azuresamples/msal4j klasöründeki pom.xml dosyasını ve yardımcı ve authservlets klasörlerinin içeriğini kopyalayabilirsiniz. Authentication.properties dosyasına da ihtiyacınız vardır. Bu sınıflar ve dosyalar, çok çeşitli uygulamalarda kullanabileceğiniz genel kodlar içerir. Örneğin geri kalanını da kopyalayabilirsiniz, ancak diğer sınıflar ve dosyalar bu örneğin amacını ele almak için özel olarak oluşturulur.
Aşağıdaki tabloda örnek proje klasörünün içeriği gösterilmektedir:
Dosya/klasör | Açıklama |
---|---|
src/main/java/com/microsoft/azuresamples/msal4j/groupswebapp/ | Bu dizin, uygulamanın arka uç iş mantığını tanımlayan sınıfları içerir. |
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Bu dizin, oturum açma ve oturumu kapatma uç noktaları için kullanılan sınıfları içerir. |
*Servlet.java | Kullanılabilir tüm uç noktalar, adları Servlet ile biten Java sınıflarında tanımlanır. |
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Kimlik doğrulaması için yardımcı sınıflar. |
AuthenticationFilter.java | Kimliği doğrulanmamış istekleri korumalı uç noktalara 401 sayfasına yönlendirir. |
src/main/resources/authentication.properties | Microsoft Entra Kimliği ve program yapılandırması. |
src/main/webapp/ | Bu dizin kullanıcı arabirimini içerir - JSP şablonları |
CHANGELOG.md | Örnekteki değişikliklerin listesi. |
CONTRIBUTING.md | Örneğe katkıda bulunma yönergeleri. |
LİSANS | Örneğin lisansı. |
Aşağıdaki bölümlerde uygulamanın bir grup beyanını nasıl işlediği açıklanmaktadır.
Oturum açmış kullanıcının üyesi olduğu güvenlik gruplarının nesne kimliği, aşağıdaki örnekte gösterilen belirtecin gruplar talebine döndürülür:
{
...
"groups": [
"0bbe91cc-b69e-414d-85a6-a043d6752215",
"48931dac-3736-45e7-83e8-015e6dfd6f7c",]
...
}
Belirteç boyutunun HTTP üst bilgi boyutu sınırlarını aşmadığından emin olmak için Microsoft kimlik platformu, grup talebine dahil olduğu nesne kimliklerinin sayısını sınırlar.
Fazla kullanım sınırı SAML belirteçleri için 150, JWT belirteçleri için 200 ve Tek Sayfalı uygulamalar için 6'dır. Bir kullanıcı fazla kullanım sınırından daha fazla gruba üyeyse, Microsoft kimlik platformu belirteçteki grup taleplerindeki grup kimliklerini yaymaz. Bunun yerine, aşağıdaki örnekte gösterildiği gibi kullanıcının grup üyeliğini almak için uygulamaya Microsoft Graph API'sini sorgulamasını belirten bir fazla kullanım talebi içerir:
{
...
"_claim_names": {
"groups": "src1"
},
{
"_claim_sources": {
"src1": {
"endpoint":"[Graph Url to get this user's group membership from]"
}
}
...
}
Fazla kullanım senaryosu oluşturmak için aşağıdaki adımları kullanabilirsiniz:
Çok sayıda grup oluşturmak ve bunlara kullanıcı atamak için AppCreationScripts klasöründe sağlanan BulkCreateGroups.ps1 dosyasını kullanabilirsiniz. Bu dosya, geliştirme sırasında fazla kullanım senaryolarının testlerine yardımcı olur. BulkCreateGroups.ps1 betiğinde sağlanan kullanıcı objectId
bilgilerini değiştirmeyi unutmayın.
Bu örneği çalıştırdığınızda ve fazla kullanım oluştuğunda, kullanıcı oturum açtığında giriş sayfasında _claim_names görürsünüz.
Grup fazla kullanımlarıyla karşılaşmamak için mümkünse grup filtreleme özelliğini kullanmanızı kesinlikle öneririz. Daha fazla bilgi için, Bir kullanıcının atanabileceği filtrelenmiş bir grup kümesinden grup talep değerlerini almak için uygulamanızı yapılandırma bölümüne bakın.
Grup fazla kullanımıyla karşılaşmaktan kaçınamıyorsanız, belirtecinizde grup talebini işlemek için aşağıdaki adımları kullanmanızı öneririz:
Not
Fazla kullanımı işlemek için oturum açmış kullanıcının grup üyeliklerini okumak için Microsoft Graph çağrısı gerekir, bu nedenle uygulamanızın getMemberObjects işlevinin başarıyla yürütülmesi için GroupMember.Read.All iznine sahip olması gerekir.
Microsoft Graph programlama hakkında daha fazla bilgi için Geliştiriciler için Microsoft Graph'a giriş videosuna bakın.
ConfidentialClientApplication
Aşağıdaki örnekte gösterildiği gibi AuthHelper.java dosyasında bir örnek oluşturulur. Bu nesne, Microsoft Entra yetkilendirme URL'sini oluşturmaya yardımcı olur ve ayrıca kimlik doğrulama belirtecini bir erişim belirteci için değiştirmesine yardımcı olur.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
Örnek oluşturma için aşağıdaki parametreler kullanılır:
Bu örnekte, bu değerler Config.java dosyasındaki bir özellik okuyucu kullanılarak authentication.properties dosyasından okunur.
Aşağıdaki adımlar, uygulamanın işlevselliğine ilişkin bir kılavuz sağlar:
Oturum açma işleminin ilk adımı, Microsoft Entra Id kiracınız için uç noktaya istek /authorize
göndermektir. MSAL4J ConfidentialClientApplication
örneği, yetkilendirme isteği URL'si oluşturmak için kullanılır. Uygulama, tarayıcıyı kullanıcının oturum açtığı bu URL'ye yönlendirir.
final ConfidentialClientApplication client = getConfidentialClientInstance();
AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES))
.responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build();
final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString();
contextAdapter.redirectUser(authorizeUrl);
Aşağıdaki listede bu kodun özellikleri açıklanmaktadır:
AuthorizationRequestUrlParameters
: AuthorizationRequestUrl oluşturmak için ayarlanması gereken parametreler.REDIRECT_URI
: Burada Microsoft Entra, kullanıcı kimlik bilgilerini topladıktan sonra tarayıcıyı kimlik doğrulama koduyla birlikte yeniden yönlendirir. Azure portalındaki Microsoft Entra ID uygulama kaydındaki yeniden yönlendirme URI'si ile eşleşmelidir.SCOPES
: Kapsamlar , uygulama tarafından istenen izinlerdir.
openid profile offline_access
kimlik belirteci yanıtı almak için yeterlidir.User.Read
daha fazla kapsam ekleyebilirsiniz.Kullanıcıya Microsoft Entra Id tarafından bir oturum açma istemi sunulur. Oturum açma girişimi başarılı olursa, kullanıcının tarayıcısı uygulamanın yeniden yönlendirme uç noktasına yönlendirilir. Bu uç noktaya yönelik geçerli bir istek bir yetkilendirme kodu içerir.
Örnek ConfidentialClientApplication
daha sonra bu yetkilendirme kodunu bir kimlik belirteci ve Microsoft Entra Id'den erişim belirteci ile değiştirir.
// First, validate the state, then parse any error codes in response, then extract the authCode. Then:
// build the auth code params:
final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
.builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build();
// Get a client instance and leverage it to acquire the token:
final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance();
final IAuthenticationResult result = client.acquireToken(authParams).get();
Aşağıdaki listede bu kodun özellikleri açıklanmaktadır:
AuthorizationCodeParameters
: Kimlik ve/veya erişim belirteci için Yetkilendirme Kodunu değiştirmek için ayarlanması gereken parametreler.authCode
: Yeniden yönlendirme uç noktasında alınan yetkilendirme kodu.REDIRECT_URI
: Önceki adımda kullanılan yeniden yönlendirme URI'sinin yeniden geçirilmesi gerekir.SCOPES
: Önceki adımda kullanılan kapsamlar yeniden geçirilmelidir.acquireToken
Başarılı olursa belirteç talepleri ayıklanır. Nonce denetimi geçerse, sonuçlar bir örneğine context
IdentityContextData
yerleştirilir ve oturuma kaydedilir. Uygulama daha sonra aşağıdaki kodda gösterildiği gibi oturumdan erişime ihtiyaç duyduğu her zaman örneğini kullanarak öğesinin örneğini IdentityContextData
IdentityContextAdapterServlet
oluşturabilir:
// parse IdToken claims from the IAuthenticationResult:
// (the next step - validateNonce - requires parsed claims)
context.setIdTokenClaims(result.idToken());
// if nonce is invalid, stop immediately! this could be a token replay!
// if validation fails, throws exception and cancels auth:
validateNonce(context);
// set user to authenticated:
context.setAuthResult(result, client.tokenCache().serialize());
// handle groups overage if it has occurred.
handleGroupsOverage(contextAdapter);
Önceki adımdan sonra, örneğini IdentityContextData
kullanarak çağırarak context.getGroups()
grup üyeliklerini ayıklayabilirsiniz.
Kullanıcı çok fazla grubun (200'den fazla) üyesiyse, çağrısı context.getGroups()
için değilse çağrısı handleGroupsOverage()
boş olabilir. Bu arada, context.getGroupsOverage()
fazla kullanım oluştuğuna ve grupların tam listesine sahip olmak için Microsoft Graph'a çağrı yapılması gerektiğini belirten değerini döndürür true
. handleGroupsOverage()
Bu uygulamanın fazla kullanım olduğunda nasıl kullandığını context.setGroups()
görmek için AuthHelper.java'daki yöntemine bakın.
Örnek uygulamanın yollara erişimi nasıl filtrelediğini görmek için bkz . AuthenticationFilter.java . authentication.properties dosyasında, app.protect.authenticated
özelliği aşağıdaki örnekte gösterildiği gibi yalnızca kimliği doğrulanmış kullanıcıların erişebileceği virgülle ayrılmış yolları içerir:
# for example, /token_details requires any user to be signed in and does not require special groups claim
app.protect.authenticated=/token_details
altındaki virgülle ayrılmış kural kümelerinde app.protect.groups
listelenen yollardan herhangi biri, aşağıdaki örnekte gösterildiği gibi kimliği doğrulanmamış kullanıcılar için de sınır dışıdır. Ancak, bu yollar grup üyeliklerinin boşlukla ayrılmış bir listesini de içerir. Kimlik doğrulamasından sonra yalnızca ilgili gruplardan en az birine ait kullanıcılar bu yollara erişebilir.
# define short names for group IDs here for the app. This is useful in the next property (app.protect.groups).
# EXCLUDE the curly braces, they are in this file only as delimiters.
# example:
# app.groups=groupA abcdef-qrstuvw-xyz groupB abcdef-qrstuv-wxyz
app.groups=admin {enter-your-admins-group-id-here}, user {enter-your-users-group-id-here}
# A route and its corresponding group(s) that can view it, <space-separated>; the start of the next route & its group(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by admin group, /regular_user can be accessed by admin group and user group
app.protect.groups=/admin_only admin, /regular_user admin user
Kapsamlar , Microsoft Entra Id'ye uygulamanın istediği erişim düzeyini bildirir.
İstenen kapsamlara bağlı olarak Microsoft Entra Id, oturum açma sırasında kullanıcıya bir onay iletişim kutusu sunar. Kullanıcı bir veya daha fazla kapsama onay verirse ve bir belirteç alırsa, scopes-consented-to sonucuna access_token
kodlanır.
Uygulama tarafından istenen kapsamlar için bkz . authentication.properties. Varsayılan olarak, uygulama kapsamlar değerini olarak GroupMember.Read.All
ayarlar. Kullanıcının grup üyeliklerini almak için uygulamanın Graph'ı çağırması gerektiğinde bu microsoft graph API kapsamı gereklidir.
Ekinlikler
17 Mar 23 - 21 Mar 23
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunEğitim
Modül
Java web uygulamasında Microsoft Entra Id ile kullanıcılarda oturum açma - Training
Microsoft Entra Id ile kullanıcıların kimliğini doğrulamayı ve Microsoft Kimlik Doğrulama Kitaplığı'ni kullanarak java web uygulamasındaki verilere yetkili erişim elde etmeyi öğrenin.
Sertifikasyon
Microsoft Sertifikalı: Kimlik ve Erişim Yöneticisi İş Ortağı - Certifications
Kimlik çözümlerini modernleştirmek, karma çözümleri uygulamak ve kimlik idaresini uygulamak için Microsoft Entra ID'nin özelliklerini gösterin.
Belgeler
Azure Active Directory B2C tarafından oturum açmayı destekleyen bir Java JBoss EAP uygulamasının nasıl geliştirildiğini gösterir.
Rolleri ve rol taleplerini kullanarak Java Tomcat uygulamalarının güvenliğini sağlama - Azure
Kullanıcıların Microsoft kimlik platformu ile oturum açmasını sağlayan Java Tomcat uygulamasına uygulama rollerini ve rol taleplerini kullanarak yetkilendirme eklemeyi gösterir.
Tomcat uygulamasında oturum açmayı ve Microsoft Graph'a erişimi etkinleştirme - Azure
Kullanıcılarda oturum açmak ve Microsoft kimlik platformu ile Microsoft Graph'ı çağırmak için bir Java Tomcat uygulaması geliştirmeyi gösterir.