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 | — | Public Preview | ||
Java | MSAL4J | msal4j | — | Allgemein verfügbar | ||
macOS (Swift/Obj-C) | MSAL für iOS und macOS | MSAL | Tutorial | Allgemein verfügbar | ||
UWP | MSAL.NET | Microsoft.Identity.Client | Tutorial | Allgemein verfügbar | ||
WPF | MSAL.NET | Microsoft.Identity.Client | Tutorial | Allgemein verfügbar |
1 Universelle Lizenzbedingungen für Onlinedienste gelten für Bibliotheken in der öffentlichen Vorschauversion.
Ö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.
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.