Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie eine Microsoft Graph-API von einem Agent mithilfe von Agentidentitäten oder dem Benutzerkonto eines Agents aufrufen.
Um eine API von einem Agent aufzurufen, müssen Sie ein Zugriffstoken abrufen, das der Agent verwenden kann, um sich selbst bei der API zu authentifizieren. Wir empfehlen die Verwendung des Microsoft.Identity.Web SDK für .NET zum Aufrufen Ihrer Web-APIs. Dieses SDK vereinfacht den Prozess des Abrufens und Validierens von Token. Verwenden Sie für andere Sprachen das Microsoft Entra-Agent-SDK für die Agent-ID.
Voraussetzungen
- Eine Agentidentität mit entsprechenden Berechtigungen zum Aufrufen der Ziel-API. Sie benötigen einen Benutzer für den On-Behalf-of-Flow.
- Das Benutzerkonto eines Agents mit den entsprechenden Berechtigungen zum Aufrufen der Ziel-API.
Aufrufen einer Microsoft Graph-API
Installieren Sie den Microsoft.Identity.Web.GraphServiceClient , der die Authentifizierung für das Graph SDK und das Microsoft.Identity.Web.AgentIdentities-Paket verarbeitet, um Unterstützung für Agentidentitäten hinzuzufügen.
dotnet add package Microsoft.Identity.Web.GraphServiceClient dotnet add package Microsoft.Identity.Web.AgentIdentitiesFügen Sie die Unterstützung für Microsoft Graph- und Agentidentitäten in Ihrer Dienstsammlung hinzu.
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();Konfigurieren Von Graph- und Agent-Identitätsoptionen in appsettings.json.
Warnung
Geheime Clientschlüssel sollten aufgrund von Sicherheitsrisiken nicht als Clientanmeldeinformationen in Produktionsumgebungen für Agentidentitäts-Blueprints verwendet werden. Verwenden Sie stattdessen sicherere Authentifizierungsmethoden wie Verbundidentitätsanmeldeinformationen (FIC) mit verwalteten Identitäten oder Clientzertifikaten. Diese Methoden bieten eine verbesserte Sicherheit, da vertrauliche geheime Schlüssel nicht direkt in Ihrer Anwendungskonfiguration gespeichert werden müssen.
{ "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"] } } }Sie können nun das
GraphServiceClientin Ihren Dienst injizieren oder es vom Dienstanbieter abrufen und Microsoft Graph aufrufen.
Bei Agentidentitäten können Sie entweder ein Nur-App-Token (autonome Agents) oder ein Benutzertoken (interaktive Agents) mithilfe der
WithAgentIdentityMethode erwerben. Legen Sie für Nur-App-Token dieRequestAppTokenEigenschaft auftrue. Für im Auftrag eines Benutzers delegierte Token legen Sie dieRequestAppTokenEigenschaft nicht fest oder legen Sie sie explizit auffalse.// 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 die Benutzerkontoidentitäten des Agents können Sie entweder den Benutzerprinzipalnamen (User Principal Name, UPN) oder die Objektidentität (Object Identity, OID) angeben, um das Benutzerkonto des Agents mithilfe der
WithAgentUserIdentityMethode zu identifizieren.// 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)));