Schnellstart: Abrufen eines Tokens und Aufrufen der Microsoft Graph-API über die Identität einer Konsolen-App
Willkommen! Dies ist wahrscheinlich nicht die Seite, die Sie erwartet haben. Während wir an einer Korrektur arbeiten, sollten Sie über diesen Link zum richtigen Artikel gelangen:
Schnellstart: Abrufen eines Tokens und Aufrufen von Microsoft Graph aus einer .NET-Konsolen-App
Wir entschuldigen uns für die Unannehmlichkeiten und bitten Sie um Geduld, während wir an einer Lösung arbeiten.
In diesem Schnellstart wird anhand eines Codebeispiels gezeigt, wie eine .NET-Konsolenanwendung ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen und eine Liste mit Benutzer*innen im Verzeichnis anzuzeigen. Es wird auch veranschaulicht, wie ein Auftrag oder ein Windows-Dienst statt mit einer Benutzeridentität mit einer Anwendungsidentität ausgeführt werden kann. Die Beispielkonsolenanwendung in dieser Schnellstartanleitung ist außerdem eine Daemonanwendung, also eine vertrauliche Clientanwendung.
Voraussetzungen
Mindestanforderung: .NET 6.0 SDK.
Herunterladen und Konfigurieren Ihrer Schnellstart-App
Schritt 1: Konfigurieren Ihrer Anwendung im Azure-Portal
Damit das Codebeispiel in dieser Schnellstartanleitung funktioniert, müssen Sie einen geheimen Clientschlüssel erstellen und die Anwendungsberechtigung User.Read.All aus der Graph-API hinzufügen.
Make these changes for me (Diese Änderungen für mich vornehmen)
Ihre Anwendung ist mit diesen Attributen konfiguriert.
Schritt 2: Herunterladen des Visual Studio-Projekts
Führen Sie das Projekt mit Visual Studio 2022 aus.
Tipp
Es wird empfohlen, das Archiv in ein Verzeichnis in der Nähe des Stammverzeichnisses Ihres Laufwerks zu extrahieren, um Fehler zu vermeiden, die durch Beschränkungen der Pfadlänge unter Windows verursacht werden.
Hinweis
Enter_the_Supported_Account_Info_Here
Schritt 3: Administratorzustimmung
Beim Ausführen der Anwendung wird HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation
ausgegeben. Dieser Fehler tritt auf, da bei jeder Berechtigung, die nur für eine App gilt, ein Globaler Admin des Verzeichnisses der Anwendung zustimmen muss. Wählen Sie je nach Rolle eine der folgenden Optionen aus.
Globaler Mandantenadministrator
Gehen Sie als globale*r Mandantenadministrator*in wie folgt vor: Navigieren Sie zur Seite API-Berechtigungen, und wählen Sie Administratorzustimmung für Enter_the_Tenant_Name_Here erteilen aus.
Standardbenutzer
Wenn Sie ein Standardbenutzerkonto auf Ihrem Mandanten haben, müssen Sie einen Globalen Admin um die Erteilung der Administratoreinwilligung für die Anwendung bitten. Übermitteln Sie hierzu die folgende URL an den Administrator:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Möglicherweise wird der Fehler AADSTS50011: No reply address is registered for the application
angezeigt, nachdem Sie der App mithilfe der vorherigen URL Ihre Zustimmung erteilt haben. Dieser Fehler tritt auf, weil die Anwendung und die URL keinen Umleitungs-URI haben. Sie können diese Warnmeldung ignorieren.
Schritt 4: Ausführen der Anwendung
Drücken Sie in Visual Studio F5, um die Anwendung auszuführen. Führen Sie die Anwendung andernfalls über eine Eingabeaufforderung, die Konsole oder ein Terminal aus:
cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run
Informationen zu diesem Code:
{ProjectFolder}
ist der Ordner, in den Sie die ZIP-Datei extrahieren. z. B.C:\Azure-Samples\active-directory-dotnetcore-daemon-v2
.
Daraufhin sollte eine Liste der Benutzer in Microsoft Entra ID angezeigt werden.
Für die Anwendung in dieser Schnellstartanleitung wird ein Clientgeheimnis verwendet, um sich selbst als vertraulicher Client zu identifizieren. Der geheime Clientschlüssel wird Ihren Projektdateien als reine Textdatei hinzugefügt. Aus Sicherheitsgründen wird empfohlen, anstelle eines geheimen Clientschlüssels ein Zertifikat zu verwenden, bevor die Anwendung in der Produktionsumgebung verwendet wird. Weitere Informationen zur Verwendung eines Zertifikats finden Sie in diesen Anweisungen.
Weitere Informationen
In diesem Abschnitt erhalten Sie eine Übersicht über den erforderlichen Code für die Benutzeranmeldung. Diese Übersicht kann hilfreich sein, um die Funktionsweise des Codes und die Hauptargumente zu verstehen und zu ermitteln, wie Sie einer vorhandenen .NET-Konsolenanwendung eine Anmeldung hinzufügen.
Funktionsweise des Beispiels
Microsoft.Identity.Web.GraphServiceClient
Die Microsoft Identity Web-Bibliothek (im Paket Microsoft.Identity.Web.TokenAcquisition) wird zum Anfordern von Token für den Zugriff auf eine API verwendet, die durch Microsoft Identity Platform geschützt ist. In dieser Schnellstartanleitung werden Token unter Verwendung der eigenen Identität der Anwendung anstelle der delegierten Berechtigungen angefordert. Der Authentifizierungsflow wird in diesem Fall als OAuth 2.0-Clientanmeldeinformations-Flow bezeichnet. Weitere Informationen dazu, wie Sie MSAL.NET mit einem Clientanmeldeinformations-Flow verwenden, finden Sie in diesem Artikel. Da die Daemon-App in dieser Schnellstartanleitung Microsoft Graph aufruft, installieren Sie das Paket Microsoft.Identity.Web.GraphServiceClient, das automatisch authentifizierte Anforderungen an Microsoft Graph verarbeitet (und auf Microsoft.Identity.Web.TokenAcquisition verweist)
Microsoft.Identity.Web.GraphServiceClient kann durch Ausführen des folgenden Befehls in der Paket-Manager-Konsole von Visual Studio installiert werden:
dotnet add package Microsoft.Identity.Web.GraphServiceClient
Anwendungsinitialisierung
Fügen Sie den Verweis auf Microsoft.Identity.Web hinzu, indem Sie den folgenden Code hinzufügen:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;
Initialisieren Sie die App dann wie folgt:
// Get the Token acquirer factory instance. By default it reads an appsettings.json
// file if it exists in the same folder as the app (make sure that the
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();
// Configure the application options to be read from the configuration
// and add the services you need (Graph, token cache)
IServiceCollection services = tokenAcquirerFactory.Services;
services.AddMicrosoftGraph();
// By default, you get an in-memory token cache.
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization
// Resolve the dependency injection.
var serviceProvider = tokenAcquirerFactory.Build();
Dieser Code verwendet die in der Datei „appsettings.json“ definierte Konfiguration:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
"ClientId": "[Enter here the ClientId for your application]",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "[Enter here a client secret for your application]"
}
]
}
}
Element | Beschreibung |
---|---|
ClientSecret |
Der geheime Clientschlüssel, der für die Anwendung im Azure-Portal erstellt wird |
ClientId |
Die Anwendungs-ID (Client) für die im Azure-Portal registrierte Anwendung. Sie finden diesen Wert im Azure-Portal auf der Seite Übersicht der App. |
Instance |
(Optional) Der Endpunkt der STS-Instanz (Security Token Service, Sicherheitstokendienst) für die zu authentifizierende App. Dies ist in der Regel https://login.microsoftonline.com/ für die öffentliche Cloud. |
TenantId |
Der Name des Mandanten oder die Mandanten-ID. |
Weitere Informationen finden Sie in der Referenzdokumentation für ConfidentialClientApplication
.
Aufrufen von Microsoft Graph
Verwenden Sie die AcquireTokenForClient
-Methode, um ein Token mit der App-Identität anzufordern:
GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
var users = await graphServiceClient.Users
.GetAsync(r => r.Options.WithAppOnly());
Hilfe und 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.
Nächste Schritte
Weitere Informationen zu Daemon-Anwendungen finden Sie in der Szenarioübersicht: