Schnellstart: Abrufen eines Tokens und Aufrufen der Microsoft Graph-API von einer Windows Desktop-App ausQuickstart: Acquire a token and call Microsoft Graph API from a Windows desktop app

In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus, das zeigt, wie eine Windows Desktop .NET-Anwendung (WPF) Benutzer anmelden und ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen.In this quickstart, you download and run a code sample that demonstrates how a Windows desktop .NET (WPF) application can sign in users and get an access token to call the Microsoft Graph API.

Eine Abbildung finden Sie unter Funktionsweise des Beispiels.See How the sample works for an illustration.

VoraussetzungenPrerequisites

Registrieren und Herunterladen Ihrer Schnellstart-AppRegister and download your quickstart app

Die Schnellstartanwendung kann auf zwei Arten gestartet werden:You have two options to start your quickstart application:

Option 1: Registrieren und automatisches Konfigurieren Ihrer App und anschließendes Herunterladen des CodebeispielsOption 1: Register and auto configure your app and then download your code sample

  1. Navigieren Sie zur Umgebung des Schnellstarts Azure-Portal – App-Registrierungen.Go to the Azure portal - App registrations quickstart experience.
  2. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Registrieren aus.Enter a name for your application and select Register.
  3. Befolgen Sie die Anweisungen, um Ihre neue Anwendung mit nur einem Klick herunterzuladen und automatisch zu konfigurieren.Follow the instructions to download and automatically configure your new application with just one click.

Option 2: Registrieren und manuelles Konfigurieren Ihrer Anwendung und des CodebeispielsOption 2: Register and manually configure your application and code sample

Schritt 1: Anwendung registrierenStep 1: Register your application

Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und Ihrer Projektmappe manuell die Registrierungsinformationen Ihrer App hinzuzufügen:To register your application and add the app's registration information to your solution manually, follow these steps:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie im Menü am oberen Rand den Filter Verzeichnis + Abonnement  , um den Mandanten auszuwählen, für den Sie eine Anwendung registrieren möchten.
  3. Suchen Sie nach Azure Active Directory, und wählen Sie diese Option aus.Search for and select Azure Active Directory.
  4. Wählen Sie unter Verwalten Folgendes aus: App-Registrierungen > Neue Registrierung.Under Manage, select App registrations > New registration.
  5. Geben Sie unter Name einen Namen für Ihre Anwendung ein (beispielsweise Win-App-calling-MsGraph).Enter a Name for your application, for example Win-App-calling-MsGraph. Benutzern Ihrer App wird wahrscheinlich dieser Namen angezeigt. Sie können ihn später ändern.Users of your app might see this name, and you can change it later.
  6. 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.In the Supported account types section, select Accounts in any organizational directory and personal Microsoft accounts (for example, Skype, Xbox, Outlook.com).
  7. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.Select Register to create the application.
  8. Wählen Sie unter Verwalten die Option Authentifizierung aus.Under Manage, select Authentication.
  9. Wählen Sie Plattform hinzufügen > Mobilgerät- und Desktopanwendungen aus.Select Add a platform > Mobile and desktop applications.
  10. Wählen Sie im Abschnitt Umleitungs-URIs die Option https://login.microsoftonline.com/common/oauth2/nativeclient aus.In the Redirect URIs section, select https://login.microsoftonline.com/common/oauth2/nativeclient.
  11. Wählen Sie Konfigurieren aus.Select Configure.

Schritt 1: Konfigurieren Ihrer Anwendung im Azure-PortalStep 1: Configure your application in Azure portal

Damit das Codebeispiel für diesen Schnellstart funktioniert, müssen Sie einen Antwort-URI als https://login.microsoftonline.com/common/oauth2/nativeclient hinzufügen.For the code sample for this quickstart to work, you need to add a reply URL as https://login.microsoftonline.com/common/oauth2/nativeclient.

Bereits konfiguriert: Ihre Anwendung ist mit diesen Attributen konfiguriert.Already configured Your application is configured with these attributes.

Schritt 2: Herunterladen des Visual Studio-ProjektsStep 2: Download your Visual Studio project

