Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
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:
- Wählen Sie unter Verwalten die Option Authentifizierung>Plattform hinzufügen>Mobile und Desktopanwendungen aus.
- 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
- Verwenden Sie für Apps mit eingebetteten Browsern den genauen Wert:
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:
Wählen Sie unter Verwalten die Option Authentifizierung aus.
Wählen Sie unter Erweiterte Einstellungen für Öffentliche Clientflows zulassen die Option Ja aus.
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 | — |
|
|
Öffentliche Vorschauversion |
| Java | MSAL4J | msal4j | — |
|
|
GA |
| macOS (Swift/Obj-C) | MSAL für iOS und macOS | MSAL | Tutorium |
|
|
GA |
| UWP (Universelle Windows-Plattform) | MSAL.NET | Microsoft.Identity.Client | Tutorium |
|
|
GA |
| WPF (Windows Presentation Foundation) | MSAL.NET | Microsoft.Identity.Client | Tutorium |
|
|
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.
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
PublicClientApplicationBuilderverfügbaren Modifizierer finden Sie in der Referenzdokumentation PublicClientApplicationBuilder. - Eine Beschreibung aller bei
PublicClientApplicationOptionsverfü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.