Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, bir aracının kimlikleri veya kullanıcı hesabını kullanarak Microsoft Graph API çağırmanın nasıl yapılacağı açıklanmaktadır.
Bir aracıdan API çağırmak için, aracının API'de kimliğini doğrulamak için kullanabileceği bir erişim belirteci almanız gerekir. Microsoft.Identity.Web SDK'sını .NET için web API'lerinizi çağırmak üzere kullanmanızı öneririz. Bu SDK, belirteçleri alma ve doğrulama işlemini basitleştirir. Diğer diller için Microsoft Entra ID Kimlik Doğrulama SDK'sını (sidecar) kullanın.
Önkoşullar
- Hedef API'yi çağırmak için uygun izinlere sahip bir aracı kimliği. Akış adına işlem için bir kullanıcıya ihtiyacınız vardır.
- Hedef API’yi çağırmak için uygun izinlere sahip bir ajanın kullanıcı hesabı.
Microsoft Graph API çağırma
Microsoft.Identity.Web.GraphServiceClient'ı yükleyin, bu Graph SDK'sı için kimlik doğrulamayı gerçekleştirir ve aracı kimlikleri için destek eklemek amacıyla Microsoft.Identity.Web.AgentIdentities paketini yükleyin.
dotnet add package Microsoft.Identity.Web.GraphServiceClient dotnet add package Microsoft.Identity.Web.AgentIdentitiesHizmet koleksiyonunuza Microsoft Graph ve aracı kimlikleri desteğini ekleyin.
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();appsettings.json'de Graph ve aracı kimliği seçeneklerini yapılandırın.
Uyarı
Güvenlik risklerinden dolayı istemci sırları, ajan kimlik planları için üretim ortamlarında istemci kimlik bilgileri olarak kullanılmamalıdır. Bunun yerine, yönetilen kimliklerle veya istemci sertifikalarıyla federasyon kimlik bilgileri (FIC) gibi daha güvenli kimlik doğrulama yöntemleri kullanın. Bu yöntemler, hassas gizli dizileri doğrudan uygulama yapılandırmanızda depolama gereksinimini ortadan kaldırarak gelişmiş güvenlik sağlar.
{ "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
Yalnızca aracınızın ihtiyaç duyduğu Microsoft Graph izinlerini yapılandırın ve ayarladığınızın
Scopeskod çağrılarınızın Graph kaynaklarıyla eşleştiğinden emin olun. Bu örneklerde veUser.ReadBasic.AllkullanılırUser.Read; diğer kaynakların çağrılması için bunlara karşılık gelen izinler gerekir.Artık
GraphServiceClienthizmetinize veya hizmet sağlayıcısından ekleyebilir ve Microsoft Graph çağırabilirsiniz.
Aracı kimlikleri için
WithAgentIdentityyöntemini kullanarak yalnızca uygulama belirteci için bir belirteç (otonom aracılar) ya da kullanıcı adına bir belirteç (etkileşimli aracılar) alabilirsiniz. Yalnızca uygulama belirteçleri içinRequestAppTokenözelliğinitrueolarak ayarlayın. Kullanıcı adına belirteçler için,RequestAppTokenözelliğini ayarlamayın veyafalseolarak açıkça ayarlayın.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 }));Aracının kullanıcı hesap kimlikleri için,
WithAgentUserIdentityyöntemini kullanarak aracının kullanıcı hesabını tanımlamak adına Kullanıcı Asıl Adı (UPN) veya Nesne Kimliği (OID) belirtebilirsiniz.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)));