CommunitySchreiben & Editierengithub.com

microsoft/azure-identity-dotnet

Azure Identity-Bibliothek für .NET. Authentifizierungsbibliothek für Azure SDK-Clients mit Microsoft Entra ID. Verwendung für DefaultAzureCredential, verwaltete Identität, Dienstprinzipale und Entwickleranmeldeinformationen.

Was ist azure-identity-dotnet?

Die Azure Identity-Bibliothek für .NET ist eine umfassende Authentifizierungsbibliothek zur sicheren Anmeldung bei Azure-Diensten über Microsoft Entra ID. Sie bietet Entwicklern eine Vielzahl von Anmeldeinformationstypen, darunter die empfohlene `DefaultAzureCredential`, die automatisch mehrere Authentifizierungsmethoden in einer Kette durchläuft – von lokalen Entwickleranmeldeinformationen (z.B. Azure CLI, Visual Studio) bis hin zu Produktionsmethoden wie `ManagedIdentityCredential` für Azure-gehostete Anwendungen oder `ClientSecretCredential` für Dienstprinzipale mit Geheimnissen. Die Bibliothek unterstützt sowohl einfache Szenarien wie die Authentifizierung von Blob- oder Key Vault-Clients als auch fortgeschrittene Konfigurationen mit `ChainedTokenCredential` für benutzerdefinierte Ketten, ASP.NET Core Dependency Injection sowie die Nutzung von Sovereign Clouds wie Azure Government oder Azure China. Durch die Integration von Umgebungsvariablen und die Möglichkeit, verschiedene Credential-Typen je nach Umgebung (Entwicklung vs. Produktion) auszuwählen, erleichtert Azure.Identity die Entwicklung sicherer und portabler .NET-Anwendungen für die Azure-Cloud.

Funktioniert mit~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 Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Azure Identity-Bibliothek für .NET

Authentifizierungsbibliothek für Azure SDK-Clients mit Microsoft Entra ID.

Installation

dotnet add package Azure.Identity

# Für ASP.NET Core Integration
dotnet add package Microsoft.Extensions.Azure

# Für vermittelte Authentifizierung und Visual Studio Code-Anmeldeinformationsunterstützung
dotnet add package Azure.Identity.Broker

Umgebungsvariablen

Service Principal mit Secret

AZURE_CLIENT_ID=<anwendungs-client-id>
AZURE_TENANT_ID=<verzeichnis-mandanten-id>
AZURE_CLIENT_SECRET=<client-secret-wert>

Service Principal mit Zertifikat

AZURE_CLIENT_ID=<anwendungs-client-id>
AZURE_TENANT_ID=<verzeichnis-mandanten-id>
AZURE_CLIENT_CERTIFICATE_PATH=<pfad-zu-pfx-oder-pem>
AZURE_CLIENT_CERTIFICATE_PASSWORD=<zertifikat-passwort>  # Optional

Verwaltete Identität

AZURE_CLIENT_ID=<client-id-der-benutzerzugewiesenen-verwalteten-identität>  # Nur für benutzerzugewiesene

DefaultAzureCredential

Die empfohlene Anmeldeinformation für die meisten Szenarien. Versucht mehrere Authentifizierungsmethoden in einer bestimmten Reihenfolge. Siehe DefaultAzureCredential Übersicht für die aktuelle Reihenfolge der Anmeldeinformationskette und die Standardeinstellungen.

Grundlegende Verwendung

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 mit Dependency Injection

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"));
    
    // Verwendet standardmäßig DefaultAzureCredential
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Anpassen von DefaultAzureCredential

var credential = new DefaultAzureCredential(
    new DefaultAzureCredentialOptions
    {
        ExcludeEnvironmentCredential = true,
        ExcludeManagedIdentityCredential = false,
        ExcludeVisualStudioCredential = false,
        ExcludeAzureCliCredential = false,
        ExcludeInteractiveBrowserCredential = false, // Interaktiv aktivieren
        TenantId = "<mandanten-id>",
        ManagedIdentityClientId = "<benutzerzugewiesene-mi-client-id>"
    });

Anmeldeinformationstypen

ManagedIdentityCredential (Produktion)

// Systemzugewiesene verwaltete Identität
var credential = new ManagedIdentityCredential(ManagedIdentityId.SystemAssigned);

// Benutzerzugewiesen nach Client-ID
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<client-id>"));

// Benutzerzugewiesen nach Ressourcen-ID
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedResourceId("<ressourcen-id>"));

// Benutzerzugewiesen nach Objekt-ID
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedObjectId("<objekt-id>"));

ClientSecretCredential

var credential = new ClientSecretCredential(
    tenantId: "<mandanten-id>",
    clientId: "<client-id>",
    clientSecret: "<client-secret>");

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

ClientCertificateCredential

var certificate = X509CertificateLoader.LoadCertificateFromFile("MyCertificate.pfx");
var credential = new ClientCertificateCredential(
    tenantId: "<mandanten-id>",
    clientId: "<client-id>",
    certificate);

ChainedTokenCredential (Benutzerdefinierte Kette)

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

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

Entwicklungsanmeldeinformationen

// 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();

// Interaktiver Browser
var credential = new InteractiveBrowserCredential();

Umgebungsbasierte Konfiguration

// Produktion vs. Entwicklung
TokenCredential credential = builder.Environment.IsProduction()
    ? new ManagedIdentityCredential("<client-id>")
    : new DefaultAzureCredential();

Sovereign Clouds

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

// Verfügbare Authority Hosts:
// AzureAuthorityHosts.AzurePublicCloud (Standard)
// AzureAuthorityHosts.AzureGovernment
// AzureAuthorityHosts.AzureChina

Referenz der Anmeldeinformationstypen

KategorieAnmeldeinformationZweck
KettenDefaultAzureCredentialVorkonfigurierte Kette für Entwicklung bis Produktion
ChainedTokenCredentialBenutzerdefinierte Anmeldeinformationskette
Azure-gehostetManagedIdentityCredentialVerwaltete Azure-Identität
WorkloadIdentityCredentialKubernetes-Workload-Identität
EnvironmentCredentialUmgebungsvariablen
Service PrincipalClientSecretCredentialClient-ID + Secret
ClientCertificateCredentialClient-ID + Zertifikat
ClientAssertionCredentialSignierte Client-Assertion
BenutzerInteractiveBrowserCredentialBrowserbasierte Authentifizierung
DeviceCodeCredentialGerätecode-Flow
OnBehalfOfCredentialDelegierte Identität
EntwicklerAzureCliCredentialAzure CLI
AzurePowerShellCredentialAzure PowerShell
AzureDeveloperCliCredentialAzure Developer CLI
VisualStudioCredentialVisual Studio

Best Practices

1. Deterministische Anmeldeinformationen in der Produktion verwenden

// Entwicklung
var devCredential = new DefaultAzureCredential();

// Produktion - spezifische Anmeldeinformationen verwenden
var prodCredential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<client-id>"));

2. Instanzen von Anmeldeinformationen wiederverwenden

// Gut: Einzelne Instanz von Anmeldeinformationen wird für mehrere Clients gemeinsam genutzt
var credential = new DefaultAzureCredential();
var blobClient = new BlobServiceClient(blobUri, credential);
var secretClient = new SecretClient(vaultUri, credential);

3. Wiederholungsrichtlinien konfigurieren

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

4. Protokollierung für die Fehlersuche aktivieren

using Azure.Core.Diagnostics;

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

Fehlerbehandlung

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($"Authentifizierung fehlgeschlagen: {e.Message}");
}
catch (CredentialUnavailableException e)
{
    Console.WriteLine($"Anmeldeinformation nicht verfügbar: {e.Message}");
}

Wichtige Ausnahmen

AusnahmeBeschreibung
AuthenticationFailedExceptionBasisausnahme für Authentifizierungsfehler
CredentialUnavailableExceptionAnmeldeinformation kann in der aktuellen Umgebung nicht authentifizieren
AuthenticationRequiredExceptionInteraktive Authentifizierung erforderlich

Unterstützung für verwaltete Identität

Unterstützte Azure-Dienste:

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

Thread-Sicherheit

Alle Implementierungen von Anmeldeinformationen sind threadsicher. Eine einzelne Instanz von Anmeldeinformationen kann sicher für mehrere Clients und Threads gemeinsam genutzt werden.

Verwandte Pakete

PaketZweckInstallation
Azure.IdentityAuthentifizierung (diese Bibliothek)dotnet add package Azure.Identity
Microsoft.Extensions.AzureDI-Integrationdotnet add package Microsoft.Extensions.Azure
Azure.Identity.BrokerVermittelte Authentifizierungdotnet add package Azure.Identity.Broker

Referenzlinks

RessourceURL
NuGet-Pakethttps://www.nuget.org/packages/Azure.Identity
API-Referenzhttps://learn.microsoft.com/dotnet/api/azure.identity
Anmeldeinformationskettenhttps://aka.ms/azsdk/net/identity/credential-chains
Best Practiceshttps://learn.microsoft.com/dotnet/azure/sdk/authentication/best-practices
GitHub-Quellehttps://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.

Verwandte Skills