CommunityRedacción y edicióngithub.com

microsoft/azure-identity-dotnet

Librería de identidad de Azure para .NET. Biblioteca de autenticación para clientes de Azure SDK con Microsoft Entra ID. Útil para DefaultAzureCredential, identidad administrada, principales de servicio y credenciales de desarrollador. Disparadores: "Azure Identity", "DefaultAzureCredential", "ManagedIdentityCredential", "ClientSecretCredential", "authentication .NET", "Azure auth", "credential chain".

¿Qué es azure-identity-dotnet?

Esta habilidad es la librería Azure.Identity para .NET, diseñada para autenticar aplicaciones y servicios en Azure mediante Microsoft Entra ID. Proporciona múltiples tipos de credenciales como DefaultAzureCredential, ManagedIdentityCredential y ClientSecretCredential, permitiendo desde el desarrollo local hasta la producción en Azure. Es compatible con Azure App Service, Azure Functions, Azure Kubernetes Service y muchos otros servicios de Azure. La recomendación principal es usar DefaultAzureCredential para la mayoría de los escenarios, ya que intenta automáticamente varios métodos de autenticación en orden, incluyendo variables de entorno, identidad administrada, Azure CLI y Visual Studio. La habilidad incluye instrucciones detalladas de instalación, configuración de variables de entorno, ejemplos de código para cada tipo de credencial, integración con ASP.NET Core mediante inyección de dependencias, manejo de errores con excepciones específicas, y mejores prácticas para entornos productivos como la reutilización de instancias de credenciales y la configuración de reintentos.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/microsoft/agent-skills/tree/main/.github/plugins/azure-sdk-dotnet/skills/azure-identity-dotnet

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Librería Azure Identity para .NET

Biblioteca de autenticación para clientes de Azure SDK que usa Microsoft Entra ID.

Instalación

dotnet add package Azure.Identity

# Para integración con ASP.NET Core
dotnet add package Microsoft.Extensions.Azure

# Para autenticación intermediada y soporte de credenciales de Visual Studio Code
dotnet add package Azure.Identity.Broker

Variables de Entorno

Principal de Servicio con Secreto

AZURE_CLIENT_ID=<id-de-cliente-de-aplicación>
AZURE_TENANT_ID=<id-de-inquilino-de-directorio>
AZURE_CLIENT_SECRET=<valor-del-secreto-de-cliente>

Principal de Servicio con Certificado

AZURE_CLIENT_ID=<id-de-cliente-de-aplicación>
AZURE_TENANT_ID=<id-de-inquilino-de-directorio>
AZURE_CLIENT_CERTIFICATE_PATH=<ruta-al-pfx-o-pem>
AZURE_CLIENT_CERTIFICATE_PASSWORD=<contraseña-del-certificado>  # Opcional

Identidad Administrada

AZURE_CLIENT_ID=<id-de-cliente-de-identidad-administrada-asignada-por-usuario>  # Solo para asignada por usuario

DefaultAzureCredential

La credencial recomendada para la mayoría de los escenarios. Intenta varios métodos de autenticación en orden. Consulte Descripción general de DefaultAzureCredential para conocer el orden actual de la cadena de credenciales y los valores predeterminados.

Uso Básico

using Azure.Identity;
using Azure.Storage.Blobs;

var credential = new DefaultAzureCredential();
var blobClient = new BlobServiceClient(
    new Uri("https://myaccount.blob.core.windows.net"),
    credential);

ASP.NET Core con Inyección de Dependencias

using Azure.Identity;
using Microsoft.Extensions.Azure;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://myaccount.blob.core.windows.net"));
    clientBuilder.AddSecretClient(
        new Uri("https://myvault.vault.azure.net"));
    
    // Usa DefaultAzureCredential por defecto
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Personalizando DefaultAzureCredential

var credential = new DefaultAzureCredential(
    new DefaultAzureCredentialOptions
    {
        ExcludeEnvironmentCredential = true,
        ExcludeManagedIdentityCredential = false,
        ExcludeVisualStudioCredential = false,
        ExcludeAzureCliCredential = false,
        ExcludeInteractiveBrowserCredential = false, // Habilitar interactivo
        TenantId = "<id-del-inquilino>",
        ManagedIdentityClientId = "<id-de-cliente-mi-asignada-por-usuario>"
    });

