Web API'lerini çağıran masaüstü uygulaması: Kod yapılandırması

Şunlar için geçerlidir: Aşağıdaki içeriğin iş gücü kiracıları için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. İş gücü kiracıları (daha fazla bilgi edinin)

Bu makale, kodu uygulamanın koordinatlarıyla yapılandırmanıza yardımcı olacak yönergeler içerir.

Önkoşullar

  • Microsoft Entra yönetim merkezine, yalnızca bu kuruluş dizinindeki Hesaplar için yapılandırılmış yeni bir uygulama kaydedin. Daha fazla bilgi için Bir uygulamayı kaydetme bölümüne bakın. Daha sonra kullanmak üzere uygulamaya Genel Bakış sayfasından aşağıdaki değerleri kaydedin:
    • Uygulama (istemci) kimliği
    • Dizin (kullanıcı) kimliği

Platform yeniden yönlendirme URI'si ekleyin

Uygulama kaydınıza uygulama türünüzü belirtmek için şu adımları izleyin:

  1. Yönet'in altında Kimlik Doğrulaması>Platform> ekleMobil ve masaüstü uygulamaları'yı seçin
  2. Kullandığınız kimlik doğrulama yöntemine bağlı olarak aşağıdaki seçeneklerden birini belirleyin:
    • Katıştırılmış tarayıcıları kullanan uygulamalar için tam değeri kullanın: https://login.microsoftonline.com/common/oauth2/nativeclient
    • Sistem tarayıcılarını kullanan uygulamalar için tam değeri kullanın: http://localhost
    • macOS için Objective-C veya Swift uygulamaları: msauth.<your.app.bundle.id>://auth.
    • Node.js Electron uygulamaları: msal{Your_Application/Client_Id}://auth

Uyarı

Web Authentication Manager (WAM) uygulamaları için MSAL'de yeniden yönlendirme URI'sine gerek yoktur.

Genel istemci akışını etkinleştirme

Cihaz kodu akışını, tümleşik Windows kimlik doğrulamasını ve daemon uygulamalarında kullanılan ve hiçbiri yeniden yönlendirme URI'sini gerektirmeyen bir istemci kimlik bilgisi akışı kullanarak gizli bir istemci uygulamasından kullanıcı adı ve parolayı ayırt etmek için, bunu genel istemci uygulaması olarak yapılandırın. Bu yapılandırmayı sağlamak için

Uygulamanızı genel istemci olarak tanımlamak için şu adımları izleyin:

  1. Yönet'in altında Kimlik Doğrulama'yı seçin.

  2. Gelişmiş ayarlar'ın altında Genel istemci akışlarına izin ver için Evet'i seçin.

  3. Yaptığınız değişiklikleri kaydetmek için Kaydet'i seçin.

Masaüstü uygulamalarını destekleyen Microsoft kitaplıkları

Aşağıdaki Microsoft kitaplıkları masaüstü uygulamalarını destekler:

Dil / çerçeve Proje devam ediyor
GitHub (İngilizce)
Paket Alma
başladı
Oturum açan kullanıcılar Web API'lerine erişme Genel kullanıma açık (GA) veya
Genel önizleme1
Elektron MSAL Node.js msal-node Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyebilir. Kütüphane, korumalı web API'leri için erişim jetonları isteyebilir. Genel önizleme
Java MSAL4J msal4j Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyebilir. Kütüphane, korumalı web API'leri için erişim jetonları isteyebilir. Georgia
macOS (Swift/Obj-C) iOS ve macOS için MSAL MSAL Eğitim Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyebilir. Kütüphane, korumalı web API'leri için erişim jetonları isteyebilir. Georgia
Evrensel Windows Platformu (UWP) MSAL.NET Microsoft.Identity.Client Eğitim Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyebilir. Kütüphane, korumalı web API'leri için erişim jetonları isteyebilir. Georgia
WPF (Windows Presentation Foundation) MSAL.NET Microsoft.Identity.Client Eğitim Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyebilir. Kütüphane, korumalı web API'leri için erişim jetonları isteyebilir. Georgia

1Çevrimiçi Hizmetler için Evrensel Lisans Koşulları, Genel önizlemedeki kitaplıklar için geçerlidir.

Genel istemci uygulaması

Kod açısından bakıldığında masaüstü uygulamaları genel istemci uygulamalarıdır. Yapılandırma, etkileşimli kimlik doğrulaması kullanıp kullanmamanıza bağlı olarak biraz farklı olacaktır.

MSAL.NET IPublicClientApplicationoluşturmanız ve işlemeniz gerekir.

IPublicClientApplication

Yalnızca koda göre

Aşağıdaki kod bir genel istemci uygulamasının örneğini oluşturur ve Microsoft Azure genel bulutundaki kullanıcıları bir iş veya okul hesabı ya da kişisel bir Microsoft hesabıyla oturum açar.

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
    .Build();

Daha önce görüldüğü gibi etkileşimli kimlik doğrulaması veya cihaz kodu akışı kullanmayı planlıyorsanız değiştiriciyi .WithRedirectUri kullanın.

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .Build();

Yapılandırma dosyalarını kullanma

Aşağıdaki kod, program aracılığıyla doldurulabilen veya bir yapılandırma dosyasından okunabilen bir yapılandırma nesnesinden bir genel istemci uygulamasının örneğini oluşturur.

PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
        .WithDefaultRedirectUri()
        .Build();

Daha ayrıntılı yapılandırma

Bir dizi değiştirici ekleyerek uygulama derlemesini ayrıntılı bir şekilde inceleyebilirsiniz. Örneğin, uygulamanızın burada gösterilen ABD Kamu gibi ulusal bir bulutta çok kiracılı bir uygulama olmasını istiyorsanız şunları yazabilirsiniz:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
                         AadAuthorityAudience.AzureAdMultipleOrgs)
        .Build();

MSAL.NET ayrıca Active Directory Federasyon Hizmetleri (AD FS) 2019 için bir değiştirici içerir:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithAdfsAuthority("https://consoso.com/adfs")
        .Build();

Son olarak, bir Azure Active Directory (Azure AD) B2C kiracısı için belirteç almak istiyorsanız, kiracınızı aşağıdaki kod parçacığında gösterildiği gibi belirtin:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
        .Build();

Daha fazla bilgi edinin

MSAL.NET masaüstü uygulamasını yapılandırma hakkında daha fazla bilgi edinmek için:

  • üzerinde PublicClientApplicationBuilderkullanılabilen tüm değiştiricilerin listesi için PublicClientApplicationBuilder başvuru belgelerine bakın.
  • içinde kullanıma sunulan tüm seçeneklerin açıklaması için, başvuru belgelerindeki PublicClientApplicationOptionsPublicClientApplicationOptions bölümüne bakın.

Yapılandırma seçenekleriyle tam örnek

Aşağıdaki appsettings.json yapılandırma dosyasına sahip bir .NET konsol uygulaması düşünün:

{
  "Authentication": {
    "AzureCloudInstance": "AzurePublic",
    "AadAuthorityAudience": "AzureAdMultipleOrgs",
    "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
  },

  "WebAPI": {
    "MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
  }
}

.NET'in sağladığı yapılandırma çerçevesini kullanarak, bu dosyada okumak için çok az kodunuz var.

public class SampleConfiguration
{
 /// <summary>
 /// Authentication options
 /// </summary>
 public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }

 /// <summary>
 /// Base URL for Microsoft Graph (it varies depending on whether the application runs
 /// in Microsoft Azure public clouds or national or sovereign clouds)
 /// </summary>
 public string MicrosoftGraphBaseEndpoint { get; set; }

 /// <summary>
 /// Reads the configuration from a JSON file
 /// </summary>
 /// <param name="path">Path to the configuration json file</param>
 /// <returns>SampleConfiguration as read from the json file</returns>
 public static SampleConfiguration ReadFromJsonFile(string path)
 {
  // .NET configuration
  IConfigurationRoot Configuration;
  var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(path);
  Configuration = builder.Build();

  // Read the auth and graph endpoint configuration
  SampleConfiguration config = new SampleConfiguration()
  {
   PublicClientApplicationOptions = new PublicClientApplicationOptions()
  };
  Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
  config.MicrosoftGraphBaseEndpoint =
  Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
  return config;
 }
}

Şimdi uygulamanızı oluşturmak için aşağıdaki kodu yazın:

SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
           .WithDefaultRedirectUri()
           .Build();

yöntemine .Build() yapılan çağrıdan önce, daha önce görüldüğü gibi yöntemlere .WithXXX yapılan çağrılarla yapılandırmanızı geçersiz kılabilirsiniz.

Sonraki adımlar

Bu senaryoda masaüstü uygulaması için belirteç alma adlı sonraki makaleye geçin.