Desktopová aplikace, která volá webová rozhraní API: Konfigurace kódu

Teď, když jste vytvořili aplikaci, se dozvíte, jak nakonfigurovat kód pomocí souřadnic aplikace.

Knihovny Microsoftu podporující desktopové aplikace

Následující knihovny Microsoftu podporují desktopové aplikace:

Jazyk / architektura Project on
GitHubu
Balíček Dostat
z těchto možností
Přihlášení uživatelů Přístup k webovým rozhraním API Obecná dostupnost (GA) nebo
Public Preview1
Electron MSAL Node.js msal-node Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Verze Public Preview
Java MSAL4J msal4j Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
macOS (Swift/Obj-C) MSAL pro iOS a macOS MSAL Kurz Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
UWP MSAL.NET Microsoft.Identity.Client Kurz Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
WPF MSAL.NET Microsoft.Identity.Client Kurz Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA

1Univerzální licenční podmínky pro online služby se vztahují na knihovny ve verzi Public Preview.

Veřejná klientská aplikace

Z pohledu kódu jsou desktopové aplikace veřejnými klientskými aplikacemi. Konfigurace se bude trochu lišit podle toho, jestli používáte interaktivní ověřování, nebo ne.

Budete muset vytvořit a manipulovat s MSAL.NET IPublicClientApplication.

IPublicClientApplication

Výhradně kódem

Následující kód vytvoří instanci veřejné klientské aplikace a přihlásí uživatele ve veřejném cloudu Microsoft Azure pomocí pracovního nebo školního účtu nebo osobního účtu Microsoft.

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

Pokud máte v úmyslu .WithRedirectUri používat interaktivní ověřování nebo tok kódu zařízení, jak je vidět dříve, použijte modifikátor.

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

Použití konfiguračních souborů

Následující kód vytvoří instanci veřejné klientské aplikace z objektu konfigurace, který lze vyplnit programově nebo číst z konfiguračního souboru.

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

Složitější konfigurace

Sestavení aplikace můžete propracovat přidáním několika modifikátorů. Pokud například chcete, aby vaše aplikace byla víceklientskou aplikací v národním cloudu, jako je například zde zobrazená státní správa USA, můžete napsat:

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

MSAL.NET obsahuje také modifikátor pro Active Directory Federation Services (AD FS) 2019:

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

Pokud chcete získat tokeny pro tenanta Azure Active Directory (Azure AD) B2C, zadejte tenanta, jak je znázorněno v následujícím fragmentu kódu:

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

Další informace

Další informace o tom, jak nakonfigurovat desktopovou aplikaci MSAL.NET:

Kompletní příklad s možnostmi konfigurace

Představte si konzolovou aplikaci .NET, která má následující appsettings.json konfigurační soubor:

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

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

V tomto souboru máte malý kód ke čtení pomocí souboru . Architektura konfigurace poskytovaná technologií 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;
 }
}

Teď, když chcete vytvořit aplikaci, napište následující kód:

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

Před voláním .Build() metody můžete přepsat konfiguraci voláním .WithXXX metod, jak jsme viděli dříve.

Další kroky

Přejděte k dalšímu článku v tomto scénáři a získejte token pro desktopovou aplikaci.