Microsoft Kimlik Doğrulama Kitaplığı ile API'lere erişimi yetkilendirme

Tamamlandı

Artık şirketinizin kullanıcılarını web uygulamasında oturum açabilirsiniz. Ardından, sayfada çalışan profilinden iş unvanı, iş e-postası vb. gibi bilgileri görüntülemek istiyorsunuz. Microsoft Graph API'sinin kullanıcıyla ilgili verilere erişim sağladığını fark edebilirsiniz.

Bu ünitede MSAL'nin Microsoft Graph API'si gibi Microsoft hizmetleri yetkilendirilmiş erişim elde etmeye nasıl yardımcı olabileceğini öğreneceksiniz.

API izinleri ve kapsamları

Microsoft Entra Id ile güvenliği sağlanan web hizmetleri, API işlevselliğine ve hizmetin kullanıma sunduğu verilere erişim sağlayan bir izin kümesi tanımlar. Bir uygulama, kullanıcılardan ve yöneticilerden bu izinleri isteyebilir. Bu izinler, uygulamanın verilere erişebilmesi veya kullanıcı adına işlem yapması için isteği onaylaması gerekir. Örnek olarak, Microsoft Graph'ın aşağıdaki görevleri yerine getirmek için diğerlerinin yanı sıra tanımlanmış izinleri vardır:

  • Kullanıcının takvimini okuma
  • Kullanıcının takvimine yazma
  • Postayı kullanıcı olarak gönderme

Kullanıcılar ve yöneticiler uygulamanın hangi verilere erişebileceğini denetlemek ve bilmek için alıştırma yapabilir. Uygulamanızın Microsoft tarafından güvenliği sağlanan bir API'ye erişebilmesi için önce eylemleri gerçekleştirmek için uygulama izinlerini sağlamanız gerekir.

Microsoft Entra Id iki tür izni destekler: temsilci izinleri ve uygulama izinleri.

  • Temsilci izinleri oturum açmış bir kullanıcının bulunduğu uygulamalar tarafından kullanılır. Bu uygulamalarda, uygulamanın istediği izinleri kullanıcı veya yönetici onaylar. Uygulama, hedef API'ye çağrı yaptığında oturum açmış kullanıcı olarak davranma iznine sahiptir. Bazı yüksek ayrıcalıklı izinler yönetici onayı gerektirir.

  • Uygulama izinleri , oturum açmış bir kullanıcı olmadan çalışan uygulamalar tarafından kullanılır; örneğin, arka plan hizmetleri veya daemon'lar olarak çalışan uygulamalar. Uygulama izinlerini yalnızca yönetici onaylayabilir.

Bu API izinlerini Azure portalından uygulama kaydınıza atayabilirsiniz.

Kapsamlar

Microsoft Entra ID, bir uygulamanın bir kullanıcı adına web'de barındırılan kaynaklara erişebildiği OAuth 2.0 yetkilendirme protokollerini uygular.

OAuth 2.0'da bu tür izin kümeleri kapsam olarak adlandırılır. Microsoft Entra Id'ye yetkilendirme isteğinde bulunurken, bir uygulama isteğin sorgu parametresinde izni belirterek gereken izinleri istemektedir scope . Örneğin kapsam değeri https://graph.microsoft.com/Calendars.Read , Microsoft Graph'ta kullanıcının takvimlerini okuma izni istemek için kullanılır.

MSAL ile erişim belirteçleri alma

Erişim belirteçleri , istemci uygulamalarının Microsoft Entra Id ile korunan web API'lerini güvenli bir şekilde çağırmasını sağlar. Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanarak erişim belirteci almanın çeşitli yolları vardır. Genel olarak, belirteç almak için kullanılan yöntem, uygulamanın masaüstü veya mobil uygulama gibi genel bir istemci uygulaması mı yoksa web uygulaması, web API'si veya daemon uygulaması gibi gizli bir istemci uygulaması mı olduğuna bağlıdır.

MSAL'nin belirteç alma yöntemlerinden birkaçı, istenen izinleri ve istenen kaynakları bildiren dizelerin listesi olan bir scopes parametre gerektirir.

MSAL bir belirteci alındıktan sonra önbelleğe alır. OpenID Bağlan yetkilendirme kodu akışını kullanan Web uygulamaları için, denetleyicilerde önerilen desen şu şekildedir:

  • İlk olarak başka yollarla belirteç almayı denemeden önce önbellekten sessizce bir belirteç almayı deneyin:

    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();
    
  • Önbellekte belirteç yoksa ve sessiz belirteç isteği belirteç alamazsa yetkilendirme kodu akışını kullanarak belirteci alabilirsiniz:

    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                        .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                        .build();
    
    final IAuthenticationResult result = app.acquireToken(authParams).get();
    

MSAL ayrıca bir belirteci süresi dolmaya yaklaştığında (belirteç önbelleği de yenileme belirteci içerdiğinden) yenileyebilir.

Kimlik doğrulama sonuçları

İstemciniz bir erişim belirteci istediğinde Microsoft Entra Id, erişim belirteciyle ilgili meta verileri içeren bir kimlik doğrulama sonucu da döndürür. Bu veriler, uygulamanızın erişim belirtecinin kendisini ayrıştırmak zorunda kalmadan erişim belirteçlerinin akıllı önbelleğe alınmasını sağlar. AuthenticationResult MSAL dönüşleri aşağıdakileri kullanıma sunar:

  • Web API'sinin erişim belirteci.
  • Kullanıcının kimlik belirteci (JWT).
  • Belirtecin süresinin dolmasına ilişkin tarih/saati belirten belirteç süre sonu.
  • Kiracı kimliği, kullanıcının bulunduğu kiracıyı içerir.
  • Belirtecin verildiği kapsamlar.
  • Kullanıcının benzersiz kimliği.

Microsoft Graph'a giriş

Microsoft Graph API'si, https://graph.microsoft.comMicrosoft bulutunda zengin, insan odaklı verilere ve içgörülere erişim sağlamak için tek bir uç nokta () sunar. Uç noktaya erişmek ve Microsoft 365 senaryolarını destekleyen, üretkenlik, işbirliği, eğitim, kişiler ve iş yeri zekası gibi çok daha fazlasını kapsayan uygulamalar oluşturmak için REST API'leri veya SDK'ları kullanabilirsiniz. Microsoft Graph ayrıca kullanıcı ve cihaz kimliğini yöneten güçlü bir hizmet kümesi içerir.

Örneğin, uç noktaya erişerek https://graph.microsoft.com/v1.0/me oturum açmış bir kullanıcının özelliklerini okuyabilirsiniz.