Desktop-App, die Web-APIs aufruft: Codekonfiguration

Nachdem Sie Ihre Anwendung nun erstellt haben, erfahren Sie, wie Sie den Code mit den Koordinaten der Anwendung konfigurieren.

Microsoft-Bibliotheken zur Unterstützung von Desktop-Apps

Die folgenden Microsoft-Bibliotheken unterstützen Desktop-Apps:

Programmiersprache/Framework Projekt auf
GitHub
Paket Erste Schritte
gestartet
Anmelden von Benutzern Zugriff auf Web-APIs Allgemein verfügbar (Generally Available, GA) oder
Öffentliche Vorschau1
Electron MSAL Node.js msal-node Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Öffentliche Vorschauversion
Java MSAL4J msal4j Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Allgemein verfügbar
macOS (Swift/Obj-C) MSAL für iOS und macOS MSAL Tutorial Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Allgemein verfügbar
UWP MSAL.NET Microsoft.Identity.Client Tutorial Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Allgemein verfügbar
WPF MSAL.NET Microsoft.Identity.Client Tutorial Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Allgemein verfügbar

1Universelle Lizenzbedingungen für Onlinedienste gelten für Bibliotheken in der öffentlichen Vorschau.

Öffentliche Clientanwendung

Aus Codesicht sind Desktopanwendungen öffentliche Clientanwendungen. Die Konfiguration weicht ein wenig ab, je nachdem, ob Sie die interaktive Authentifizierung verwenden oder nicht.

Sie müssen MSAL.NET IPublicClientApplication erstellen und bearbeiten.

IPublicClientApplication

Ausschließlich durch Code

Mit dem folgenden Code wird eine öffentliche Clientanwendung instanziiert, und Benutzer werden mit einem Geschäfts-, Schul- oder Unikonto oder einem persönlichen Microsoft-Konto bei der öffentlichen Microsoft Azure-Cloud angemeldet.

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

Wenn Sie planen, wie zuvor dargestellt, die interaktive Authentifizierung oder den Gerätecodeflow zu verwenden, sollten Sie den Modifizierer .WithRedirectUri verwenden.

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

Verwenden von Konfigurationsdateien

Der folgende Code instanziiert eine öffentliche Clientanwendung über ein Konfigurationsobjekt, das programmgesteuert ausgefüllt oder aus einer Konfigurationsdatei gelesen werden kann.

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

Ausführlichere Konfiguration

Sie können die Anwendungserstellung ausführlicher gestalten, indem Sie Modifizierer hinzufügen. Wenn Sie beispielsweise möchten, dass Ihre Anwendung eine mehrinstanzenfähige Anwendung in einer nationalen Cloud (in diesem Fall US Government) ist, könnten Sie Folgendes schreiben:

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

MSAL.NET enthält außerdem einen Modifizierer für Active Directory-Verbunddienste (AD FS) 2019:

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

Wenn Sie schließlich Token für einen Azure Active Directory (Azure AD) B2C-Mandanten abrufen möchten, können Sie Ihren Mandanten wie im folgenden Codeausschnitt dargestellt angeben:

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

Weitere Informationen

So erhalten Sie weitere Informationen zur Konfiguration einer MSAL.NET-Desktopanwendung

  • Eine Liste aller bei PublicClientApplicationBuilder verfügbaren Modifizierer finden Sie in der Referenzdokumentation PublicClientApplicationBuilder.
  • Eine Beschreibung aller bei PublicClientApplicationOptions verfügbar gemachten Optionen finden Sie unter PublicClientApplicationOptions in der Referenzdokumentation.

Vollständiges Beispiel mit Konfigurationsoptionen

Stellen Sie sich eine .NET-Konsolenanwendung mit folgender appsettings.json-Konfigurationsdatei vor:

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

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

Sie verfügen über wenig Code, um diese Datei mithilfe des von .NET bereitgestellten Konfigurationsframework zu lesen:

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

Schreiben Sie nun den folgenden Code, um Ihre Anwendung zu erstellen:

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

Vor dem Aufruf der .Build()-Methode können Sie Ihre Konfiguration wie zuvor dargestellt durch Aufrufe von .WithXXX-Methoden überschreiben.

Nächste Schritte

Fahren Sie mit dem nächsten Artikel in diesem Szenario fort: Abrufen eines Tokens für die Desktop-App.