Udostępnij za pośrednictwem


Aplikacja klasyczna, która wywołuje internetowe interfejsy API: konfiguracja kodu

Po utworzeniu aplikacji dowiesz się, jak skonfigurować kod ze współrzędnymi aplikacji.

Biblioteki firmy Microsoft obsługujące aplikacje klasyczne

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

Język/struktura Projekt w dniu
GitHub
Pakiet Coraz
pracę
Logowanie użytkowników Dostęp do interfejsów API sieci Web Ogólnie dostępne (ogólna dostępność) lub
Publiczna wersja zapoznawcza1
Electron MSAL Node.js msal-node Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Publiczna wersja zapoznawcza
Java MSAL4J msal4j Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Ogólna dostępność
macOS (Swift/Obj-C) Biblioteka MSAL dla systemów iOS i macOS BIBLIOTEKA MSAL Samouczek Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Ogólna dostępność
Platforma UWP MSAL.NET Microsoft.Identity.Client Samouczek Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Ogólna dostępność
WPF MSAL.NET Microsoft.Identity.Client Samouczek Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. 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 klasyczne 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ć programowo lub odczytać z pliku konfiguracji.

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

Bardziej rozbudowana konfiguracja

Kompilowanie aplikacji można utworzyć, 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:

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 przy użyciu elementu . Platforma konfiguracji zapewniana przez platformę NET:

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 klasycznej.