Delen via


Quickstart: Een token ophalen en de Microsoft Graph API aanroepen met behulp van de identiteit van een console-app

Welkom. Dit is waarschijnlijk niet de pagina die u verwachtte te zien. Terwijl we aan een oplossing voor dit probleem werken, kunt u met deze koppeling naar het juiste artikel gaan:

Quickstart: Een token verkrijgen en Microsoft Graph aanroepen in een .NET-console-app

Onze excuses voor het ongemak en bedankt voor uw geduld tijdens onze inspanningen om dit probleem op te lossen.

In de volgende quickstart wordt een codevoorbeeld gebruikt om te laten zien hoe een .NET-consoletoepassing een toegangstoken kan krijgen om de Microsoft Graph API aan te roepen en een lijst met gebruikers weer te geven in de map. Het laat ook zien hoe een taak of een Windows-service kan worden uitgevoerd met een toepassings-id, in plaats van de identiteit van een gebruiker. De voorbeeldconsoletoepassing in deze quickstart is ook een daemon-toepassing, daarom is het een vertrouwelijke clienttoepassing.

Vereisten

Een minimale vereiste van .NET 6.0 SDK.

Uw snelstart-app downloaden en configureren

Stap 1: uw toepassing configureren in de Azure-portal

Voordat het codevoorbeeld in deze quickstart werkt, maakt u een clientgeheim en voegt u de machtiging User.Read.All van de Graph API toe.

Al geconfigureerd Uw toepassing is geconfigureerd met deze kenmerken.

Stap 2: Uw Visual Studio-project downloaden

Voer het project uit met behulp van Visual Studio 2022.

Tip

Om fouten te voorkomen die worden veroorzaakt door padlengtebeperkingen in Windows, raden we u aan het archief te extraheren of de opslagplaats te klonen in een map dicht bij de hoofdmap van uw station.

Notitie

Enter_the_Supported_Account_Info_Here

Het uitvoeren van de toepassing resulteert nu in de uitvoer HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation. Deze fout treedt op omdat voor elke app-alleen-machtiging een globale Beheer istrator van de map is vereist om toestemming te geven aan de toepassing. Selecteer een van de volgende opties, afhankelijk van de rol.

Globale tenantbeheerder

Ga voor een globale tenantbeheerder naar de pagina API-machtigingen en selecteer Beheerderstoestemming verlenen voor Enter_the_Tenant_Name_Here.

Standaardgebruiker

Voor een standaardgebruiker van uw tenant vraagt u een Globale Beheer istrator om beheerderstoestemming te verlenen aan de toepassing. Geef hiervoor de volgende URL op voor de beheerder:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

De fout AADSTS50011: No reply address is registered for the application kan worden weergegeven nadat u toestemming voor de app hebt verleend met behulp van de voorgaande URL. Deze fout treedt op omdat de toepassing en de URL geen omleidings-URI hebben. U kunt deze waarschuwing negeren.

Stap 4: De toepassing uitvoeren

Druk in Visual Studio op F5 om de toepassing uit te voeren. Anders voert u de toepassing uit via de opdrachtprompt, console of terminal:

cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run

In die code:

  • {ProjectFolder} is de map waar u het zip-bestand hebt uitgepakt. Een voorbeeld is C:\Azure-Samples\active-directory-dotnetcore-daemon-v2.

Als gevolg hiervan moet een lijst met gebruikers in Microsoft Entra ID worden weergegeven.

Deze quickstarttoepassing gebruikt een clientgeheim om zichzelf te identificeren als een vertrouwelijke client. Het clientgeheim wordt toegevoegd als een tekstbestand zonder opmaak aan de projectbestanden. Om veiligheidsredenen is het raadzaam om een certificaat te gebruiken in plaats van een clientgeheim voordat u de toepassing als productietoepassing overweegt. Zie voor meer informatie over het gebruik van een certificaat deze instructies.

Meer informatie

Deze sectie bevat een overzicht van de code die vereist is voor het aanmelden van gebruikers. Dit overzicht kan handig zijn om te begrijpen hoe de > code werkt, wat de belangrijkste argumenten zijn en hoe u aanmelding toevoegt aan een bestaande .NET-consoletoepassing.

Hoe het voorbeeld werkt

Diagram waarin wordt getoond hoe de voorbeeld-app werkt die is gegenereerd in deze snelstart.

Microsoft.Identity.Web.GraphServiceClient

Microsoft Identity Web (in het pakket Microsoft.Identity.Web.TokenAcquisition ) is de bibliotheek die wordt gebruikt om tokens aan te vragen voor toegang tot een API die wordt beveiligd door het Microsoft Identity Platform. Met deze snelstart worden tokens aangevraagd met behulp van de eigen identiteit van de toepassing in plaats van gedelegeerde machtigingen. De verificatiestroom in dit voorbeeld staat bekend als de OAuth-stroom voor clientreferenties. Zie dit artikel voor meer informatie over het gebruik van MSAL.NET met een clientreferentiestroom. Aangezien de daemon-app in deze quickstart Microsoft Graph aanroept, installeert u het pakket Microsoft.Identity.Web.GraphServiceClient , dat automatisch geverifieerde aanvragen naar Microsoft Graph verwerkt (en verwijst naar microsoft.Identity.Web.TokenAcquisition)

Microsoft.Identity.Web.GraphServiceClient kan worden geïnstalleerd door de volgende opdracht uit te voeren in de Visual Studio Pakketbeheer Console:

dotnet add package Microsoft.Identity.Web.GraphServiceClient

Initialisatie van toepassingen

Voeg de verwijzing voor Microsoft.Identity.Web toe door de volgende code toe te voegen:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

Initialiseer vervolgens de app met het volgende:

// 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();

Deze code maakt gebruik van de configuratie die is gedefinieerd in het appsettings.json-bestand:

{
   "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 Beschrijving
ClientSecret Het clientgeheim dat voor de toepassing in de Azure-portal is gemaakt.
ClientId De toepassings-id (client-id) voor de toepassing die is geregistreerd in de Azure-portal. Deze waarde vindt u op de overzichtspagina van de app in Azure Portal.
Instance (Optioneel) De beveiligingstokenservice (STS) kan het eindpunt van het exemplaar van de app om te verifiëren. Dit betreft meestal https://login.microsoftonline.com/ de openbare cloud.
TenantId Naam van de tenant of de tenant-id.

Zie de naslagdocumentatie voor ConfidentialClientApplication voor meer informatie.

Microsoft Graph aanroepen

Als u een token wilt aanvragen met behulp van de identiteit van de app, gebruikt u de methode AcquireTokenForClient:

GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
var users = await graphServiceClient.Users
              .GetAsync(r => r.Options.WithAppOnly());

Help en ondersteuning

Als u hulp nodig hebt, een probleem wilt melden of meer informatie wilt over uw ondersteuningsopties, raadpleegt u Hulp en ondersteuning voor ontwikkelaars.

Volgende stappen

Bekijk het overzicht van scenario's voor meer informatie over daemontoepassingen: