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.
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
Krok 3: Správa souhlas
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
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: