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.
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
3. lépés: Rendszergazda hozzájárulás
Az alkalmazás futtatása most a kimenetet HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation
eredmé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
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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: