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, kullanıcılarda oturum açıp Microsoft Graph çağrısı için erişim belirteci alan bir Java Tomcat uygulaması gösterilmektedir. Java için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanır.
Aşağıdaki diyagramda uygulamanın topolojisi gösterilmektedir:
Uygulamanın topolojisini gösteren diyagram.
İstemci uygulaması, bir kullanıcıda oturum açmak ve Microsoft Entra Id'den Microsoft Graph için erişim belirteci almak için Java için MSAL (MSAL4J) kullanır. Erişim belirteci, kullanıcının kapsamda tanımlandığı şekilde Microsoft Graph API uç noktasına erişme yetkisine sahip olduğunu kanıtlar.
Önkoşullar
- Java 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 ,yani tek kiracı modundaki hesaplarla çalışmak istiyorsanız, kendi Microsoft Entra Id kiracınızdaki bir kullanıcı hesabı. 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.
- Herhangi bir kuruluş dizinindeki (yani çok kiracılı modda) hesaplarla çalışmak istiyorsanız, herhangi bir kuruluşun Microsoft Entra ID kiracısında bir kullanıcı hesabı. Bu örnek, kişisel bir Microsoft hesabıyla çalışmak için değiştirilmelidir. 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.
- Kişisel Microsoft hesaplarıyla çalışmak istiyorsanız kişisel bir Microsoft hesabı (örneğin, Xbox, Hotmail, Live vb.).
Öneriler
- Java / Jakarta Servlets hakkında biraz bilgi.
- 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'na up-to.
Ö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-msal-java-samples.git
cd 3-java-servlet-web-app/2-Authorization-I/call-graph
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 kaydetme
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ı kaydetme (java-servlet-webapp-call-graph)
İ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:
Ad bölümünde, uygulamanın kullanıcılarına görüntülenmesi için anlamlı bir uygulama adı girin. Örneğin,
java-servlet-webapp-call-graph.Desteklenen hesap türleri'nin altında aşağıdaki seçeneklerden birini belirleyin:
- Bu kuruluş dizinindeki Hesaplar'ı yalnızca kiracınızdaki kullanıcılar (yani tek kiracılı bir uygulama) kullanmak üzere bir uygulama oluşturuyorsanız seçin.
- Herhangi bir Microsoft Entra ID kiracısında bulunan kullanıcıların uygulamanızı (yani çok kiracılı bir uygulamayı) kullanabilmesini istiyorsanız, herhangi bir kuruluş dizinindeki Hesaplar'ı seçin.
- Microsoft kişisel hesaplarını da destekleyen çok kiracılı bir uygulama olan en geniş müşteri kümesi için herhangi bir kuruluş dizinindeki hesaplar ve kişisel Microsoft hesapları'nı seçin.
Yalnızca hotmail, Live, Skype ve Xbox hesapları gibi kişisel Microsoft hesaplarının kullanıcıları tarafından kullanılmak üzere Kişisel Microsoft hesapları'nı seçin.
Yeniden Yönlendirme URI'si bölümünde, birleşik giriş kutusunda Web'i seçin ve aşağıdaki yeniden yönlendirme URI'sini girin:
http://localhost:8080/msal4j-servlet-graph/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.
İzinler 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 öğesini seçin. Gerekirse arama kutusunu kullanın.
İzinler ekle'yi seçin.
Uygulamayı (java-servlet-webapp-call-graph) 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.
Projeyi IDE'nizde açın.
./src/main/resources/authentication.properties dosyasını açın.
dizesini
{enter-your-tenant-id-here}bulun. Mevcut değeri aşağıdaki değerlerden biriyle değiştirin:- Uygulamanızı yalnızca bu kuruluş dizinindeki Hesaplar seçeneğiyle kaydettiyseniz Microsoft Entra Id kiracı kimliğiniz.
- Uygulamanızı herhangi bir kuruluş dizinindeki Hesaplar seçeneğiyle kaydettiyseniz sözcüğü
organizations. - Uygulamanızı herhangi bir kuruluş dizinindeki Hesaplar ve kişisel Microsoft hesapları seçeneğiyle kaydettiyseniz sözcüğü
common. - Uygulamanızı Kişisel Microsoft hesapları seçeneğiyle kaydettiyseniz sözcüğü
consumers.
Dizeyi
{enter-your-client-id-here}bulun ve mevcut değeri Azure portalından kopyalanan uygulama kimliğiyle veyajava-servlet-webapp-call-graphclientIduygulamanı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-call-graphsırasında kaydettiğiniz değerle değiştirin.
Ö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
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:
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:
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 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.
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
app.homePagedağı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çinapp.homePagekullanmanızhttps://example-domain.azurewebsites.netgerekir. 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.netBu 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:
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.
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:
- 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üğme, uygulamayı ilk kez çalıştırdığınızda Oturum Aç'ı okur.
- 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 ifadesinin yer aldığından ve kullanıcı adınızı görüntülediğine dikkat edin.
- Kimlik belirtecinin çözülen taleplerinden bazılarını görmek için Kimlik Belirteci Ayrıntıları'nı seçin.
- Microsoft Graph'ın /me uç noktasına çağrı yapmak için Graph'ı Ara'yı seçin ve elde edilen kullanıcı ayrıntılarına bakın.
- Oturumu kapatmak için köşedeki düğmeyi kullanın.
Kod hakkında
Bu örnek, bir kullanıcıyı oturum açmak ve Microsoft Graph API'sine yönelik bir belirteç almak için Java için MSAL (MSAL4J) kullanır. Graph'tan veri almak için Java için Microsoft Graph SDK'sını kullanır. Maven kullanarak projelerinize bu kitaplıkları eklemeniz gerekir.
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/callgraphwebapp/ | 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 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ı. |
ConfidentialClientApplication
ConfidentialClientApplication Aşağıdaki örnekte gösterildiği gibi AuthHelper.java dosyasında bir örnek oluşturulur. Bu nesne, Microsoft Entra Id yetkilendirme URL'sini oluşturmaya ve ayrıca bir erişim belirteci için kimlik doğrulama belirtecinin değişimine 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:
Oturum açma işleminin ilk adımı, Microsoft Entra Id kiracınız için uç noktaya istek
/authorizegöndermektir. MSAL4JConfidentialClientApplicationö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: Bir derlemekAuthorizationRequestUrliç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şmelidirSCOPES: Kapsamlar , uygulama tarafından istenen izinlerdir.- Normalde, üç kapsam
openid profile offline_accesskimlik belirteci yanıtı almak için yeterlidir. - Uygulama tarafından istenen kapsamların tam listesi authentication.properties dosyasında bulunabilir. gibi
User.Readdaha fazla kapsam ekleyebilirsiniz.
- Normalde, üç kapsam
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
ConfidentialClientApplicationdaha 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.
acquireTokenBaşarılı olursa belirteç talepleri ayıklanır. Nonce denetimi geçerse, sonuçlar bir örneğinecontextIdentityContextDatayerleş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ğiniIdentityContextDataIdentityContextAdapterServletoluş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 or groups claim(s)
app.protect.authenticated=/token_details, /call_graph
Çağrı grafı
Kullanıcı adresine gittiği /call_graphzaman uygulama, oturum açmış kullanıcının erişim belirtecini IGraphServiceClient geçirerek Java Graph SDK'sından öğesinin bir örneğini oluşturur. Graph istemcisi erişim belirtecini isteklerinin Authorization üst bilgilerine yerleştirir. Uygulama daha sonra Graph istemciden şu anda oturum açmış olan kullanıcının ayrıntılarını vermek için uç noktayı çağırmasını /me ister.
Graph Hizmeti için kapsamına User.Read sahip geçerli bir erişim belirtecine zaten sahipseniz, uç noktaya erişmek için yalnızca aşağıdaki koda /me ihtiyacınız vardır:
//CallGraphServlet.java
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
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. Varsayılan olarak, uygulama kapsamlar değerini olarak User.Readayarlar. Bu özel Microsoft Graph API kapsamı, geçerli oturum açmış kullanıcının bilgilerine erişmeye yöneliktir. Bu bilgilere erişmek için graf uç noktası şeklindedir https://graph.microsoft.com/v1.0/me. Bu uç noktaya yapılan geçerli istekler üst bilgide Authorization kapsamı User.Read içeren bir access_token içermelidir.
Daha Fazla Bilgi
- Java için Microsoft Kimlik Doğrulama Kitaplığı (MSAL)
- Microsoft kimlik platformu (Geliştiriciler için Microsoft Entra Id)
- Hızlı Başlangıç: Microsoft kimlik platformu ile uygulama kaydetme
- Microsoft Entra ID uygulama onayı deneyimlerini anlama
- Kullanıcı ve yönetici onaylarını anlama
- MSAL kod örnekleri