Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du anropar en Microsoft-Graph API från en agent med hjälp av agentidentiteter eller en agent användarkonto.
Om du vill anropa ett API från en agent måste du hämta en åtkomsttoken som agenten kan använda för att autentisera sig själv till API:et. Vi rekommenderar att du använder Microsoft. Identity.Web SDK för .NET för att anropa dina webb-API:er. Det här SDK:t förenklar processen för att hämta och validera token. För andra språk använder du Microsoft Entra agent-SDK för agent-ID.
Förutsättningar
- En agentidentitet med lämpliga behörigheter för att anropa mål-API:et. Du behöver en användare för flödet 'on-behalf-of'.
- En agents användarkonto med rätt behörighet att anropa mål-API:et.
Anropa Microsoft Graph API
Installera Microsoft. Identity.Web.GraphServiceClient som hanterar autentisering för Graph SDK och Microsoft. Identity.Web.AgentIdentiteter paket för att lägga till stöd för agentidentiteter.
dotnet add package Microsoft.Identity.Web.GraphServiceClient dotnet add package Microsoft.Identity.Web.AgentIdentitiesLägg till stöd för Microsoft Graph- och agentidentiteter i din tjänstsamling.
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();Konfigurera graph- och agentidentitetsalternativ i appsettings.json.
Varning
Klienthemligheter ska inte användas som klientautentiseringsuppgifter i produktionsmiljöer för agentidentitetsritningar på grund av säkerhetsrisker. Använd i stället säkrare autentiseringsmetoder som federerade autentiseringsuppgifter (FIC) med hanterade identiteter eller klientcertifikat. Dessa metoder ger förbättrad säkerhet genom att eliminera behovet av att lagra känsliga hemligheter direkt i programkonfigurationen.
{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "<my-test-tenant>", "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"] } } }Nu kan du hämta
GraphServiceClientgenom att mata in den i din tjänst eller från tjänstleverantören och anropa Microsoft Graph.
För agentidentiteter kan du hämta antingen enbart apptoken (autonoma agenter) eller en token för användares räkning (interaktiva agenter) med hjälp av metoden
WithAgentIdentity. För endast apptoken anger duRequestAppTokenegenskapen tilltrue. För delegerade token som används på användarens vägnar bör du inte ange egenskapen eller uttryckligen ange den tillRequestAppToken.// 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 applications = await graphServiceClient.Applications .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 applications = await graphServiceClient.Applications .GetAsync(r => r.Options.WithAuthenticationOptions(options => { options.WithAgentIdentity(agentIdentity); options.RequestAppToken = false; // False to show it's on-behalf of user }));För agentens användarkontoidentiteter kan du ange antingen användarens huvudnamn (UPN) eller objektidentitet (OID) för att identifiera agentens användarkonto med hjälp
WithAgentUserIdentityav metoden.// 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 me = await graphServiceClient.Me .GetAsync(r => r.Options.WithAuthenticationOptions(options => options.WithAgentUserIdentity(agentIdentity, userOid)));