Megosztás a következőn keresztül:


Rövid útmutató: Jogkivonat lekérése és a Microsoft Graph API meghívása egy konzolalkalmazás identitásával

Üdvözöljük! Valószínűleg nem ez az a lap, amire számított. Amíg dolgozunk a javításon, ez a hivatkozás a megfelelő cikkre viszi:

Rövid útmutató: Jogkivonat beszerzése és a Microsoft Graph meghívása .NET-konzolalkalmazásban

Elnézést kérünk a kellemetlenségért, és köszönjük türelmét, amíg dolgozunk a probléma megoldásán.

Az alábbi rövid útmutató kódmintával mutatja be, hogy egy .NET-konzolalkalmazás hogyan kaphat hozzáférési jogkivonatot a Microsoft Graph API meghívásához és a címtárban lévő felhasználók listájának megjelenítéséhez. Azt is bemutatja, hogy egy feladat vagy windowsos szolgáltatás hogyan futtatható alkalmazásidentitással a felhasználó identitása helyett. A rövid útmutatóban szereplő mintakonzolalkalmazás egyben démonalkalmazás is, ezért bizalmas ügyfélalkalmazás.

Előfeltételek

A .NET 6.0 SDK minimális követelménye.

Gyorsútmutató-alkalmazás letöltése és konfigurálása

1. lépés: Az alkalmazás konfigurálása az Azure Portalon

A rövid útmutatóban szereplő kódminta működéséhez hozzon létre egy ügyfélkulcsot, és adja hozzá a Graph API User.Read.All alkalmazásengedélyét.

Már konfigurálva van Az alkalmazás konfigurálva van ezekkel az attribútumokkal.

2. lépés: A Visual Studio-projekt letöltése

Futtassa a projektet a Visual Studio 2022 használatával.

Tipp.

A Windows elérési úthossz-korlátozásai által okozott hibák elkerülése érdekében javasoljuk, hogy bontsa ki az archívumot, vagy klónozza az adattárat a meghajtó gyökeréhez közeli könyvtárba.

Feljegyzés

Enter_the_Supported_Account_Info_Here

Az alkalmazás futtatása most a kimenetet HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operationeredményezi. Ez a hiba azért fordul elő, mert minden csak alkalmazásra vonatkozó engedélyhez a címtár globális Rendszergazda istratorára van szükség ahhoz, hogy hozzájáruljon az alkalmazáshoz. A szerepkörtől függően válasszon az alábbi lehetőségek közül.

Globális bérlői rendszergazda

Globális bérlői rendszergazda esetén nyissa meg az API-engedélyek lapot, és válassza a rendszergazdai hozzájárulás megadása Enter_the_Tenant_Name_Here.

Standard felhasználó

A bérlő egy szabványos felhasználójához kérje meg a globális Rendszergazda istratort, hogy adjon rendszergazdai hozzájárulást az alkalmazáshoz. Ehhez adja meg a következő URL-címet a rendszergazdának:

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

A hiba AADSTS50011: No reply address is registered for the application akkor jelenhet meg, ha az előző URL-cím használatával engedélyt ad az alkalmazásnak. Ez a hiba azért fordul elő, mert az alkalmazás és az URL-cím nem rendelkezik átirányítási URI-val. Ezt figyelmen kívül hagyhatja.

4. lépés: Az alkalmazás futtatása

A Visual Studióban nyomja le az F5 billentyűt az alkalmazás futtatásához. Ellenkező esetben futtassa az alkalmazást parancssoron, konzolon vagy terminálon keresztül:

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

Ebben a kódban:

  • {ProjectFolder} az a mappa, amelyben kicsomagoltuk a .zip fájlt. Például: C:\Azure-Samples\active-directory-dotnetcore-daemon-v2.

Ennek eredményeként meg kell jeleníteni a Microsoft Entra-azonosítóban szereplő felhasználók listáját.

Ez a rövid útmutató alkalmazás egy ügyfél titkos kódjával azonosítja magát bizalmas ügyfélként. Az ügyfélkulcs egyszerű szöveges fájlként lesz hozzáadva a projektfájlokhoz. Biztonsági okokból javasoljuk, hogy használjon tanúsítványt az ügyfél titkos kódja helyett, mielőtt éles alkalmazásként tekintené az alkalmazást. A tanúsítványok használatáról további információt az alábbi utasításokban talál.

További információ

Ez a szakasz áttekintést nyújt a felhasználók bejelentkezéséhez szükséges kódról. Ez az áttekintés hasznos lehet a > kód működésének, a fő argumentumok és a meglévő .NET-konzolalkalmazásba való bejelentkezés hozzáadásának megértéséhez.

A minta működése

Az ebben a rövid útmutatóban létrehozott mintaalkalmazás működését bemutató diagram.

Microsoft.Identity.Web.GraphServiceClient

A Microsoft Identity Web (a Microsoft.Identity.Web.TokenAcquisition csomagban) az a kódtár, amellyel jogkivonatokat kérhet a Microsoft Identitásplatform által védett API eléréséhez. Ez a rövid útmutató a jogkivonatokat delegált engedélyek helyett az alkalmazás saját identitásával kéri le. A hitelesítési folyamat ebben az esetben az ügyfél hitelesítő adatainak OAuth-folyamatának nevezik. A MSAL.NET ügyfél-hitelesítő adatokkal való használatával kapcsolatos további információkért tekintse meg ezt a cikket. Tekintettel arra, hogy a rövid útmutatóban szereplő démonalkalmazás meghívja a Microsoft Graphot, telepítenie kell a Microsoft.Identity.Web.GraphServiceClient csomagot, amely automatikusan hitelesíti a Microsoft Graph-kérelmeket (és a Microsoft.Identity.Web.TokenAcquisition-ra hivatkozik)

A Microsoft.Identity.Web.GraphServiceClient a Következő parancs futtatásával telepíthető a Visual Studio Csomagkezelő-konzolon:

dotnet add package Microsoft.Identity.Web.GraphServiceClient

Alkalmazásinicializálás

Adja hozzá a Microsoft.Identity.Web hivatkozását a következő kód hozzáadásával:

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

Ezután inicializálja az alkalmazást a következőkkel:

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

Ez a kód a appsettings.json fájlban definiált konfigurációt használja:

{
   "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]"
           }
       ]
   }
}
Elem Leírás
ClientSecret Az alkalmazáshoz az Azure Portalon létrehozott ügyfélkód.
ClientId Az Azure Portalon regisztrált alkalmazás (ügyfél) azonosítója. Ez az érték az alkalmazás Áttekintés lapján található az Azure Portalon.
Instance (Nem kötelező) A biztonsági jogkivonat-szolgáltatás (STS) a hitelesítéshez az alkalmazás végpontját is létrehozhatja. Általában https://login.microsoftonline.com/ a nyilvános felhőhöz készült.
TenantId A bérlő vagy a bérlőazonosító neve.

További információkért tekintse meg a referenciadokumentációt ConfidentialClientApplication.

A Microsoft Graph meghívása

Ha jogkivonatot szeretne kérni az alkalmazás identitásával, használja a AcquireTokenForClient következő módszert:

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

Súgó és támogatás

Ha segítségre van szüksége, szeretne jelentést készíteni egy problémáról, vagy szeretne többet megtudni a támogatási lehetőségekről, olvassa el a súgót és a fejlesztők támogatását.

Következő lépések

A démonalkalmazásokkal kapcsolatos további információkért tekintse meg a forgatókönyv áttekintését: