Microsoft Graph isteğini yorumlama

Tamamlandı

Bu kılavuzda, Java bir web uygulamasının Microsoft Graph oturum açmış kullanıcının profilini nasıl okuyabileceği açıklanmaktadır. Aşağıdaki istek, Java kod parçası ve yanıt, açıklamalı ve örnek niteliğinde içeriklerdir; bir laboratuvar çalışması veya gerçek bir API isteği gönderme gerekliliği değildir.

Referans servlet örneği devredilmiş User.Read kullanır. aad.scopes yapılandırma özelliği, kimlik doğrulama kodunun oturum açma sırasında istediği bu değeri Config.SCOPES öğesine sağlar.

Uygulama kaydının API izinleri listesinde yapılandırılmış izinler açıklanır. Aşağıdaki ekran görüntüsü, bir kaydı değiştirme yönergesi değil, bu görünümün bir örneğidir.

Uygulama kaydı için API izinleri sayfasının ekran görüntüsü.

Yetkilendirme bağlamını açıklayan üç olgu:

  • Kod, Microsoft Graph için devredilmiş User.Read izinlerini ister.
  • Onay, kiracı ilkesine ve mevcut izinlere bağlı olarak kullanıcıdan veya yetkili bir yöneticiden gelebilir.
  • Kayda izin eklemek, onay vermez veya kodun istenen kapsamlarını değiştirmez.

Örnek, oturum açma sırasında bu izni istediğinden, her Graph isteğinin bir onay istemi görüntülediği ayrı bir varsayım yoktur.

HTTP isteğini okuma

Aşağıdaki HTTP örneği, profil isteğinin temel bölümlerini gösterir. <graph-access-token>, bir araçta almak veya yapıştırmak için kullanılan bir belirteç değil, açıklayıcı bir yer tutucudur.

GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>

İstek, https://graph.microsoft.com/v1.0/me öğesine ulaşmak için HTTPS kullanır. /me , oturum açmış kullanıcıyı temsilci bağlamında tanımlar. Authorization üst bilgisi, Microsoft Graph'e yönelik bir erişim belirteci taşır; uygulamanın kimlik belirtecini, yetkilendirme kodunu veya istemci gizli dizisini taşımaz.

User.Read, oturum açmış kullanıcının profilini okumaya yönelik gösterilen işlem için yeterlidir. Diğer kullanıcıların bilgilerine rastgele erişim yetkisi vermez. Get a user API başvurusu uç noktayı ve izinleri açıklar.

Java SDK eşdeğerini okuyun

Geçmiş örneğinin CallGraphServlet yolu kendi /call_graph yolunu işler ve API isteğinde bulunmak için Microsoft Graph SDK'sını kullanır. Aşağıdaki kod parçası, belirteç alma işlemi başarıyla tamamlandıktan sonra yapılan çağrıyı göstermektedir.

User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();

GraphHelper, yerleşik bir MSAL4J API'si değil, örnek tarafından tanımlanan bir yardımcıdır. Kimlik doğrulama sağlayıcısı, örneğin kimliği doğrulanmış bağlamından oturum açmış kullanıcının Graph erişim belirtecini sağlayan bir GraphServiceClient oluşturur. contextAdapter geçerli isteği bu uygulama bağlamı ile bağlar.

Bu SDK sürümünde, me() oturum açmış kullanıcı uç noktasını seçer, buildRequest() isteği oluşturur ve get() gönderir ve yanıtı bir Microsoft Graph User modeline seri durumdan çıkartır. Kod parçası, ilgili servleti, import ifadelerini, oturum yönetimini ve hata işlemeyi içermez; bu nedenle tam bir uygulama değildir.

Note

Bu parça, Java 5.5.0 söz dizimi için geçmiş örneğin Microsoft Graph SDK'sını yansıtır. v6 SDK'sı istek düzenini, istemci derlemesini, kimlik doğrulama tümleştirmesini ve model erişimini değiştirir. Microsoft Graph Java SDK v6 yükseltme kılavuzunda bu farklar açıklanmaktadır. Yalnızca v6’ya özgü bir istek ifadesi, örnekteki v5 bağımlılığı ve yardımcı kodla uyumlu değildir.

Bir açıklayıcı yanıtı yorumlama

Kısaltılmış bir örnek yanıt aşağıdaki profil alanlarını içerebilir. Değerler kurgusaldır ve öğrencilerin yeniden oluşturması gereken çıkışlar değildir.

{
  "displayName": "Avery Rivera",
  "jobTitle": "Service specialist",
  "mail": "avery@example.com"
}

Uygulama, profil bilgilerini sunmak için bu alanları kullanabilir. Gerçek değerler kullanıcının dizin profiline bağlıdır ve alanlar eksik veya null olabilir. Profil alanı, çalışma kanıtı veya uygulamanın yetkilendirme ilkesinin yerine geçmez.

Sorumlulukların genel olarak bölünmesi önemlidir: Microsoft Entra ID geçerli izin ve onay kuralları altında bir belirteç verir, MSAL4J bu belirteci alır ve Graph SDK'sı veya HTTP istemcisi bunu veri istemek için kullanır. Yalnızca bir Graph istemcisi oluşturmak erişim izni vermez.