CommunityEscrita e Ediçãogithub.com

microsoft/azure-identity-dotnet

Biblioteca de autenticação Azure Identity para .NET. Usada para DefaultAzureCredential, identidade gerenciada, service principals e credenciais de desenvolvedor.

O que é azure-identity-dotnet?

A biblioteca Azure Identity para .NET fornece um conjunto de credenciais que simplificam a autenticação em serviços do Azure usando Microsoft Entra ID. Ela oferece uma cadeia de credenciais flexível, começando com a `DefaultAzureCredential`, que tenta vários métodos de autenticação em ordem, ideal para ambientes de desenvolvimento a produção. A biblioteca suporta diversos tipos de credenciais, como `ManagedIdentityCredential` para ambientes hospedados no Azure, `ClientSecretCredential` e `ClientCertificateCredential` para service principals, e várias credenciais de desenvolvedor como `AzureCliCredential` e `InteractiveBrowserCredential`. É amplamente utilizada em aplicações .NET que consomem serviços Azure, como Azure Storage, Key Vault e bancos de dados, funcionando perfeitamente com ASP.NET Core via injeção de dependência. Sua implementação é thread-safe e oferece opções de personalização, como exclusão de métodos específicos na cadeia de credenciais e configuração de políticas de repetição. A Azure Identity .NET é a base para autenticação segura e simplificada em aplicações .NET que interagem com o ecossistema Azure.

Funciona com~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 Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Biblioteca Azure Identity para .NET

Biblioteca de autenticação para clientes do SDK do Azure usando Microsoft Entra ID.

Instalação

dotnet add package Azure.Identity

# Para integração com ASP.NET Core
dotnet add package Microsoft.Extensions.Azure

# Para autenticação intermediada e suporte à credencial do Visual Studio Code
dotnet add package Azure.Identity.Broker

Variáveis de Ambiente

Service Principal com Segredo

AZURE_CLIENT_ID=<id-do-cliente-aplicacao>
AZURE_TENANT_ID=<id-do-diretorio-tenant>
AZURE_CLIENT_SECRET=<valor-do-segredo-cliente>

Service Principal com Certificado

AZURE_CLIENT_ID=<id-do-cliente-aplicacao>
AZURE_TENANT_ID=<id-do-diretorio-tenant>
AZURE_CLIENT_CERTIFICATE_PATH=<caminho-para-pfx-ou-pem>
AZURE_CLIENT_CERTIFICATE_PASSWORD=<senha-do-certificado>  # Opcional

Identidade Gerenciada

AZURE_CLIENT_ID=<id-do-cliente-da-identidade-gerenciada-atribuida-pelo-usuario>  # Apenas para identidade atribuída pelo usuário

DefaultAzureCredential

A credencial recomendada para a maioria dos cenários. Tenta vários métodos de autenticação em ordem. Consulte a visão geral do DefaultAzureCredential para a ordem atual da cadeia de credenciais e valores padrão.

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 com Injeção de Dependência

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 padrão
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Personalizando o DefaultAzureCredential

var credential = new DefaultAzureCredential(
    new DefaultAzureCredentialOptions
    {
        ExcludeEnvironmentCredential = true,
        ExcludeManagedIdentityCredential = false,
        ExcludeVisualStudioCredential = false,
        ExcludeAzureCliCredential = false,
        ExcludeInteractiveBrowserCredential = false, // Habilita interativo
        TenantId = "<id-do-tenant>",
        ManagedIdentityClientId = "<id-do-cliente-mi-atribuida-pelo-usuario>"
    });

Tipos de Credencial

ManagedIdentityCredential (Produção)

// Identidade gerenciada atribuída pelo sistema
var credential = new ManagedIdentityCredential(ManagedIdentityId.SystemAssigned);

// Atribuída pelo usuário por ID do cliente
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<id-do-cliente>"));

// Atribuída pelo usuário por ID do recurso
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedResourceId("<id-do-recurso>"));

// Atribuída pelo usuário por ID do objeto
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedObjectId("<id-do-objeto>"));

ClientSecretCredential

