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.
Tento článek vysvětluje, jak volat Microsoft Graph API z agenta pomocí identit agentů nebo uživatelského účtu agenta.
Pokud chcete volat rozhraní API z agenta, musíte získat přístupový token, který může agent použít k ověření v rozhraní API. Doporučujeme použít Microsoft. Identity.Web SDK pro .NET pro volání webových rozhraní API Tato sada SDK zjednodušuje proces získávání a ověřování tokenů. Pro ostatní jazyky použijte Microsoft Entra ID Auth SDK (sidecar).
Předpoklady
- Identita agenta s příslušnými oprávněními pro volání cílového rozhraní API. Pro tok v zastoupení potřebujete uživatele.
- Uživatelský účet agenta s příslušnými oprávněními pro volání cílového rozhraní API.
Volání Microsoft Graph API
Nainstalujte Microsoft. Identity.Web.GraphServiceClient, který zpracovává ověřování sady Graph SDK a Microsoft. Balíček Identity.Web.AgentIdentities pro přidání podpory identit agentů
dotnet add package Microsoft.Identity.Web.GraphServiceClient dotnet add package Microsoft.Identity.Web.AgentIdentitiesPřidejte podporu pro Microsoft Graph a identity agenta v kolekci služeb.
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.Identity.Web; var builder = WebApplication.CreateBuilder(args); // Add authentication (web app or web API) builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd")) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches(); // Add Microsoft Graph support builder.Services.AddMicrosoftGraph(); // Add Agent Identities support builder.Services.AddAgentIdentities(); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.Run();Konfigurace možností identity graphu a agenta v appsettings.json.
Výstraha
Tajné kódy klienta by se neměly používat jako přihlašovací údaje klienta v produkčních prostředích pro podrobné plány identit agentů kvůli rizikům zabezpečení. Místo toho používejte bezpečnější metody ověřování, jako jsou přihlašovací údaje federované identity (FIC) se spravovanými identitami nebo klientskými certifikáty . Tyto metody poskytují lepší zabezpečení tím, že eliminují potřebu ukládat citlivé tajné kódy přímo v konfiguraci vaší aplikace.
{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "<your-tenant-id>", "ClientId": "<agent-blueprint-client-id>", "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "your-client-secret" } ] }, "DownstreamApis": { "MicrosoftGraph": { "BaseUrl": "https://graph.microsoft.com/v1.0", "Scopes": ["User.Read", "User.ReadBasic.All"] } } }Note
Nakonfigurujte pouze Microsoft Graph oprávnění, která váš agent potřebuje, a ujistěte se, že
Scopesnastavení odpovídá prostředkům Graphu, které volá váš kód. Tyto příklady používajíUser.ReadaUser.ReadBasic.All; volání jiných prostředků vyžaduje odpovídající oprávnění.Teď můžete
GraphServiceClientzískat vložením do vaší služby nebo od poskytovatele služeb a použít Microsoft Graph.
Pro identity agenta můžete získat token pouze pro aplikaci (autonomní agenty) nebo token jménem uživatele (interaktivní agenty) pomocí metody
WithAgentIdentity. U tokenů pouze pro aplikaci nastavteRequestAppTokenvlastnost natrue. Pro delegované tokeny uživatele nenastavujte vlastnostRequestAppTokenani ji nenastavujte explicitně nafalse.using Microsoft.Graph; using Microsoft.Identity.Web; // Get the GraphServiceClient GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>(); string agentIdentity = "agent-identity-guid"; // Call Microsoft Graph APIs with the agent identity for app only scenario var usersAppOnly = await graphServiceClient.Users .GetAsync(r => r.Options.WithAuthenticationOptions(options => { options.WithAgentIdentity(agentIdentity); options.RequestAppToken = true; // Set to true for app only })); // Call Microsoft Graph APIs with the agent identity for on-behalf of user scenario var usersOnBehalfOfUser = await graphServiceClient.Users .GetAsync(r => r.Options.WithAuthenticationOptions(options => { options.WithAgentIdentity(agentIdentity); options.RequestAppToken = false; // False to show it's on-behalf of user }));Pro identity uživatelského účtu agenta můžete zadat buď hlavní název uživatele (UPN) nebo identitu objektu (OID), abyste pomocí metody identifikovali uživatelský účet
WithAgentUserIdentityagenta.using Microsoft.Graph; using Microsoft.Identity.Web; // Get the GraphServiceClient GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>(); string agentIdentity = "agent-identity-guid"; // Call Microsoft Graph APIs with the agent's user account identity using UPN string userUpn = "user-upn"; var me = await graphServiceClient.Me .GetAsync(r => r.Options.WithAuthenticationOptions(options => options.WithAgentUserIdentity(agentIdentity, userUpn))); // Or using OID string userOid = "user-object-id"; var meByOid = await graphServiceClient.Me .GetAsync(r => r.Options.WithAuthenticationOptions(options => options.WithAgentUserIdentity(agentIdentity, userOid)));