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 makale, kullanıcıların oturum açmasını sağlamak için OpenID Connect kullanan ve yetkilendirme için Microsoft Entra ID Uygulama Rolleri'ni (uygulama rolleri) kullanan bir Java Tomcat uygulamasını göstermektedir.
Bu uygulama, Microsoft Entra ID'nin uygulama rollerini ve rol talepleri özelliğini kullanarak rol tabanlı erişim denetimi (RBAC) uygular. Bir diğer yaklaşım da Microsoft Entra Id gruplarını ve grup taleplerini kullanmaktır. Microsoft Entra Id grupları ve uygulama rolleri birbirini dışlamaz. Her ikisini de ayrıntılı erişim denetimi sağlamak için kullanabilirsiniz.
Yetkilendirme ilkelerini güvenli bir şekilde zorunlu kılmak için RBAC'yi uygulama rolleri ve rol talepleri ile de kullanabilirsiniz.
Bu senaryoyu ve bu örneği ele alan bir video için Uygulama rollerini, güvenlik gruplarını, kapsamları ve dizin rollerini kullanarak uygulamalarınızda yetkilendirme uygulama konusuna bakın.
Protokollerin bu ve diğer senaryolarda nasıl çalıştığı hakkında daha fazla bilgi için bkz. Kimlik doğrulama ve yetkilendirme.
Bu uygulama, bir kullanıcının oturum açmasını sağlamak ve Microsoft Entra ID'den bir kimlik belirteci almak için Java için MSAL'i (MSAL4J) kullanır.
Bu örnekte ilk olarak kullanıcıda oturum açmak için Java için MSAL (MSAL4J) kullanılır. Giriş sayfasında, kullanıcının kimlik belirteçlerindeki talepleri görüntülemesi için bir seçenek görüntülenir. Bu uygulama, kullanıcıların atanmış oldukları uygulama rolüne bağlı olarak ayrıcalıklı bir yönetici sayfasını veya normal bir kullanıcı sayfasını görüntülemesini de sağlar. Amaç, bir uygulama içinde belirli işlevlere veya sayfalara erişimin, ait oldukları role bağlı olarak kullanıcıların alt kümeleriyle nasıl kısıtlandığını gösteren bir örnek sağlamaktır.
Bu tür yetkilendirme RBAC kullanılarak uygulanır. RBAC ile, yönetici tek tek kullanıcılara veya gruplara değil rollere izin verir. Yönetici daha sonra belirli içeriğe ve işlevlere kimlerin erişebileceğini denetlemek için farklı kullanıcılara ve gruplara roller atayabilir.
Bu örnek uygulama aşağıdaki iki Uygulama Rolünü tanımlar:
- : Yalnızca Yöneticiler ve Normal Kullanıcılar sayfalarına erişme yetkisine sahiptir.
- : Normal Kullanıcılar sayfasına erişim yetkisine sahiptir.
Bu uygulama rolleri Azure portalında uygulamanın kayıt bildiriminde tanımlanır. Kullanıcı uygulamada oturum açtığında, Microsoft Entra Id kullanıcıya rol üyeliği biçiminde tek tek verilen her rol için bir rol talebi yayar.
Azure portalı aracılığıyla rollere kullanıcı ve grup atayabilirsiniz.
Not
, kullanıcıların oturum açması için yetkili uç nokta olarak kullanılıyorsa, bir kiracıdaki konuk kullanıcılar için rol talepleri bulunmaz. Bir kullanıcının gibi kiracılı bir uç noktada oturum açmasını sağlamanız gerekir.
Önkoşullar
- JDK sürümü 8 veya üzeri
- Maven 3
- Microsoft Entra ID kiracısı. Daha fazla bilgi için bkz. Microsoft Entra ID kiracısı edinme.
- Yalnızca kuruluş dizininizdeki hesaplarla çalışmak istiyorsanız kendi Microsoft Entra ID kiracınızda bir kullanıcı hesabı; yani tek kiracılı mod. Kiracınızda henüz bir kullanıcı hesabı oluşturmadıysanız devam etmeden önce bunu yapmanız gerekir. Daha fazla bilgi için bkz. Kullanıcı oluşturma, davet etme ve silme.
- Tomcat 9
- Visual Studio Code
- Visual Studio Code için Azure Araçları
Öneriler
- Java / Jakarta Servlet’leri hakkında biraz bilgi sahibi olmak.
- Linux/OSX terminali hakkında biraz bilgi.
- Belirteçlerinizi incelemek için jwt.ms.
- Ağ etkinliğinizi izlemek ve sorun gidermek için Fiddler.
- En son gelişmelerden haberdar olmak için Microsoft Entra Blogu'nu takip edin.
Örneği kurun
Aşağıdaki bölümlerde örnek uygulamanın nasıl ayarlanacağı gösterilmektedir.
Örnek depoyu kopyalama veya indirme
Ö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/roles
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.
Örnek uygulamayı Microsoft Entra ID kiracınıza kaydedin
Bu örnekte bir proje var. Aşağıdaki bölümlerde, Azure portalını kullanarak uygulamayı nasıl kaydedeceğiniz gösterilmektedir.
Uygulamalarınızı oluşturmak istediğiniz Microsoft Entra ID kiracısını seçin
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.
Uygulamayı kaydedin (java-servlet-webapp-roles)
İlk olarak, Hızlı Başlangıç: Microsoft kimlik platformuyla bir uygulama kaydetme bölümündeki yönergeleri izleyerek Azure portalında yeni bir uygulama kaydedin.
Ardından kaydı tamamlamak için aşağıdaki adımları kullanın:
Geliştiriciler için Microsoft kimlik platformundaki 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:
Ad bölümünde, uygulama kullanıcılarına gösterilmek üzere anlamlı bir uygulama adı girin - örneğin, .
Desteklenen hesap türleri'nin altında aşağıdaki seçeneklerden birini belirleyin:
- Yalnızca kiracınızdaki kullanıcıların kullanacağı bir uygulama, yani tek kiracılı bir uygulama oluşturuyorsanız yalnızca bu kuruluş dizinindeki hesaplar seçeneğini belirleyin.
Yeniden Yönlendirme URI'si bölümünde, açılır kutudan Web seçeneğini belirleyin ve aşağıdaki yeniden yönlendirme URI'sini girin: .
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 diziler oluşturabileceğiniz ve sertifikaları yükleyebileceğiniz sayfayı açmak için gezinti bölmesinden Sertifikalar & gizli diziler seçeneğini belirleyin.
Gizli anahtarlar bölümünün altında, Yeni gizli anahtar'ı seçin.
Bir açıklama yazın - örneğin, app secret.
Sır için bir son kullanma tarihi seçin veya özel bir geçerlilik süresi belirtin. İstemci gizli anahtarları en fazla 24 aylık bir geçerlilik süresiyle sınırlıdır ve Microsoft, 12 aydan kısa bir sona erme süresi önerir. Üretim uygulamaları için istemci parolası yerine sertifika veya federe kimlik bilgisi tercih edin.
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.
Uygulama rollerini tanımlama
Uygulama rollerini tanımlamak için aşağıdaki adımları kullanın:
Yine aynı uygulama kaydında, gezinti bölmesinde Uygulama rolleri'ni seçin.
Uygulama rolü oluştur'u seçin ve aşağıdaki değerleri girin:
- Görünen ad için uygun bir ad girin - örneğin, PrivilegedAdmin.
- İzin verilen üye türleri için Kullanıcı'yı seçin.
- Value için PrivilegedAdmin girin.
- Açıklama için, Yönetici Sayfasını görüntüleyebilen PrivilegedAdmins girin.
Uygulama rolü oluştur'u seçin ve aşağıdaki değerleri girin:
- Görünen ad için uygun bir ad girin; örneğin, RegularUser.
- İzin verilen üye türleri için Kullanıcı'yı seçin.
- Value için RegularUser girin.
- Açıklama için Kullanıcı Sayfasını görüntüleyebilen RegularUsers girin.
Yaptığınız değişiklikleri kaydetmek için Apply'ı (Uygula) seçin.
Uygulama rollerine kullanıcı atama
Önceden tanımlanan uygulama rolüne kullanıcı eklemek için buradaki yönergeleri izleyin: Kullanıcıları ve grupları rollere atayın.
Uygulamayı (java-servlet-webapp-roles) uygulama kaydınızı kullanacak şekilde yapılandırma
Uygulamayı yapılandırmak için aşağıdaki adımları kullanın:
Not
Aşağıdaki adımlarda, , veya ile aynıdır.
Projeyi IDE'nizde açın.
authentication.properties dosyasını açın.
dizesini bulun. Mevcut değeri Microsoft Entra Id kiracı kimliğiniz ile değiştirin.
dizesini bulun ve mevcut değeri, Azure portalından kopyalanan uygulamasının uygulama kimliği veya değeriyle değiştirin.
dizesini bulun ve mevcut değeri, Azure portalında uygulamasını oluştururken kaydettiğiniz değerle değiştirin.
özelliğini bulun ve değerin olarak ayarlandığından emin olun ya da bunun yerine kendi belirli rol adlarınızı kullanın.
Örneği oluşturma
Örneği Maven kullanarak derlemek için, örneğe ait pom.xml dosyasını içeren dizine gidin ve ardından 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.
Örneği çalıştırma
- Azure App Service'e dağıtın
- Yerel olarak çalıştır
Aşağıdaki bölümlerde, örneğin Azure Uygulaması Hizmetine nasıl dağıtılacağı gösterilmektedir.
Ö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:
- IntelliJ IDEA
- Eclipse
- Visual Studio Code
Maven eklentisini yapılandırma
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 Maven eklentileriyle kimlik doğrulamasına bakın.
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:configYeni çalıştırma yapılandırması oluştur için Y tuşuna basın, 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, ardından Enter tuşuna basın.
javaVersion için bir değer tanımla seçeneğinde, Java 11 için 2 tuşuna basın, ardından Enter tuşuna basın.
webContainer için değer tanımla isteminde, Tomcat 9.0 için 4 tuşuna basın, 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, 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 'dır. Geçerli bölgeler için bkz. Desteklenen Bölgeler. |
pricingTier |
yanlış | Uygulamanızın fiyatlandırma katmanı. Üretim iş yükü için varsayılan değer 'dır. Java geliştirme ve testi için önerilen minimum değer değeridir. Daha fazla bilgi için App Service Fiyatlandırması bölümüne bakın. |
runtime |
yanlış | Çalışma zamanı ortamının yapılandırması. Daha fazla bilgi için, Yapılandırma Ayrıntıları bölümüne bakın. |
deployment |
yanlış | Dağıtım yapılandırması. Daha fazla bilgi için, Yapılandırma Ayrıntıları bölümüne bakın. |
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 Ortak Yapılandırmalar bölümüne bakın. Azure App Service'e özgü yapılandırmalar için Azure uygulaması: Yapılandırma Ayrıntıları konusuna bakın.
Daha sonra kullanmak üzere ve değerlerini sakladığınızdan 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 değerini dağıttığınız uygulamanın etki alanı adı olarak değiştirin. Örneğin, önceki adımda uygulama adınız için seçtiyseniz, şimdi değeri için kullanmanız gerekir. Protokolü de 'den 'e 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
Önemli
Bu aynı authentication.properties dosyasında, için bir ayar 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 değeri kodunuzdan kaldırmak için, App Service'e Dağıtma - Gizli değeri kaldırma bölümünde daha ayrıntılı yönergeler bulabilirsiniz. Bu kılavuzda, gizli değeri Key Vault'a aktarmak ve Key Vault Başvuruları'nı kullanmak için ek adımlar yer alır.
Microsoft Entra ID uygulama kaydınızı güncelleştirme
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 platformundaki Uygulama kayıtları sayfasına gidin.
Uygulama kaydınızı aramak için arama kutusunu kullanın - örneğin, .
Adını seçerek uygulama kaydınızı açın.
Menüden Kimlik Doğrulaması'nı seçin.
WebYeniden Yönlendirme URI'leri bölümünde URI Ekle seçeneğini belirleyin.
Uygulamanızın URI'sini girin ve sonuna ekleyin; örneğin, .
Kaydet'i seçin.
Uygulamayı yayınla
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 adresinde hazırdır. URL’yi yerel web tarayıcınızda açın; burada uygulamasının başlangıç sayfasını görmelisiniz.
Örneği keşfedin
Örneği keşfetmek için aşağıdaki adımları kullanın:
- Ekranın ortasında oturum açma veya oturum kapatma durumunun görüntülendiğine dikkat edin.
- Köşedeki bağlama duyarlı düğmeyi seçin. Bu düğmenin üzerinde, uygulamayı ilk kez çalıştırdığınızda Oturum Aç yazar.
- Sonraki sayfada yönergeleri izleyin ve Microsoft Entra Id kiracısında bir hesapla oturum açın.
- Onay ekranında, istenen kapsamlara dikkat edin.
- Bağlama duyarlı düğmenin artık Oturumu kapat yazdığını ve kullanıcı adınızı görüntülediğini fark edin.
- ID belirtecinin çözümlenmiş claim’lerinden bazılarını görmek için ID Token Details seçeneğini belirleyin.
- sayfasını görüntülemek için Yalnızca Yöneticiler seçin. Bu sayfayı yalnızca uygulama rolü olan kullanıcılar görüntüleyebilir. Aksi takdirde, bir yetkilendirme hatası iletisi görüntülenir.
- sayfasını görüntülemek için Standart Kullanıcılar'ı seçin. Yalnızca veya uygulama rolüne sahip kullanıcılar bu sayfayı görüntüleyebilir. Aksi takdirde, bir yetkilendirme hatası iletisi görüntülenir.
- Oturumu kapatmak için köşedeki düğmeyi kullanın.
Kod hakkında
Bu örnek, bir kullanıcının oturum açmasını sağlamak ve roller talebini içerebilecek bir kimlik belirteci elde etmek için Java için MSAL'ı (MSAL4J) kullanır. Mevcut roller talebine göre, oturum açmış kullanıcı korumalı sayfaların hiçbirine, birine veya her ikisine de, ve , erişebilir.
Bu örneğin davranışını çoğaltmak istiyorsanız, 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.
İçindekiler
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/roles/ | 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ı Servletile 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 ID 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 | Örnek için lisans. |
Kimlik belirtecinde rol talebi işleme
Belirtecin rol talebi, aşağıdaki örnekte gösterildiği gibi oturum açmış kullanıcının atandığı rollerin adlarını içerir:
{
...
"roles": [
"Role1",
"Role2",]
...
}
ConfidentialClientApplication
Aşağıdaki örnekte gösterildiği gibi, AuthHelper.java dosyasında bir örneği 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:
- Uygulamanın istemci kimliği.
- Gizli İstemci Uygulamaları için gerekli olan istemci sırrı.
- Microsoft Entra kiracı kimliğinizi içeren Microsoft Entra ID yetki adresi.
Bu örnekte, bu değerler Config.java dosyasındaki bir özellik okuyucu kullanılarak authentication.properties dosyasından okunur.
Adım adım gözden geçirme
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ızdaki uç noktasına bir istek göndermektir. MSAL4J örneği, bir 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:
- : bir AuthorizationRequestUrl oluşturmak için ayarlanması gereken parametreler.
- : Microsoft Entra ID'nin, kullanıcı kimlik bilgilerini topladıktan sonra tarayıcıyı yetkilendirme koduyla birlikte yönlendirdiği yer. Azure portal içindeki Microsoft Entra ID uygulama kaydındaki yeniden yönlendirme URI'si ile eşleşmelidir.
- : Kapsamlar, uygulama tarafından istenen izinlerdir.
- Normalde, kimlik belirteci yanıtı almak için üç kapsam yeterlidir.
- Uygulama tarafından istenen kapsamların tam listesi authentication.properties dosyasında bulunabilir. gibi 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 yapılan geçerli bir istek, bir yetkilendirme kodu içerir.
örneği daha sonra bu yetkilendirme kodu karşılığında Microsoft Entra ID'den bir kimlik belirteci ve erişim belirteci alır.
// 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:
- : Kimlik belirteci ve/veya erişim belirteci almak için Yetkilendirme Kodunu kullanmak üzere ayarlanması gereken parametreler.
- : Yeniden yönlendirme uç noktasında alınan yetkilendirme kodu.
- : Önceki adımda kullanılan yönlendirme URI’si yeniden iletilmelidir.
- : Önceki adımda kullanılan kapsamlar tekrar iletilmelidir.
başarılı olursa, belirteç talepleri ayıklanır. Nonce denetimi başarılı olursa, sonuçlar örneği olan içine yerleştirilir ve oturuma kaydedilir. Uygulama daha sonra, aşağıdaki kodda gösterildiği gibi, ne zaman erişmesi gerekirse örneği aracılığıyla oturumdan örneğini 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());
Yolları koruma
Örnek uygulamanın yollara erişimi nasıl filtrelediğini öğrenmek için bkz . AuthenticationFilter.java. authentication.properties dosyasında, ö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 roles claim(s)
app.protect.authenticated=/token_details
altındaki virgülle ayrılmış kural kümelerinde listelenen yollardan herhangi biri de, aşağıdaki örnekte gösterildiği gibi, kimliği doğrulanmamış kullanıcıların erişimine kapalıdır. Ancak bu yollar, uygulama rolü üyeliklerinin boşlukla ayrılmış bir listesini de içerir: Kimlik doğrulamasından sonra yalnızca ilgili rollerden en az birine sahip kullanıcılar bu yollara erişebilir.
# local short names for app roles - for example, sets admin to mean PrivilegedAdmin (useful for long rule sets defined in the next key, app.protect.roles)
app.roles=admin PrivilegedAdmin, user RegularUser
# A route and its corresponding <space-separated> role(s) that can access it; the start of the next route & its role(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by PrivilegedAdmin, /regular_user can be accessed by PrivilegedAdmin role and the RegularUser role
app.protect.roles=/admin_only admin, /regular_user admin user
Kapsamlar
Kapsamlar, Microsoft Entra ID'ye uygulamanın istediği erişim düzeyini belirtir.
İ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 izin kapsamına onay verip bir belirteç alırsa, onay verilen izin kapsamları elde edilen içine kodlanır.
Uygulama tarafından istenen kapsamlar için bkz . authentication.properties. Bu üç kapsam MSAL tarafından istenir ve varsayılan olarak Microsoft Entra Id tarafından verilir.
Daha Fazla Bilgi
- Java için Microsoft Kimlik Doğrulama Kitaplığı (MSAL)
- Microsoft kimlik platformu
- Hızlı başlangıç: Microsoft kimlik platformunda bir uygulama kaydetme
- Microsoft Entra ID uygulama onay deneyimini anlama
- Kullanıcı ve yönetici onayını anlayın
- MSAL kod örnekleri
- Nasıl yapılır: Uygulamanıza uygulama rolleri ekleme ve bunları belirteçte alma
- Microsoft Entra ID'de bir uygulama için kullanıcı atamasını yönetme