API yetkilendirmesini ve belirteç önbelleğe almayı anlama

Tamamlandı

Şirket portalının tasarımı, Microsoft Graph oturum açmış kullanıcının profilini okumayı içerir. Kimlik doğrulaması kullanıcıyı portalda tanımlar, ancak api çağrısının da uygun izinlere sahip bir erişim belirteci olması gerekir.

Bu ünitede izin türleri, kapsamlar ve açıklayıcı MSAL4J belirteç önbelleği deseni açıklanmaktadır. Bir uygulamanın veya oturum açma oturumlarının çalıştığını varsaymaz.

API izinleri ve kapsamları

Korumalı API, işlevselliği ve verileri için izinleri tanımlar. örneğin Microsoft Graph, profil okuma, takvim okuma ve posta gönderme için farklı izinlere sahiptir. Bir uygulama yalnızca hedeflenen işlemi için gereken izinleri istemektedir.

Microsoft Entra ID iki izin türünü destekler:

İzin türü Context İzin
Temsilcili izinler Uygulama, oturum açmış bir kullanıcı adına hareket eder. Erişim, verilen izinler ve kullanıcının erişimiyle kısıtlanır. Kullanıcı veya yetkili yönetici, izin ve kiracı ilkesine bağlı olarak onay verebilir.
UYGULAMA İZİNLERİ Uygulama, arka plan hizmeti gibi oturum açmış bir kullanıcı olmadan kendisi gibi davranır. Yönetici onayı gereklidir.

Portal, oturum açmış kullanıcının profilini okumak için temsilcili User.Read kullanır. Bu izin, her kullanıcının verilerine veya takvimler gibi ilişkisiz kaynaklara erişim izni vermez.

Kapsamlar istenen erişimi açıklar

Temsilcili yetkilendirme isteğinde, OAuth 2.0 kapsamları uygulama isteklerinin izinlerini ifade eder. Kapsam hem kaynağı hem de izni tanımlayabilir; örneğin, https://graph.microsoft.com/Calendars.Read Microsoft Graph için takvim okuma izni isteyebilir.

Örneklerde tek kapsam User.Readkullanılır. Microsoft Graph kapsamları için kaynak tanımlayıcısı atlanabilir; bu, https://graph.microsoft.com/User.Read anlamına gelir. Daha fazla bilgi için bkz . Kapsamlar ve izinler.

Yapılandırılmış API izinleri, istenen kapsamlar ve onay ayrıdır. Uygulama kaydına API izni eklemek, onay vermez veya uygulamanın kodu tarafından istenen kapsamları değiştirmez.

Erişim belirteci API'sine özgüdür

Erişim belirteci belirli bir kaynağa yöneliktir. Microsoft Graph belirteci başka bir API'nin belirteci ile değiştirilemez ve kimlik belirteci API erişim belirtecinin yerini almaz.

MSAL4J belirteçleri edinir ve önbellekte saklar. Uygulama, belirteci oturum açmış kullanıcının kimliği hakkında varsayımlarda bulunmak veya onu yeniden kullanılabilir bir yetkilendirme kodu olarak ele almak için ayrıştırmak yerine, amaçlanan kaynak için kullanır.

Örnek sessiz belirteç edinimi

Daha sonraki isteklerde, bir web uygulaması kullanıcıyı yeniden oturum açma etkileşimine yönlendirmeden MSAL'dan belirteç isteyebilir. Aşağıdaki parça, referans örneğinin AuthHelper bölümünden uyarlanmıştır. Oturumla ilişkili önbelleğin geri yüklenmesini ve bu bağlamda halihazırda temsil edilen bir hesap için belirteç istenmesini gösterir.

final SilentParameters parameters = SilentParameters
                                        .builder(Collections.singleton(Config.SCOPES), context.getAccount())
                                        .build();

final ConfidentialClientApplication client = getConfidentialClientInstance();
client.tokenCache().deserialize(context.getTokenCache());

final IAuthenticationResult result = client.acquireTokenSilently(parameters).get();

SilentParameters istenen kapsamı ve hesabı tanımlar. Bu örnekte, Config.SCOPES öğesi User.Read öğesini içerir ve context, kimliği doğrulanmış oturumla ilişkili hesabı ve serileştirilmiş önbelleği sağlar. Bunlar, öğrencilerin alması gereken değerler değil örnek uygulama yardımcılarıdır.

Önbellek geri yüklendikten sonra, acquireTokenSilently kullanıcı etkileşimi olmadan isteği karşılamaya çalışır. Kullanılabilir bir önbelleğe alınmış erişim belirteci döndürebilir veya uygun olduğunda önbelleğe alınmış yenileme belirteci kullanabilir. "Sessiz", ağ isteğinin gerçekleşmediği anlamına gelmez.

Bu parça, çevresindeki önbellek kalıcılığını ve özel durum işlemeyi atlar. MSAL kullanıcı etkileşiminin gerekli olduğunu belirtirse, web uygulaması yeni bir yetkilendirme isteği başlatır ve sonuçta elde edilen geri çağırmayı işler. Eski yetkilendirme kodunu yeniden kullanmaz. Ağ veya yapılandırma hataları gibi diğer hatalar, koşulsuz oturum açma döngüsü yerine uygun hata işlemeye ihtiyaç duyar.

Belirteç önbelleği ve oturum verileri hassas bilgiler içerir. Tam bir uygulamanın bu verileri koruması, doğru hesap ve oturumla ilişkilendirmesi ve önbellek değişikliklerini uygun şekilde kalıcı hale alması gerekir.

API çağrısından önce sonucu yorumlama

Belirtecin başarıyla alınması sonucunda, erişim belirtecini ve geçerlilik süresi ile hesap bağlamına ilişkin bilgileri içeren bir IAuthenticationResult elde edilir. Microsoft Graph isteği için uygulama, Graph erişim belirtecini HTTP istemcisine veya Graph kimlik doğrulama sağlayıcısına sağlar.

MSAL4J yalnızca bu belirteci alarak kullanıcının profilini okumaz. Ayrı API isteği, veri işlemini gerçekleştirir.

Microsoft Graph kaynağı sağlar

Microsoft Graph aracılığıyla https://graph.microsoft.comMicrosoft bulut verilerini ve hizmetlerini kullanıma sunar. /v1.0/me uç noktası, oturum açmış kullanıcıyı temsil eder ve devredilmiş kullanıcı bağlamı gerektirir.

Sonraki ünitede, Java Graph SDK'sı aracılığıyla ilgili uç noktaya yönelik bir örnek isteği ve eşdeğer isteği inceler. Microsoft Graph genel bakış, daha geniş API'yi açıklar.