Aracılığıyla paylaş


Rolleri ve rol taleplerini kullanarak Java Tomcat uygulamalarının güvenliğini sağlama

Bu makalede, kullanıcıları oturum açmak için OpenID Bağlan kullanan bir Java Tomcat uygulaması ve yetkilendirme için Microsoft Entra ID Uygulama Rolleri (uygulama rolleri) gösterilmektedir.

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 senaryo ve bu örneği kapsayan bir video için bkz . Uygulama rollerini, güvenlik gruplarını, kapsamları ve dizin rollerini kullanarak uygulamalarınızda yetkilendirme uygulama.

Protokollerin bu senaryoda ve diğer senaryolarda nasıl çalıştığı hakkında daha fazla bilgi için bkz . Kimlik doğrulaması ve yetkilendirme.

Bu uygulama, bir kullanıcıda oturum açmak ve Microsoft Entra Id'den kimlik belirteci almak için Java için MSAL (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:

  • PrivilegedAdmin: Yalnızca Yönetici ve Normal Kullanıcılar sayfalarına erişim yetkisine sahip.
  • RegularUser: Normal Kullanıcılar sayfasına erişme yetkisine sahip.

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.

Kullanıcıları ve grupları Azure portalı aracılığıyla veya Microsoft Graph ve Microsoft Azure AD PowerShell kullanarak program aracılığıyla rollere atayabilirsiniz. Bu makalede her iki teknik de açıklanmaktadır.

Not

Uç nokta, kullanıcıların oturum açma yetkisi olarak kullanılıyorsa https://login.microsoftonline.com/common/ , kiracıdaki konuk kullanıcılar için rol talepleri mevcut değildir. Bir kullanıcının gibi https://login.microsoftonline.com/tenantidkiracılı bir uç noktada oturum açması 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ını alma.
  • Yalnızca kuruluş dizininizdeki hesaplarla çalışmak istiyorsanız kendi Microsoft Entra Id kiracınızdaki 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ıları oluşturma, davet etme ve silme.

Öneriler

Örneği ayarlama

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-java-servlet-webapp-authentication.git
cd 3-Authorization-II/roles

Alternatif olarak, ms-identity-java-servlet-webapp-authentication 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 kaydetme

Bu örnekte bir proje var. Uygulamayı Azure portalına kaydetmek için el ile yapılandırma adımlarını izleyebilir veya bir PowerShell betiği kullanabilirsiniz. Betik aşağıdaki görevleri yapar:

  • Microsoft Entra ID uygulamalarını ve parolalar, izinler ve bağımlılıklar gibi ilgili nesneleri oluşturur.
  • Proje yapılandırma dosyalarını değiştirir.
  • Varsayılan olarak, yalnızca kuruluş dizininizdeki hesaplarla çalışan bir uygulama ayarlar.

PowerShell betiğini çalıştırmak için aşağıdaki adımları kullanın:

  1. Windows'da PowerShell'i açın ve kopyalanan dizinin köküne gidin.

  2. PowerShell için yürütme ilkesini ayarlamak için aşağıdaki komutu kullanın:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
    
  3. Yapılandırma betiğini çalıştırmak için aşağıdaki komutları kullanın:

    cd .\AppCreationScripts\
    .\Configure.ps1
    

    Not

    Betikleri çalıştırmanın diğer yolları Uygulama Oluşturma Betikleri bölümünde açıklanmıştır. Betikler ayrıca, CI/CD senaryolarınızda yardımcı olabilecek otomatik uygulama kaydı, yapılandırma ve kaldırma için bir kılavuz sağlar.

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 ClientIDAppIdile Application ID aynıdır.

  1. Projeyi IDE'nizde açın.

  2. authentication.properties dosyasını açın.

  3. dizesini {enter-your-tenant-id-here}bulun. Mevcut değeri Microsoft Entra Id kiracı kimliğiniz ile değiştirin.

  4. Dizeyi {enter-your-client-id-here} bulun ve mevcut değeri Azure portalından kopyalanan uygulama kimliğiyle veya java-servlet-webapp-call-graphclientId uygulamanın kimliğiyle değiştirin.

  5. Dizeyi {enter-your-client-secret-here} bulun ve mevcut değeri Azure portalında uygulamanın oluşturulması java-servlet-webapp-roles sırasında kaydettiğiniz değerle değiştirin.

  6. app.roles özelliğini bulun ve değerin olarak app.roles=admin PrivilegedAdmin, user RegularUserayarlandığından emin olun veya belirli rollerinizin adlarını kullanın.

Örneği oluşturma

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.

Örneği çalıştırma

