Udostępnij przez


Aplikacja komputerowa, która wywołuje interfejsy API sieciowe: konfiguracja kodu

Dotyczy: Zielony okrąg z białym symbolem znacznika wyboru, który wskazuje następującą zawartość dotyczy dzierżawców pracowników. Dzierżawcy pracowników (dowiedz się więcej)

Ten artykuł zawiera instrukcje ułatwiające skonfigurowanie kodu ze współrzędnymi aplikacji.

Wymagania wstępne

  • Zarejestruj nową aplikację w centrum administracyjnym usługi Microsoft Entra, skonfigurowaną tylko dla kont w tym katalogu organizacyjnym. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji . Zapisz następujące wartości na stronie Przegląd aplikacji do późniejszego użycia:
    • Identyfikator aplikacji (klienta)
    • Identyfikator katalogu (klienta)

Dodaj identyfikator URI przekierowania platformy

Aby określić typ aplikacji do rejestracji aplikacji, wykonaj następujące kroki:

  1. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie>Dodaj platformę>Aplikacje mobilne i klasyczne
  2. W zależności od używanej metody uwierzytelniania wybierz jedną z następujących opcji:
    • W przypadku aplikacji korzystających z przeglądarek osadzonych użyj dokładnej wartości: https://login.microsoftonline.com/common/oauth2/nativeclient
    • W przypadku aplikacji korzystających z przeglądarek systemowych użyj dokładnej wartości: http://localhost
    • Objective-C lub aplikacje Swift dla systemu macOS: msauth.<your.app.bundle.id>://auth.
    • aplikacje Node.js Electron: msal{Your_Application/Client_Id}://auth

Uwaga / Notatka

W przypadku aplikacji Menedżera uwierzytelniania sieci Web (WAM) w usłudze MSAL nie jest wymagany identyfikator URI przekierowania.

Włącz publiczny przepływ klienta

Aby odróżnić przepływ kodu urządzenia, zintegrowane uwierzytelnianie systemu Windows oraz nazwę użytkownika i hasło z poufnej aplikacji klienckiej przy użyciu przepływu poświadczeń klienta używanego w aplikacjach demona, z których żaden nie wymaga identyfikatora URI przekierowania, skonfiguruj go jako publiczną aplikację kliencką. Aby osiągnąć tę konfigurację

Aby zidentyfikować aplikację jako klienta publicznego, wykonaj następujące kroki:

  1. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.

  2. W Ustawieniach Zaawansowanych dla opcji Zezwalaj na przepływy klientów publicznych wybierz opcję Tak.

  3. Wybierz Zapisz, aby zapisać zmiany.

Biblioteki firmy Microsoft obsługujące aplikacje desktopowe

Następujące biblioteki firmy Microsoft obsługują aplikacje klasyczne:

Język/struktura Projekt dotyczący
GitHub
Pakiet Uzyskiwanie
rozpoczęto
Logowanie użytkowników Dostęp do interfejsów API sieci Web Ogólnie dostępne (ogólna dostępność) lub
Publiczna wersja zapoznawcza1
Elektron Node.jsBIBLIOTEKI MSAL msal-node Biblioteka może żądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. Publiczna wersja zapoznawcza
Java MSAL4J msal4j Biblioteka może żądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. ogólna dostępność
macOS (Swift/Obj-C) MSAL dla iOS i macOS MSAL Samouczek Biblioteka może żądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. ogólna dostępność
platforma UWP MSAL.NET Microsoft.Identity.Client Samouczek Biblioteka może żądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. ogólna dostępność
WPF MSAL.NET Microsoft.Identity.Client Samouczek Biblioteka może żądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. ogólna dostępność

1Uniwersalne postanowienia licencyjne dotyczące usług online mają zastosowanie do bibliotek w publicznej wersji zapoznawczej.

Publiczna aplikacja kliencka

Z punktu widzenia kodu aplikacje desktopowe to publiczne aplikacje klienckie. Konfiguracja będzie nieco inna w zależności od tego, czy używasz uwierzytelniania interakcyjnego, czy nie.

Musisz skompilować i manipulować MSAL.NET IPublicClientApplication.

IPublicClientApplication

Wyłącznie według kodu

Poniższy kod tworzy wystąpienie publicznej aplikacji klienckiej i loguje użytkowników w chmurze publicznej platformy Microsoft Azure przy użyciu konta służbowego lub osobistego konta Microsoft.

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

Jeśli zamierzasz używać uwierzytelniania interakcyjnego lub przepływu kodu urządzenia, jak pokazano wcześniej, użyj .WithRedirectUri modyfikatora.

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

Korzystanie z plików konfiguracji

Poniższy kod tworzy wystąpienie publicznej aplikacji klienckiej z obiektu konfiguracji, który można wypełnić za pomocą programu lub odczytać z pliku konfiguracji.

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

Bardziej rozbudowana konfiguracja

Można rozbudować proces tworzenia aplikacji, dodając szereg modyfikatorów. Jeśli na przykład aplikacja ma być aplikacją wielodostępną w chmurze krajowej, taką jak pokazano tutaj dla instytucji rządowych USA, możesz napisać:

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

MSAL.NET zawiera również modyfikator usług Active Directory Federation Services 2019:

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

Jeśli na koniec chcesz uzyskać tokeny dla dzierżawy usługi Azure Active Directory (Azure AD) B2C, określ dzierżawę, jak pokazano w poniższym fragmencie kodu:

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

Dowiedz się więcej

Aby dowiedzieć się więcej na temat konfigurowania aplikacji klasycznej MSAL.NET:

  • Aby uzyskać listę wszystkich modyfikatorów dostępnych w PublicClientApplicationBuilder, zobacz dokumentację referencyjną PublicClientApplicationBuilder.
  • Opis wszystkich opcji uwidocznionych w PublicClientApplicationOptions znajdziesz w temacie PublicClientApplicationOptions w dokumentacji referencyjnej.

Kompletny przykład z opcjami konfiguracji

Wyobraź sobie aplikację konsolową platformy .NET, która ma następujący appsettings.json plik konfiguracji:

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

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

W tym pliku jest mało kodu do odczytania, korzystając z dostarczonego przez .NET frameworka konfiguracyjnego.

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;
 }
}

Teraz, aby utworzyć aplikację, napisz następujący kod:

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

Przed wywołaniem .Build() metody można zastąpić konfigurację wywołaniami .WithXXX metod, jak pokazano wcześniej.

Następne kroki

Przejdź do następnego artykułu w tym scenariuszu, Uzyskaj token dla aplikacji desktopowej.