Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Tenanti pracovních sil
Externí tenanti (další informace)
Tento návod ukazuje, jak volat příkazem chráněné webové API z démonické aplikace .NET. Povolíte démonickou aplikaci klienta, aby získala přístupový token s vlastní identitou a pak volala webové API. V našem případě voláme na chráněný koncový bod Graphu Microsoftu.
V tomto kurzu;
- Nakonfigurujte aplikaci démona tak, aby používala podrobnosti o registraci aplikace. Ujistěte se, že aplikaci udělíte oprávnění User.Read.All v rozhraní Microsoft Graph API.
- Vytvořte aplikaci démona, která získá token vlastním jménem a zavolá chráněné webové rozhraní API.
Požadavky
- .NET. V tomto kurzu používáme .NET 9.0.
- Visual Studio Code nebo jiný editor kódu.
-
registrace aplikace ve vašem tenantu. Ujistěte se, že máte následující údaje o registraci aplikace:
- ID aplikace (klienta) klientské webové aplikace, kterou jste zaregistrovali.
- ID adresáře (tenanta), kde jste zaregistrovali svou webovou aplikaci.
- Hodnota tajného klíče klienta pro webovou aplikaci, kterou jste vytvořili.
Vytvoření aplikace démona .NET
Otevřete terminál a přejděte do složky, ve které má projekt žít.
Inicializujte konzolovou aplikaci .NET a přejděte do její kořenové složky.
dotnet new console -n DotnetDaemon cd DotnetDaemon
Instalace balíčků
Nainstalujte balíčky Microsoft.Identity.Web a Microsoft.Identity.Web.DownstreamApi:
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.DownstreamApi
Microsoft.Identity.Web poskytuje připevnění mezi ASP.NET Core, middlewarem ověřování a knihovnou MSAL (Microsoft Authentication Library) pro .NET, což usnadňuje přidávání možností ověřování a autorizace do aplikace.
Microsoft.Identity.Web.DownstreamApi poskytuje rozhraní používané k volání podřízeného rozhraní API.
Vytvořte soubor appsettings.json a přidejte konfiguraci registrace
Vytvořte appsettings.json soubor v kořenové složce aplikace.
Do souboru appsettings.json přidejte podrobnosti o registraci aplikace.
{ "AzureAd": { // "Authority": "", you can use this for customer tenants in place of Instance and TenantId values "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter_the_Tenant_ID_Here", "ClientId": "Enter_the_Application_ID_Here", "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "Enter_the_Client_Secret_Here" } ] }, "DownstreamApi": { "BaseUrl": "https://graph.microsoft.com", "RelativePath": "/v1.0/users/", "RequestAppToken": true, "Scopes": [ "https://graph.microsoft.com/.default" ] } }Nahraďte následující hodnoty vlastními hodnotami:
Hodnota Popis Zadejte_ID_aplikace_sem ID aplikace (klienta) aplikace démon klienta, kterou jste zaregistrovali. Zadejte_tajný_klíč_klienta_sem Hodnota tajného kódu aplikace démona, kterou jste vytvořili. Zadejte ID nájemce sem ID tenanta adresáře, ve kterém je aplikace registrována. Poznámka
U aplikací zaregistrovaných v externím tenantovi můžete použít autoritu a odebrat jak instance, tak TenantId.
"Authority": "https://<Enter_the_Tenant_Subdomain_Here>.ciamlogin.com/". Kde Enter_the_Tenant_Subdomain_Here je subdoména tenanta.Do souboru projektu přidejte souborappsettings.json . Soubor projektu je soubor .csproj v projektu. Důvodem je to, že soubor je potřeba zkopírovat do výstupního adresáře.
<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
Získání přístupového tokenu
Otevřete soubor program.cs v editoru kódu a odstraňte jeho obsah.
Přidejte do souboru balíčky.
using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Abstractions; using Microsoft.Identity.Web;Vytvořte instanci získání tokenu. K sestavení instance získání tokenu použijte metodu
GetDefaultInstancetřídyTokenAcquirerFactorybalíčkuMicrosoft.Identity.Web. Ve výchozím nastavení instance načte souborappsettings.json , pokud existuje ve stejné složce jako aplikace.GetDefaultInstancenám také umožňuje přidávat služby do kolekce služeb.Do souboru program.cs přidejte tento řádek kódu:
var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();Nakonfigurujte možnosti aplikace, které se mají číst z konfigurace, a přidejte službu
DownstreamApi. SlužbaDownstreamApiposkytuje rozhraní sloužící k volání podřízeného rozhraní API. Tuto službu v objektu konfigurace nazýváme DownstreamAPI . Daemon aplikace čte konfigurace downstream API z části DownstreamApi v appsettings.json. Ve výchozím nastavení získáte mezipaměť tokenů v paměti.Do souboru program.cs přidejte následující fragment kódu:
const string ServiceName = "DownstreamApi"; tokenAcquirerFactory.Services.AddDownstreamApi(ServiceName, tokenAcquirerFactory.Configuration.GetSection("DownstreamApi"));Rozhraní API, které voláte, je Microsoft Graph. V tomto kurzu používáme službu
DownstreamApi. Můžete také použít sadu Microsoft Graph SDK.Sestavte nástroj pro získávání tokenů. Vytvoří všechny přidané služby a vrátí poskytovatele služeb. Pomocí tohoto poskytovatele služeb získáte přístup k prostředku rozhraní API, který přidáte. V takovém případě přidáte jako podřízenou službu pouze jeden prostředek rozhraní API, ke kterému chcete získat přístup.
Do souboru program.cs přidejte následující fragment kódu:
var serviceProvider = tokenAcquirerFactory.Build();
Zavolejte webové API
Přidejte kód pro volání chráněného webového rozhraní API pomocí rozhraní
IDownstreamApi. V tomto kurzu voláme koncový bod rozhraní Microsoft Graph API.Do souboru program.cs přidejte tento kód:
try { IDownstreamApi downstreamApi = serviceProvider.GetRequiredService<IDownstreamApi>(); var response = await downstreamApi.GetForAppAsync<HttpResponseMessage>("DownstreamApi"); var content = await response.Content.ReadAsStringAsync(); var statusCode = response.StatusCode; Console.WriteLine($"Response status code: {statusCode}"); if (!content.Any()) { Console.WriteLine("There are no users to display."); return; } Console.WriteLine(content); } catch (Exception ex) { Console.WriteLine("We could not retrieve the user's list: " + $"{ex}"); }Kód volá koncový bod, který jste definovali v souboru appsettings.json . Metoda
GetForAppAsyncrozhraníIDownstreamApise používá k volání koncového bodu. Aplikace zavolá vlastním jménem. Metoda vrátí objektHttpResponseMessage. Odpověď se pak přečte jako řetězec a zobrazí se v konzole.
Spuštění aplikace démona klienta
Přejděte do kořenové složky aplikace démon a spusťte následující příkaz:
dotnet run
Pokud je všechno v pořádku, měli byste vidět stavový kód odpovědi: OK v terminálu. Pokud existují uživatelé, jsou uživatelé uvedení v terminálu, jinak se zobrazí zpráva , že se nezobrazují žádní uživatelé.
Pokud dojde k nějakým chybám, zobrazí se v terminálu chybová zpráva.
Odstraňování problémů
V případě, že narazíte na chyby,
- Potvrďte podrobnosti registrace, které jste přidali do souboru appsettings.json .
- Potvrďte, že jste do souboru projektu přidali souborappsettings.json .
- Ověřte, že máte správně nakonfigurovaná oprávnění aplikace.