Führen Sie das Projekt mit Visual Studio 2019 aus.Run the project using Visual Studio 2019.

Schritt 3: Ihre App ist konfiguriert und betriebsbereitStep 3: Your app is configured and ready to run

Wir haben das Projekt mit Werten Ihrer App-Eigenschaften konfiguriert. Es ist nun ausführungsbereit.We have configured your project with values of your app's properties and it's ready to run.

Hinweis

Enter_the_Supported_Account_Info_Here

Schritt 3: Konfigurieren des Visual Studio-ProjektsStep 3: Configure your Visual Studio project

  1. Extrahieren Sie die ZIP-Datei in einem lokalen Ordner in der Nähe des Datenträger-Stammverzeichnisses (beispielsweise C:\Azure-Samples).Extract the zip file to a local folder close to the root of the disk, for example, C:\Azure-Samples.

  2. Öffnen Sie das Projekt in Visual Studio.Open the project in Visual Studio.

  3. Bearbeiten Sie App.Xaml.cs. Ersetzen Sie dabei die Werte der Felder ClientId und Tenant durch den folgenden Code:Edit App.Xaml.cs and replace the values of the fields ClientId and Tenant with the following code:

    private static string ClientId = "Enter_the_Application_Id_here";
    private static string Tenant = "Enter_the_Tenant_Info_Here";
    

Hierbei gilt:Where:

  • Enter_the_Application_Id_here ist die Anwendungs-ID (Client) für die von Ihnen registrierte Anwendung.Enter_the_Application_Id_here - is the Application (client) ID for the application you registered.
  • Enter_the_Tenant_Info_Here wird auf eine der folgenden Optionen festgelegt:Enter_the_Tenant_Info_Here - is set to one of the following options:
    • Unterstützt Ihre Anwendung Nur Konten in diesem Organisationsverzeichnis, ersetzen Sie diesen Wert durch die Mandanten-ID oder den Mandantennamen (etwa „contoso.microsoft.com“).If your application supports Accounts in this organizational directory, replace this value with the Tenant Id or Tenant name (for example, contoso.microsoft.com)
    • Unterstützt Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnis, ersetzen Sie diesen Wert durch organizations.If your application supports Accounts in any organizational directory, replace this value with organizations
    • Unterstützt Ihre Anwendung Konten in allen Organisationsverzeichnissen und persönliche Microsoft-Konten, ersetzen Sie diesen Wert durch common.If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace this value with common

Tipp

Die Werte für Anwendungs-ID (Client) , Verzeichnis-ID (Mandant) und Unterstützte Kontotypen finden Sie im Azure-Portal auf der Seite Übersicht der App.To find the values of Application (client) ID, Directory (tenant) ID, and Supported account types, go to the app's Overview page in the Azure portal.

Weitere InformationenMore information

Funktionsweise des BeispielsHow the sample works

Zeigt, wie die in diesem Schnellstart generierte Beispiel-App funktioniert

MSAL.NETMSAL.NET

MSAL (Microsoft.Identity.Client) ist die Bibliothek zum Anmelden von Benutzern und Anfordern von Token, die für den Zugriff auf eine durch Microsoft Identity Platform geschützte API verwendet wird.MSAL (Microsoft.Identity.Client) is the library used to sign in users and request tokens used to access an API protected by Microsoft identity platform. Sie können MSAL installieren, indem Sie den folgenden Befehl in der Paket-Manager-Konsole von Visual Studio ausführen:You can install MSAL by running the following command in Visual Studio's Package Manager Console:

Install-Package Microsoft.Identity.Client -IncludePrerelease

MSAL-InitialisierungMSAL initialization

Sie können den Verweis auf MSAL hinzufügen, indem Sie den folgenden Code hinzufügen:You can add the reference for MSAL by adding the following code:

using Microsoft.Identity.Client;

Initialisieren Sie MSAL anschließend mit dem folgenden Code:Then, initialize MSAL using the following code:

public static IPublicClientApplication PublicClientApp;
PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
Hierbei gilt:Where: BESCHREIBUNGDescription
ClientId Die Anwendungs-ID (Client) für die im Azure-Portal registrierte Anwendung.Is the Application (client) ID for the application registered in the Azure portal. Dieser Wert befindet sich im Azure-Portal auf der Seite Übersicht der App.You can find this value in the app's Overview page in the Azure portal.

Anfordern von TokenRequesting tokens

MSAL verfügt über zwei Methoden zum Abrufen von Token: AcquireTokenInteractive und AcquireTokenSilent.MSAL has two methods for acquiring tokens: AcquireTokenInteractive and AcquireTokenSilent.

Interaktives Abrufen eines BenutzertokensGet a user token interactively

In bestimmten Situationen müssen Benutzer über ein Popupfenster mit dem Microsoft Identity Platform-Endpunkt interagieren, um entweder ihre Anmeldeinformationen zu bestätigen oder ihre Zustimmung zu geben.Some situations require forcing users interact with the Microsoft identity platform endpoint through a popup window to either validate their credentials or to give consent. Beispiele hierfür sind:Some examples include:

  • Erstmaliges Anmelden von Benutzern bei der Anwendung.The first time users sign in to the application
  • Benutzer müssen ihre Anmeldeinformationen erneut eingeben, weil das Kennwort abgelaufen ist.When users may need to reenter their credentials because the password has expired
  • Ihre Anwendung fordert Zugriff auf eine Ressource an, dem der Benutzer zustimmen muss.When your application is requesting access to a resource that the user needs to consent to
  • Zweistufige Authentifizierung ist erforderlich.When two factor authentication is required
authResult = await App.PublicClientApp.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Hierbei gilt:Where: BESCHREIBUNGDescription
_scopes Enthält die angeforderten Bereiche (etwa { "user.read" } für Microsoft Graph oder { "api://<Application ID>/access_as_user" } für benutzerdefinierte Web-APIs).Contains the scopes being requested, such as { "user.read" } for Microsoft Graph or { "api://<Application ID>/access_as_user" } for custom web APIs.

Automatisches Abrufen eines BenutzertokensGet a user token silently

Sie möchten nicht, dass der Benutzer seine Anmeldeinformationen jedes Mal überprüfen muss, wenn er auf eine Ressource zugreifen muss.You don't want to require the user to validate their credentials every time they need to access a resource. Meistens wünschen Sie sich den Abruf und die Erneuerung von Token ohne jegliche Benutzerinteraktion.Most of the time you want token acquisitions and renewal without any user interaction. Sie können die AcquireTokenSilent-Methode verwenden, um Token für den Zugriff auf geschützte Ressourcen nach der anfänglichen AcquireTokenInteractive-Methode abzurufen:You can use the AcquireTokenSilent method to obtain tokens to access protected resources after the initial AcquireTokenInteractive method:

var accounts = await App.PublicClientApp.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await App.PublicClientApp.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
Hierbei gilt:Where: BESCHREIBUNGDescription
scopes Enthält die angeforderten Bereiche (etwa { "user.read" } für Microsoft Graph oder { "api://<Application ID>/access_as_user" } für benutzerdefinierte Web-APIs).Contains the scopes being requested, such as { "user.read" } for Microsoft Graph or { "api://<Application ID>/access_as_user" } for custom web APIs.
firstAccount Gibt den ersten Benutzer im Cache an. (MSAL unterstützt mehrere Benutzer in einer App.)Specifies the first user in the cache (MSAL support multiple users in a single app).

Hilfe und SupportHelp and support

Wenn Sie Hilfe benötigen, ein Problem melden möchten oder sich über Ihre Supportoptionen informieren möchten, finden Sie weitere Informationen unter Hilfe und Support für Entwickler.If you need help, want to report an issue, or want to learn about your support options, see Help and support for developers.

Nächste SchritteNext steps

Probieren Sie das Windows Desktop-Tutorial aus, um eine vollständige Schritt-für-Schritt-Anleitung zum Erstellen von Anwendungen und neuen Features zu erhalten, einschließlich einer vollständigen Erläuterung dieses Schnellstarts.Try out the Windows desktop tutorial for a complete step-by-step guide on building applications and new features, including a full explanation of this quickstart.