Freigeben über


Desktop-App, die Web-APIs aufruft: Codekonfiguration

Gilt für: Grüner Kreis mit einem weißen Häkchensymbol, das angibt, dass der folgende Inhalt für Mitarbeiter(-)Mandanten gilt. Mitarbeiter(-)Mandanten (weitere Informationen)

Dieser Artikel enthält Anweisungen zum Konfigurieren des Codes mit den Koordinaten der Anwendung.

Voraussetzungen

  • Registrieren Sie eine neue App im Microsoft Entra Admin Center, die nur für Konten in diesem Organisationsverzeichnis konfiguriert ist. Weitere Informationen finden Sie unter Registrieren einer Anwendung . Notieren Sie die folgenden Werte auf der Anwendungsübersichtsseite für die spätere Verwendung:
    • Anwendungs-ID (Client)
    • Verzeichnis-ID (Mandant)

Eine Umleitungs-URI für die Plattform hinzufügen

Führen Sie die folgenden Schritte aus, um ihren App-Typ für ihre App-Registrierung anzugeben:

  1. Wählen Sie unter Verwalten die Option Authentifizierung>Plattform hinzufügen>Mobile und Desktopanwendungen aus.
  2. Wählen Sie abhängig von der verwendeten Authentifizierungsmethode eine der folgenden Optionen aus:
    • Verwenden Sie für Apps mit eingebetteten Browsern den genauen Wert: https://login.microsoftonline.com/common/oauth2/nativeclient
    • Verwenden Sie für Apps mit Systembrowsern den genauen Wert: http://localhost
    • Objective-C- oder Swift-Apps für macOS: msauth.<your.app.bundle.id>://auth.
    • Node.js Electron-Apps: msal{Your_Application/Client_Id}://auth

Hinweis

Für WAM-Apps (Web Authentication Manager) ist in MSAL kein Umleitungs-URI erforderlich.

Aktivieren des öffentlichen Clientflows

Zum Unterscheiden des Gerätecodeflusses, der integrierten Windows-Authentifizierung sowie eines Benutzernamens und Kennworts von einem vertraulichen Clientanwendung unter Verwendung eines Anmeldeinformationsflusses, wie er in Daemonanwendungen genutzt wird, konfigurieren Sie diese als öffentliche Clientanwendung, da keine Umleitungs-URI erforderlich ist. So erreichen Sie diese Konfiguration

Führen Sie diese Schritte aus, um Ihre App als öffentlichen Client zu identifizieren:

  1. Wählen Sie unter Verwalten die Option Authentifizierung aus.

  2. Wählen Sie unter Erweiterte Einstellungen für Öffentliche Clientflows zulassen die Option Ja aus.

  3. Wählen Sie Speichern, um Ihre Änderungen zu speichern.

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 Auf Web-APIs zugreifen Allgemein verfügbar (Generally Available, GA) oder
Öffentliche Vorschau1
Elektron MSAL-Node.js msal-node Bibliothek kann ID-Token für die Benutzeranmeldung anfordern Bibliothek kann Zugriffstoken für geschützte Web-APIs anfordern Öffentliche Vorschauversion
Java MSAL4J msal4j Bibliothek kann ID-Token für die Benutzeranmeldung anfordern Bibliothek kann Zugriffstoken für geschützte Web-APIs anfordern GA
macOS (Swift/Obj-C) MSAL für iOS und macOS MSAL Tutorium Bibliothek kann ID-Token für die Benutzeranmeldung anfordern Bibliothek kann Zugriffstoken für geschützte Web-APIs anfordern GA
UWP (Universelle Windows-Plattform) MSAL.NET Microsoft.Identity.Client Tutorium Bibliothek kann ID-Token für die Benutzeranmeldung anfordern Bibliothek kann Zugriffstoken für geschützte Web-APIs anfordern GA
WPF (Windows Presentation Foundation) MSAL.NET Microsoft.Identity.Client Tutorium Bibliothek kann ID-Token für die Benutzeranmeldung anfordern Bibliothek kann Zugriffstoken für geschützte Web-APIs anfordern GA

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 Ihre Anwendung beispielsweise eine mehrinstanzenfähige Anwendung in einer nationalen Cloud (in diesem Fall US Government) sein soll, 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.