var credential = new ClientSecretCredential(
    tenantId: "<id-do-tenant>",
    clientId: "<id-do-cliente>",
    clientSecret: "<segredo-do-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-do-tenant>",
    clientId: "<id-do-cliente>",
    certificate);

ChainedTokenCredential (Cadeia Personalizada)

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

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

Credenciais de Desenvolvedor

// 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 Interativo
var credential = new InteractiveBrowserCredential();

Configuração Baseada em Ambiente

// Produção vs Desenvolvimento
TokenCredential credential = builder.Environment.IsProduction()
    ? new ManagedIdentityCredential("<id-do-cliente>")
    : new DefaultAzureCredential();

Nuvens Soberanas

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

// Autoridades disponíveis:
// AzureAuthorityHosts.AzurePublicCloud (padrão)
// AzureAuthorityHosts.AzureGovernment
// AzureAuthorityHosts.AzureChina

Referência de Tipos de Credencial

CategoriaCredencialPropósito
CadeiasDefaultAzureCredentialCadeia pré-configurada do desenvolvimento à produção
ChainedTokenCredentialCadeia de credenciais personalizada
Hospedado no AzureManagedIdentityCredentialIdentidade gerenciada do Azure
WorkloadIdentityCredentialIdentidade de carga de trabalho Kubernetes
EnvironmentCredentialVariáveis de ambiente
Service PrincipalClientSecretCredentialID do cliente + segredo
ClientCertificateCredentialID do cliente + certificado
ClientAssertionCredentialDeclaração de cliente assinada
UsuárioInteractiveBrowserCredentialAutenticação baseada em navegador
DeviceCodeCredentialFluxo de código de dispositivo
OnBehalfOfCredentialIdentidade delegada
DesenvolvedorAzureCliCredentialAzure CLI
AzurePowerShellCredentialAzure PowerShell
AzureDeveloperCliCredentialAzure Developer CLI
VisualStudioCredentialVisual Studio

Melhores Práticas

1. Use Credenciais Determinísticas em Produção

// Desenvolvimento
var devCredential = new DefaultAzureCredential();

// Produção - use credencial específica
var prodCredential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<id-do-cliente>"));

2. Reutilize Instâncias de Credencial

// Bom: Instância de credencial única compartilhada entre clientes
var credential = new DefaultAzureCredential();
var blobClient = new BlobServiceClient(blobUri, credential);
var secretClient = new SecretClient(vaultUri, credential);

3. Configure Políticas de Repetição

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

4. Habilite Log para Depuração

using Azure.Core.Diagnostics;

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

Tratamento de Erros

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($"Falha na Autenticação: {e.Message}");
}
catch (CredentialUnavailableException e)
{
    Console.WriteLine($"Credencial Indisponível: {e.Message}");
}

Exceções Principais

ExceçãoDescrição
AuthenticationFailedExceptionExceção base para erros de autenticação
CredentialUnavailableExceptionCredencial não pode autenticar no ambiente atual
AuthenticationRequiredExceptionAutenticação interativa é necessária

Suporte a Identidade Gerenciada

Serviços Azure suportados:

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

Segurança em Threads

Todas as implementações de credencial são thread-safe. Uma única instância de credencial pode ser compartilhada com segurança entre vários clientes e threads.

Pacotes Relacionados

PacotePropósitoInstalação
Azure.IdentityAutenticação (esta biblioteca)dotnet add package Azure.Identity
Microsoft.Extensions.AzureIntegração DIdotnet add package Microsoft.Extensions.Azure
Azure.Identity.BrokerAutenticação intermediadadotnet add package Azure.Identity.Broker

Links de Referência

RecursoURL
Pacote NuGethttps://www.nuget.org/packages/Azure.Identity
Referência da APIhttps://learn.microsoft.com/dotnet/api/azure.identity
Cadeias de Credenciaishttps://aka.ms/azsdk/net/identity/credential-chains
Melhores Práticashttps://learn.microsoft.com/dotnet/azure/sdk/authentication/best-practices
Código Fonte 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.

Habilidades Relacionadas