Tipos de Credenciales

ManagedIdentityCredential (Producción)

// Identidad administrada asignada por el sistema
var credential = new ManagedIdentityCredential(ManagedIdentityId.SystemAssigned);

// Asignada por usuario mediante ID de cliente
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<id-de-cliente>"));

// Asignada por usuario mediante ID de recurso
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedResourceId("<id-de-recurso>"));

// Asignada por usuario mediante ID de objeto
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedObjectId("<id-de-objeto>"));

ClientSecretCredential

var credential = new ClientSecretCredential(
    tenantId: "<id-del-inquilino>",
    clientId: "<id-de-cliente>",
    clientSecret: "<secreto-de-cliente>");

var client = new SecretClient(
    new Uri("https://myvault.vault.azure.net"),
    credential);

ClientCertificateCredential

var certificate = X509CertificateLoader.LoadCertificateFromFile("MyCertificate.pfx");
var credential = new ClientCertificateCredential(
    tenantId: "<id-del-inquilino>",
    clientId: "<id-de-cliente>",
    certificate);

ChainedTokenCredential (Cadena Personalizada)

var credential = new ChainedTokenCredential(
    new ManagedIdentityCredential(),
    new AzureCliCredential());

var client = new SecretClient(
    new Uri("https://myvault.vault.azure.net"),
    credential);

Credenciales de Desarrollador

// Azure CLI
var credential = new AzureCliCredential();

// Azure PowerShell
var credential = new AzurePowerShellCredential();

// Azure Developer CLI (azd)
var credential = new AzureDeveloperCliCredential();

// Visual Studio
var credential = new VisualStudioCredential();

// Navegador Interactivo
var credential = new InteractiveBrowserCredential();

Configuración Basada en Entorno

// Producción vs Desarrollo
TokenCredential credential = builder.Environment.IsProduction()
    ? new ManagedIdentityCredential("<id-de-cliente>")
    : new DefaultAzureCredential();

Nubes Soberanas

var credential = new DefaultAzureCredential(
    new DefaultAzureCredentialOptions
    {
        AuthorityHost = AzureAuthorityHosts.AzureGovernment
    });

// Hosts de autoridad disponibles:
// AzureAuthorityHosts.AzurePublicCloud (predeterminado)
// AzureAuthorityHosts.AzureGovernment
// AzureAuthorityHosts.AzureChina

Referencia de Tipos de Credenciales

CategoríaCredencialPropósito
CadenasDefaultAzureCredentialCadena preconfigurada para desarrollo a producción
ChainedTokenCredentialCadena de credenciales personalizada
Alojadas en AzureManagedIdentityCredentialIdentidad administrada de Azure
WorkloadIdentityCredentialIdentidad de carga de trabajo de Kubernetes
EnvironmentCredentialVariables de entorno
Principal de ServicioClientSecretCredentialID de cliente + secreto
ClientCertificateCredentialID de cliente + certificado
ClientAssertionCredentialAserción de cliente firmada
UsuarioInteractiveBrowserCredentialAutenticación basada en navegador
DeviceCodeCredentialFlujo de código de dispositivo
OnBehalfOfCredentialIdentidad delegada
DesarrolladorAzureCliCredentialAzure CLI
AzurePowerShellCredentialAzure PowerShell
AzureDeveloperCliCredentialAzure Developer CLI
VisualStudioCredentialVisual Studio

Mejores Prácticas

1. Usar Credenciales Determinísticas en Producción

// Desarrollo
var devCredential = new DefaultAzureCredential();

// Producción - usar credencial específica
var prodCredential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<id-de-cliente>"));

2. Reutilizar Instancias de Credenciales

// Bueno: Instancia única de credencial compartida entre clientes
var credential = new DefaultAzureCredential();
var blobClient = new BlobServiceClient(blobUri, credential);
var secretClient = new SecretClient(vaultUri, credential);

3. Configurar Políticas de Reintento

