Sdílet prostřednictvím


Rychlý start: Získání tokenu a volání rozhraní Microsoft Graph API pomocí identity konzolové aplikace

Vítejte! Pravděpodobně to není stránka, kterou jste očekávali. Zatímco pracujeme na opravě, měl by vás tento odkaz dostat na správný článek:

Rychlý start: Získání tokenu a volání Microsoft Graphu v konzolové aplikaci .NET

Omlouváme se za nepříjemnosti a vážíme si vaší trpělivosti, zatímco pracujeme na vyřešení tohoto problému.

Následující rychlý start používá ukázku kódu, která ukazuje, jak může konzolová aplikace .NET získat přístupový token pro volání rozhraní Microsoft Graph API a zobrazení seznamu uživatelů v adresáři. Ukazuje také, jak může úloha nebo služba systému Windows běžet s identitou aplikace místo identity uživatele. Ukázková konzolová aplikace v tomto rychlém startu je také aplikace démona, a proto se jedná o důvěrnou klientskou aplikaci.

Požadavky

Minimální požadavek sady .NET 6.0 SDK.

Stažení a konfigurace aplikace pro rychlý start

Krok 1: Konfigurace aplikace na webu Azure Portal

Aby ukázka kódu v tomto rychlém startu fungovala, vytvořte tajný klíč klienta a přidejte oprávnění aplikace User.Read.All rozhraní Graph API.

Už nakonfigurované Vaše aplikace je nakonfigurovaná s těmito atributy.

Krok 2: Stažení projektu sady Visual Studio

Spusťte projekt pomocí sady Visual Studio 2022.

Tip

Pokud se chcete vyhnout chybám způsobeným omezením délky cesty ve Windows, doporučujeme extrahovat archiv nebo klonovat úložiště do adresáře blízko kořenového adresáře jednotky.

Poznámka:

Enter_the_Supported_Account_Info_Here

Spuštění aplikace teď vede k výstupu HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation. K této chybě dochází, protože k udělení souhlasu aplikace vyžaduje globální Správa istrator adresáře. V závislosti na roli vyberte jednu z následujících možností.

Globální správce tenanta

Pokud chcete globálního správce tenanta, přejděte na stránku Oprávnění rozhraní API a vyberte Udělit souhlas správce pro Enter_the_Tenant_Name_Here.

Standardní uživatel

Pro standardního uživatele vašeho tenanta požádejte globálního Správa istratora o udělení souhlasu správce s aplikací. Uděláte to tak, že správci poskytnete následující adresu URL:

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

Tato chyba AADSTS50011: No reply address is registered for the application se může zobrazit po udělení souhlasu s aplikací pomocí předchozí adresy URL. K této chybě dochází, protože aplikace a adresa URL nemají identifikátor URI přesměrování. To můžete ignorovat.

Krok 4: Spuštění aplikace

V sadě Visual Studio spusťte aplikaci stisknutím klávesy F5 . V opačném případě spusťte aplikaci přes příkazový řádek, konzolu nebo terminál:

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

V kódu:

  • {ProjectFolder} je složka, do které jste extrahovali soubor .zip. Příklad: C:\Azure-Samples\active-directory-dotnetcore-daemon-v2.

V důsledku toho by se měl zobrazit seznam uživatelů v Microsoft Entra ID.

Tato aplikace pro rychlý start používá tajný klíč klienta k identifikaci sebe sama jako důvěrného klienta. Tajný klíč klienta se přidá do souborů projektu jako soubor prostého textu. Z bezpečnostních důvodů se doporučuje místo tajného klíče klienta použít certifikát před zvážením aplikace jako produkční aplikace. Další informace o používání certifikátu najdete v těchto pokynech.

Více informací

Tato část obsahuje přehled kódu potřebného k přihlášení uživatelů. Tento přehled může být užitečný k pochopení toho, jak > kód funguje, jaké jsou hlavní argumenty a jak přidat přihlášení do existující konzolové aplikace .NET.

Jak ukázka funguje

Diagram znázorňující, jak funguje ukázková aplikace vygenerovaná v tomto rychlém startu

Microsoft.Identity.Web.GraphServiceClient

Web Microsoft Identity (v balíčku Microsoft.Identity.Web.TokenAcquisition ) je knihovna, která se používá k vyžádání tokenů pro přístup k rozhraní API chráněnému platformou Microsoft Identity Platform. Tento rychlý start vyžaduje tokeny pomocí vlastní identity aplikace místo delegovaných oprávnění. V tomto případě se tok ověřování označuje jako tok OAuth přihlašovacích údajů klienta. Další informace o tom, jak používat MSAL.NET s tokem přihlašovacích údajů klienta, najdete v tomto článku. Vzhledem k tomu, že aplikace démon v tomto rychlém startu volá Microsoft Graph, nainstalujete balíček Microsoft.Identity.Web.GraphServiceClient , který zpracovává automaticky ověřené požadavky na Microsoft Graph (a odkazuje se na samotný Microsoft.Identity.Web.TokenAcquisition).

Microsoft.Identity.Web.GraphServiceClient je možné nainstalovat spuštěním následujícího příkazu v konzole Správce balíčků sady Visual Studio:

dotnet add package Microsoft.Identity.Web.GraphServiceClient

Inicializace aplikací

Přidejte odkaz pro Microsoft.Identity.Web přidáním následujícího kódu:

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

Potom inicializujete aplikaci následujícím kódem:

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

Tento kód používá konfiguraci definovanou v souboru appsettings.json:

{
   "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 (Prvek) Popis
ClientSecret Tajný klíč klienta vytvořený pro aplikaci na webu Azure Portal.
ClientId ID aplikace (klienta) pro aplikaci zaregistrovanou na webu Azure Portal. Tuto hodnotu najdete na stránce Přehled aplikace na webu Azure Portal.
Instance (Volitelné) Služba tokenů zabezpečení (STS) může pro aplikaci ověřit koncový bod instance. Obvykle se jedná https://login.microsoftonline.com/ o veřejný cloud.
TenantId Název tenanta nebo ID tenanta.

Další informace naleznete v referenční dokumentaci pro ConfidentialClientApplication.

Volání Microsoft Graphu

Pokud chcete požádat o token pomocí identity aplikace, použijte metodu AcquireTokenForClient :

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

Nápověda a podpora

Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.

Další kroky

Další informace o aplikacích démona najdete v přehledu scénáře: