Schnellstart: Anmelden von Benutzern und Aufrufen von Microsoft Graph in einer Windows-Desktop-App
In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus, das veranschaulicht, wie eine WPF-Anwendung (Windows Presentation Foundation) Benutzer anmelden und ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen. Die von Ihnen erstellten Desktop-App verwendet den Autorisierungscodefluss, der mit dem PKCE-Standard (Proof Key for Code Exchange) gekoppelt ist.
Siehe Wie das Beispiel funktioniert für eine Abbildung.
Voraussetzungen
- Visual Studio mit installierter Workload Entwicklung für die universelle Windows-Plattform
Registrieren und Herunterladen Ihrer Schnellstart-App
Sie haben zwei Optionen, um Ihre Schnellstartanwendung zu starten:
- [Express] Option 1: Registrieren und konfigurieren Sie Ihre App automatisch und laden Sie dann Ihren Beispielcode herunter
- [Manuell] Option 2: Registrieren und manuelles Konfigurieren der Anwendung und des Codebeispiels
Option 1: Registrieren Sie und konfigurieren Sie Ihre App automatisch und laden Sie dann Ihr Codebeispiel herunter.
- Wechseln Sie zum Microsoft Entra Admin Center – App-RegistrierungenSchnellstartumgebung.
- Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Registrierenaus.
- Folgen Sie den Anweisungen, um Ihre neue Anwendung mit nur einem Klick herunterzuladen und automatisch zu konfigurieren.
Option 2: Registrieren und manuelles Konfigurieren der Anwendung und des Codebeispiels
Schritt 1: Registrieren Der Anwendung
Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und die Registrierungsinformationen der App manuell zu Ihrer Lösung hinzuzufügen:
- Melden Sie sich im Microsoft Entra Admin-Zentruman.
- Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol Einstellungen
im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
- Navigieren Sie zu Identität>Anwendungen>App-Registrierungen, und wählen Sie Neue Registrierung aus.
- Geben Sie unter Name einen Namen für Ihre Anwendung ein (beispielsweise
Win-App-calling-MsGraph
). Benutzer Ihrer App sehen diesen Namen möglicherweise, und Sie können ihn später ändern. - Wählen Sie im Abschnitt Unterstützte Kontotypen die Option Konten in allen Organisationsverzeichnissen und persönliche Microsoft-Konten (z. B. Skype, Xbox, Outlook.com) aus.
- Wählen Sie Registrieren aus, um die Anwendung zu erstellen.
- Wählen Sie unter Verwalten die Option Authentifizierung aus.
- Wählen Sie Plattform hinzufügen>Mobilgerät- und Desktopanwendungen aus.
- Wählen Sie im Abschnitt Umleitungs-URIs
https://login.microsoftonline.com/common/oauth2/nativeclient
aus, und fügen Sie in benutzerdefinierte Umleitungs-URIsms-appx-web://microsoft.aad.brokerplugin/{client_id}
hinzu, wobei{client_id}
die Anwendungs-ID (Client-ID) Ihrer Anwendung ist (dieselbe GUID, die im Kontrollkästchenmsal{client_id}://auth
angezeigt wird). - Wählen Sie Konfigurieren aus.
Schritt 2: Herunterladen des Projekts
Herunterladen der WPF-Beispielanwendung
Tipp
Um Fehler zu vermeiden, die durch Pfadlängenbeschränkungen in Windows verursacht werden, empfehlen wir, das Archiv zu extrahieren oder das Repository in ein Verzeichnis in der Nähe des Stamms Ihres Laufwerks zu klonen.
Schritt 3: Konfigurieren des Projekts
Extrahieren Sie die ZIP-Datei in einen lokalen Ordner in der Nähe des Stammordners des Datenträgers, z. B. C:\Azure-Samples.
Öffnen Sie das Projekt in Visual Studio.
Bearbeiten Sie App.Xaml.cs, und ersetzen Sie die Werte der Felder
ClientId
undTenant
durch den folgenden Code:private static string ClientId = "Enter_the_Application_Id_here"; private static string Tenant = "Enter_the_Tenant_Info_Here";
Wo:
Enter_the_Application_Id_here
– ist die Anwendungs-ID (Client-ID) für die Anwendung, die Sie registriert haben.Den Wert für Anwendungs-ID (Client) finden Sie im Microsoft Entra Admin Center auf der Seite Übersicht der App.
Enter_the_Tenant_Info_Here
- ist auf eine der folgenden Optionen festgelegt:Wenn Ihre Anwendung Konten in diesem Organisationsverzeichnisunterstützt, ersetzen Sie diesen Wert durch die Mandanten-ID oder Mandantennamen (z. B. contoso.microsoft.com)
Wenn Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnisunterstützt, ersetzen Sie diesen Wert durch
organizations
Wenn Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnis und persönlichen Microsoft-Kontenunterstützt, ersetzen Sie diesen Wert durch
common
.Die Werte für Verzeichnis-ID (Mandant) und Unterstützte Kontotypen finden Sie im Microsoft Entra Admin Center auf der Seite Übersicht der App.
Schritt 4: Ausführen der Anwendung
Wählen Sie zum Erstellen und Ausführen der Beispielanwendung in Visual Studio das Menü Debuggen>Debuggen starten aus, oder drücken Sie F5. Das Hauptfenster Ihrer Anwendung wird angezeigt.
Wenn das Hauptfenster der App angezeigt wird, wählen Sie die Schaltfläche "Microsoft Graph-API aufrufen" aus. Sie werden aufgefordert, sich mit Ihrem Microsoft Entra-Konto (Geschäfts-, Schul- oder Unikonto) oder Microsoft-Konto (live.com, outlook.com) anzumelden.
Wenn Sie die Anwendung zum ersten Mal ausführen, werden Sie aufgefordert, die Zustimmung zu erteilen, damit die Anwendung auf Ihr Benutzerprofil zugreifen und Sie anmelden kann. Nachdem Sie den angeforderten Berechtigungen zugestimmt haben, zeigt die Anwendung an, dass Sie sich erfolgreich angemeldet haben. Im Aufruf der Microsoft Graph-API sollten einige grundlegende Tokeninformationen und Benutzerdaten angezeigt werden.
Weitere Informationen
Funktionsweise des Beispiels
MSAL.NET
MSAL (Microsoft.Identity.Client) ist die Bibliothek, die verwendet wird, um Benutzer anzumelden und Token anzufordern, die für den Zugriff auf eine api verwendet werden, die von Microsoft Identity Platform geschützt ist. Sie können MSAL installieren, indem Sie den folgenden Befehl in der Package Manager-Konsole von Visual Studioausführen:
Install-Package Microsoft.Identity.Client -IncludePrerelease
MSAL-Initialisierung
Sie können den Verweis für MSAL hinzufügen, indem Sie den folgenden Code hinzufügen:
using Microsoft.Identity.Client;
Initialisieren Sie DANN MSAL mithilfe des folgenden Codes:
IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
.Build();
Wo: | Beschreibung |
---|---|
ClientId |
Die Anwendungs-ID (Client) der Anwendung, die im Microsoft Entra Admin Center registriert ist. Sie finden diesen Wert auf der Seite Übersicht der App im Microsoft Entra Admin Center. |
Anfordern von Token
MSAL verfügt über zwei Methoden zum Abrufen von Token: AcquireTokenInteractive
und AcquireTokenSilent
.
Interaktives Abrufen eines Benutzertokens
In einigen Situationen müssen Benutzer über ein Popupfenster gezwungen werden, mit der Microsoft Identity Platform zu interagieren, um ihre Anmeldeinformationen zu überprüfen oder ihre Zustimmung zu erteilen. Einige Beispiele sind:
- Wenn sich Benutzer zum ersten Mal bei der Anwendung anmelden
- Wenn Benutzer ihre Anmeldeinformationen möglicherweise erneut eingeben müssen, da das Kennwort abgelaufen ist
- Wenn Ihre Anwendung Zugriff auf eine Ressource anfordert, der der Benutzer zustimmen muss
- Wenn zweistufige Authentifizierung erforderlich ist
authResult = await app.AcquireTokenInteractive(_scopes)
.ExecuteAsync();
Wo: | Beschreibung |
---|---|
_scopes |
Enthält die angeforderten Bereiche, z. B. { "user.read" } für Microsoft Graph oder { "api://<Application ID>/access_as_user" } für benutzerdefinierte Web-APIs. |
Automatisches Abrufen eines Benutzertokens
Sie möchten nicht verlangen, dass der Benutzer seine Anmeldeinformationen jedes Mal überprüft, wenn er auf eine Ressource zugreifen muss. Die meiste Zeit möchten Sie Tokenkäufe und -verlängerungen ohne Benutzerinteraktion. Sie können die AcquireTokenSilent
-Methode verwenden, um Token für den Zugriff auf geschützte Ressourcen nach der ersten AcquireTokenInteractive
Methode abzurufen:
var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
.ExecuteAsync();
Wo: | Beschreibung |
---|---|
scopes |
Enthält die angeforderten Bereiche, z. B. { "user.read" } für Microsoft Graph oder { "api://<Application ID>/access_as_user" } für benutzerdefinierte Web-APIs. |
firstAccount |
Gibt den ersten Benutzer im Cache an (MSAL unterstützt mehrere Benutzer in einer einzelnen App). |
Hilfe und Support
Wenn Sie Hilfe benötigen, ein Problem melden oder mehr über Ihre Supportoptionen erfahren möchten, lesen Sie Hilfe und Support für Entwickler.
Nächste Schritte
Probieren Sie das Windows-Desktop-Lernprogramm aus, um eine vollständige schrittweise Anleitung zum Erstellen von Anwendungen und neuen Features zu erhalten, einschließlich einer vollständigen Erläuterung dieser Schnellstartanleitung.