var options = new ManagedIdentityCredentialOptions(
    ManagedIdentityId.FromUserAssignedClientId(clientId))
{
    Retry =
    {
        MaxRetries = 3,
        Delay = TimeSpan.FromSeconds(0.5),
    }
};
var credential = new ManagedIdentityCredential(options);

4. Habilitar Registro para Depuración

using Azure.Core.Diagnostics;

using AzureEventSourceListener listener = new((args, message) =>
{
    if (args is { EventSource.Name: "Azure-Identity" })
    {
        Console.WriteLine(message);
    }
}, EventLevel.LogAlways);

Manejo de Errores

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

var client = new SecretClient(
    new Uri("https://myvault.vault.azure.net"),
    new DefaultAzureCredential());

 try
{
    KeyVaultSecret secret = await client.GetSecretAsync("secret1");
}
catch (AuthenticationFailedException e)
{
    Console.WriteLine($"Autenticación Fallida: {e.Message}");
}
catch (CredentialUnavailableException e)
{
    Console.WriteLine($"Credencial No Disponible: {e.Message}");
}

Excepciones Clave

ExcepciónDescripción
AuthenticationFailedExceptionExcepción base para errores de autenticación
CredentialUnavailableExceptionLa credencial no puede autenticar en el entorno actual
AuthenticationRequiredExceptionSe requiere autenticación interactiva

Soporte de Identidad Administrada

Servicios de Azure compatibles:

  • Azure App Service y Azure Functions
  • Azure Arc
  • Azure Cloud Shell
  • Azure Kubernetes Service (AKS)
  • Azure Service Fabric
  • Azure Virtual Machines
  • Azure Virtual Machine Scale Sets

Seguridad para Hilos

Todas las implementaciones de credenciales son seguras para hilos. Una sola instancia de credencial puede compartirse de forma segura entre múltiples clientes y hilos.

Paquetes Relacionados

PaquetePropósitoInstalación
Azure.IdentityAutenticación (esta librería)dotnet add package Azure.Identity
Microsoft.Extensions.AzureIntegración DIdotnet add package Microsoft.Extensions.Azure
Azure.Identity.BrokerAutenticación intermediadadotnet add package Azure.Identity.Broker

Enlaces de Referencia

RecursoURL
Paquete NuGethttps://www.nuget.org/packages/Azure.Identity
Referencia de APIhttps://learn.microsoft.com/dotnet/api/azure.identity
Cadenas de Credencialeshttps://aka.ms/azsdk/net/identity/credential-chains
Mejores Prácticashttps://learn.microsoft.com/dotnet/azure/sdk/authentication/best-practices
Código Fuente en GitHubhttps://github.com/Azure/azure-sdk-for-net/tree/main/sdk/identity/Azure.Identity

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

microsoft/azure-ai-agents-persistent-dotnet

Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: "PersistentAgentsClient", "persistent agents", "agent threads", "agent runs", "streaming agents", "function calling agents .NET".

microsoft/azure-ai-document-intelligence-dotnet

Azure AI Document Intelligence SDK for .NET. Extract text, tables, and structured data from documents using prebuilt and custom models. Use for invoice processing, receipt extraction, ID document analysis, and custom document models. Triggers: "Document Intelligence", "DocumentIntelligenceClient", "form recognizer", "invoice extraction", "receipt OCR", "document analysis .NET".

microsoft/azure-ai-openai-dotnet

Azure OpenAI SDK for .NET. Client library for Azure OpenAI and OpenAI services. Use for chat completions, embeddings, image generation, audio transcription, and assistants. Triggers: "Azure OpenAI", "AzureOpenAIClient", "ChatClient", "chat completions .NET", "GPT-4", "embeddings", "DALL-E", "Whisper", "OpenAI .NET".

microsoft/azure-ai-projects-dotnet

Azure AI Projects SDK for .NET. High-level client for Azure AI Foundry projects including agents, connections, datasets, deployments, evaluations, and indexes. Use for AI Foundry project management, versioned agents, and orchestration. Triggers: "AI Projects", "AIProjectClient", "Foundry project", "versioned agents", "evaluations", "datasets", "connections", "deployments .NET".

microsoft/azure-ai-voicelive-dotnet

