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 makale, aracınız üzerinden Azure hizmetlerini çağırmanıza yardımcı olur. Aracı kimliklerini kullanarak Azure Depolama veya Azure Key Vault gibi Azure hizmetlerinde kimlik doğrulaması yapmak için MicrosoftIdentityTokenCredential sınıfını Microsoft.Identity.Web.Azure kütüphanesinden kullanın.
MicrosoftIdentityTokenCredential sınıfı, Azure SDK TokenCredential arabirimini uygulayarak Microsoft.Identity.Web ve Azure SDK istemcileri arasında sorunsuz tümleşim sağlar.
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, aracı kimliği için Microsoft Entra aracı SDK'sını 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ı.
Uygulama adımları
Azure tümleştirme paketini ve Microsoft.Identity.Web.AgentIdentities paketini, aracı kimliklerine destek eklemek için yükleyin.
dotnet add package Microsoft.Identity.Web.Azure dotnet add package Microsoft.Identity.Web.AgentIdentitiesKullanmak istediğiniz Azure SDK paketini yükleyin, örneğin, Azure Depolama:
dotnet add package Azure.Storage.BlobsHizmetlerinizi Azure belirteç kimlik bilgisi desteği ekleyecek şekilde yapılandırın:
using Microsoft.Identity.Web; var builder = WebApplication.CreateBuilder(args); // Add authentication builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd")) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches(); // Add Azure token credential support builder.Services.AddMicrosoftIdentityAzureTokenCredential(); builder.Services.AddControllersWithViews(); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();Azure belirteç kimlik bilgisi seçeneklerini appsettings.json dosyasında yapılandırma
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>", "ClientId": "<agent-blueprint-id>", // Other client creedentials available. See <https://aka.ms/ms-id-web/client-credentials> "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "your-client-secret" } ] } }Hizmet sağlayıcısından token kimlik bilgisi alın ve Azure SDK istemcileriyle kullanın.
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.Identity.Web; public class AgentService { private readonly MicrosoftIdentityTokenCredential _credential; public AgentService(MicrosoftIdentityTokenCredential credential) { _credential = credential; } // Call Azure service with the agent identity for app only scenario public async Task<List<string>> ListBlobsForAgentAsync(string agentIdentity) { // Configure for agent identity string agentIdentity = "agent-identity-guid"; _credential.Options.WithAgentIdentity(agentIdentity); _credential.Options.RequestAppToken = true; var blobClient = new BlobServiceClient( new Uri("https://myaccount.blob.core.windows.net"), _credential); var container = blobClient.GetBlobContainerClient("agent-data"); var blobs = new List<string>(); await foreach (var blob in container.GetBlobsAsync()) { blobs.Add(blob.Name); } return blobs; } // Call Azure service with the agent identity for on-behalf of user scenario public async Task<List<string>> ListBlobsForAgentAsync(string agentIdentity) { // Configure for agent identity var blobClient = new BlobServiceClient( new Uri("https://myaccount.blob.core.windows.net")); var container = blobClient.GetBlobContainerClient("agent-data"); var blobs = new List<string>(); await foreach (var blob in container.GetBlobsAsync()) { blobs.Add(blob.Name); } return blobs; } }Ayrıca bir aracının kullanıcı hesabı için bir jeton alabilirsiniz. Bunu yapmak için, aracının kullanıcı hesabını tanımlamak için Kullanıcı Asıl Adı (UPN) veya Nesne Kimliği (OID) kullanabilirsiniz.
Nesne kimliği için:
using Microsoft.Identity.Web; public class AgentService { private readonly MicrosoftIdentityTokenCredential _credential; public AgentService(MicrosoftIdentityTokenCredential credential) { _credential = credential; } // Use object ID to identify the agent's user account public async Task<List<string>> ListBlobsForAgentAsync(string agentIdentity) { // Configure for agent identity string agentIdentity = "agent-identity-guid"; string userOid = "user-object-id"; _credential.Options.WithAgentUserIdentity(agentIdentity, userOid); var blobClient = new BlobServiceClient( new Uri("https://myaccount.blob.core.windows.net"), _credential); var container = blobClient.GetBlobContainerClient("agent-data"); var blobs = new List<string>(); await foreach (var blob in container.GetBlobsAsync()) { blobs.Add(blob.Name); } return blobs; } // Use UPN to identify the agent's user account\ public async Task<List<string>> ListBlobsForAgentAsync(string agentIdentity) { // Configure for agent identity string agentIdentity = "agent-identity-guid"; string userUpn = "user@contoso.com"; _credential.Options.WithAgentUserIdentity(agentIdentity, userUpn); var blobClient = new BlobServiceClient( new Uri("https://myaccount.blob.core.windows.net"), _credential); var container = blobClient.GetBlobContainerClient("agent-data"); var blobs = new List<string>(); await foreach (var blob in container.GetBlobsAsync()) { blobs.Add(blob.Name); } return blobs; } }