Aşağıdaki bölümlerde, örneğin Azure Uygulaması Hizmetine nasıl dağıtılacağı gösterilmektedir.

Önkoşullar

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 bkz . Maven eklentileriyle kimlik doğrulaması.

Eklentiyi yapılandırmak için aşağıdaki adımları kullanın:

  1. 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.12.0:config
    
  2. Yeni çalıştırma yapılandırması oluştur için Y tuşuna basın ve ardından Enter tuşuna basın.

  3. İş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.

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

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

  6. pricingTier için değer tanımla alanında, varsayılan P1v2 katmanını seçmek için Enter tuşuna basın.

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

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:

  1. 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ü httphttpsolarak 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
    
  2. 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.secretvardı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.

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:

  1. Geliştiriciler için Microsoft kimlik platformu Uygulama kayıtları sayfasına gidin.

  2. Uygulama kaydınızı aramak için arama kutusunu kullanın; örneğin, java-servlet-webapp-authentication.

  3. Adını seçerek uygulama kaydınızı açın.

  4. Menüden Kimlik Doğrulaması'nı seçin.

  5. Web - Yeniden Yönlendirme URI'leri bölümünde URI Ekle'yi seçin.

  6. Uygulamanızın URI'sini doldurun; örneğin, https://<your-app-name>.azurewebsites.net/auth/redirectöğesini ekleyerek /auth/redirect .

  7. Kaydet'i seçin.

Uygulamayı dağıtma

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

Örneği keşfetmek için aşağıdaki adımları kullanın:

  1. Ekranın ortasında oturum açma veya oturum kapatma durumunun görüntülendiğine dikkat edin.
  2. Köşedeki bağlama duyarlı düğmeyi seçin. Bu düğme, uygulamayı ilk kez çalıştırdığınızda Oturum Aç'ı okur.
  3. Sonraki sayfada yönergeleri izleyin ve Microsoft Entra Id kiracısında bir hesapla oturum açın.
  4. Onay ekranında, istenen kapsamlara dikkat edin.
  5. Bağlama duyarlı düğmenin artık Oturumu kapat ifadesinin yer aldığından ve kullanıcı adınızı görüntülediğine dikkat edin.
  6. Kimlik belirtecinin çözülen taleplerinden bazılarını görmek için Kimlik Belirteci Ayrıntıları'nı seçin.
  7. Sayfayı görüntülemek /admin_only için yalnızca Yönetici seçin. Bu sayfayı yalnızca uygulama rolüne PrivilegedAdmin sahip kullanıcılar görüntüleyebilir. Aksi takdirde, bir yetkilendirme hatası iletisi görüntülenir.
  8. Sayfayı görüntülemek için Normal Kullanıcılar'ı/regular_user seçin. Yalnızca uygulama rolüne RegularUser sahip kullanıcılar veya PrivilegedAdmin bu sayfayı görüntüleyebilir. Aksi takdirde, bir yetkilendirme hatası iletisi görüntülenir.
  9. Oturumu kapatmak için köşedeki düğmeyi kullanın.

Kod hakkında

Bu örnek, bir kullanıcıyı oturum açmak ve rol talebi içerebilecek bir kimlik belirteci almak için Java için MSAL (MSAL4J) kullanır. Mevcut rol talebine bağlı olarak, oturum açan kullanıcı korumalı sayfalardan Admins Only birine veya her ikisine de erişemez ve Regular Users.

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
AppCreationScripts/ Microsoft Entra Id uygulama kayıtlarını otomatik olarak yapılandırmak için betikler.
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 ____Servlet.java ile biten .java sınıflarda 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ı.

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

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:

  • Uygulamanın istemci kimliği.
  • Gizli İstemci Uygulamaları için bir gereksinim olan gizli dizi.
  • Microsoft Entra kiracı kimliğinizi içeren Microsoft Entra Kimliği Yetkilisi.

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:

  1. 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 Id, 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.
      • Normalde, üç kapsam openid profile offline_access kimlik belirteci yanıtı almak için yeterlidir.
      • Uygulama tarafından istenen kapsamların tam listesi authentication.properties dosyasında bulunabilir. User.Read gibi daha fazla kapsam ekleyebilirsiniz.
  2. 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.

  3. Ö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.
  4. acquireToken Başarılı olursa belirteç talepleri ayıklanır. Nonce denetimi geçerse, sonuçlar bir örneğine contextIdentityContextData 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 IdentityContextDataIdentityContextAdapterServlet 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, 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 roles claim(s)
app.protect.authenticated=/token_details

altındaki virgülle ayrılmış kural kümelerinde app.protect.roles 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, 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 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_tokenkodlanı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