Azure AI Voice Live SDK for .NET. Build real-time voice AI applications with bidirectional WebSocket communication. Use for voice assistants, conversational AI, real-time speech-to-speech, and voice-enabled chatbots. Triggers: "voice live", "real-time voice", "VoiceLiveClient", "VoiceLiveSession", "voice assistant .NET", "bidirectional audio", "speech-to-speech".

microsoft/azure-eventgrid-dotnet

Azure Event Grid SDK for .NET. Client library for publishing and consuming events with Azure Event Grid. Use for event-driven architectures, pub/sub messaging, CloudEvents, and EventGridEvents. Triggers: "Event Grid", "EventGridPublisherClient", "CloudEvent", "EventGridEvent", "publish events .NET", "event-driven", "pub/sub".

microsoft/azure-eventhub-dotnet

Azure Event Hubs SDK for .NET. Use for high-throughput event streaming: sending events (EventHubProducerClient, EventHubBufferedProducerClient), receiving events (EventProcessorClient with checkpointing), partition management, and real-time data ingestion. Triggers: "Event Hubs", "event streaming", "EventHubProducerClient", "EventProcessorClient", "send events", "receive events", "checkpointing", "partition".

microsoft/azure-kusto-graph

Build and query Kusto graphs from natural language. Covers transient graphs (make-graph), persistent graph models/snapshots, pattern matching (graph-match), shortest paths, connected components, and graph-to-table export. Generates the edges-first thinking: define edges, define node lookups, union, make-graph. WHEN: make-graph, graph-match, graph-shortest-paths, graph-to-table, graph-mark-components, persistent graph, graph model, graph snapshot, build a graph from data, find paths between nodes, pattern matching in graph, connected components, transient graph, Kusto graph, KQL graph.

microsoft/azure-kusto-irql

Compose IRQL (Incident Response Query Language) queries for Kusto cybersecurity investigations. Translates natural language hunting questions into composable IRQL pipelines using Get_*, Extract_*, and Enrich_* functions. WHEN: IRQL query, security hunt, threat hunting KQL, incident response query, compose hunting pipeline, failed logins, phishing investigation, lateral movement, process execution, file creation events.

microsoft/azure-kusto-irql-graph

Apply IRQL graph functions to KQL or IRQL query results for Kusto Explorer visualization. Generates Lift_To_Graph mappings and composes Graph_Render_View, Graph_Fold_By_Property, Extract_Node_*, Enrich_Node_*, and Enrich_Graph_* calls. Accepts a supplied query or limited basic natural-language source request; it is not a general natural-language-to-KQL/IRQL skill. WHEN: Lift_To_Graph, Graph_Render_View, Graph_Fold_By_Property, IRQL graph enrichment, graph mapping for existing query results, icon-decorated graph, fold graph nodes. Use azure-kusto-graph for native make-graph analysis, graph-match, shortest paths, components, or persistent graphs.

microsoft/azure-local

Plan, deploy, operate, and troubleshoot Azure Local (formerly Azure Stack HCI): sizing and prerequisites, Arc registration, lifecycle updates, workloads (Azure Local VMs, AKS on Azure Local, images, disks, logical networks), SDN and network security, and failure triage — starting read-only and confirming before risky changes. WHEN: Azure Local, Azure Stack HCI, Arc resource bridge, custom location, Azure Local VM, Arc VM, AKS on Azure Local, AKS hybrid, SDN, Lifecycle Manager, Azure Local update, disconnected site.

microsoft/azure-local-multi-rack

Plan, deploy, operate, and troubleshoot multi-rack (rack scale) deployments of Azure Local — preintegrated racks scaling to hundreds of machines, built on Network Fabric Controller, Cluster Manager, SAN storage, and managed network fabric. Use for the Microsoft.NetworkCloud and Microsoft.ManagedNetworkFabric control plane. NOT for standard 1-16 node Azure Local, and NOT for rack-aware clusters (two racks as availability zones, up to 8 nodes, synchronous replication) — those are standard scale. WHEN: multi-rack, rack scale Azure Local, aggregation rack, compute rack, Network Fabric Controller, NFC, Cluster Manager, network fabric, isolation domain, az networkcloud, az networkfabric, multi-rack logical network, multi-rack Arc VM.

Skills relacionados