[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XENAS6XE4QXH7QW4NAAHM7":3,"skill-same:01M6XENAS6XE4QXH7QW4NAAHM7":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6XENAS6XE4QXH7QW4NAAHM7","azure-identity-dotnet",null,"Azure Identity SDK for .NET. Authentication library for Azure SDK clients using Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and developer credentials.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fazure-identity-dotnet\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"dotnet","identity","azure","azure identity dotnet","credentials","2026","managed","unknown","for","clients","id","service","community","use","azure sdk","sdk","developer","library","authentication","entra id","microsoft","2026-11-10 10:12:30",false,"---\nname: azure-identity-dotnet\ndescription: Azure Identity SDK for .NET. Authentication library for Azure SDK clients using Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and developer credentials.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure.Identity (.NET)\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID (formerly Azure AD).\n\n## Installation\n\n```bash\ndotnet add package Azure.Identity\n\n# For ASP.NET Core\ndotnet add package Microsoft.Extensions.Azure\n\n# For brokered authentication (Windows)\ndotnet add package Azure.Identity.Broker\n```\n\n**Current Versions**: Stable v1.17.1, Preview v1.18.0-beta.2\n\n## Environment Variables\n\n### Service Principal with Secret\n```bash\nAZURE_CLIENT_ID=\u003Capplication-client-id>\nAZURE_TENANT_ID=\u003Cdirectory-tenant-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret-value>\n```\n\n### Service Principal with Certificate\n```bash\nAZURE_CLIENT_ID=\u003Capplication-client-id>\nAZURE_TENANT_ID=\u003Cdirectory-tenant-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u003Cpath-to-pfx-or-pem>\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Ccertificate-password>  # Optional\n```\n\n### Managed Identity\n```bash\nAZURE_CLIENT_ID=\u003Cuser-assigned-managed-identity-client-id>  # Only for user-assigned\n```\n\n## DefaultAzureCredential\n\nThe recommended credential for most scenarios. Tries multiple authentication methods in order:\n\n| Order | Credential | Enabled by Default |\n|-------|------------|-------------------|\n| 1 | EnvironmentCredential | Yes |\n| 2 | WorkloadIdentityCredential | Yes |\n| 3 | ManagedIdentityCredential | Yes |\n| 4 | VisualStudioCredential | Yes |\n| 5 | VisualStudioCodeCredential | Yes |\n| 6 | AzureCliCredential | Yes |\n| 7 | AzurePowerShellCredential | Yes |\n| 8 | AzureDeveloperCliCredential | Yes |\n| 9 | InteractiveBrowserCredential | **No** |\n\n### Basic Usage\n\n```csharp\nusing Azure.Identity;\nusing Azure.Storage.Blobs;\n\nvar credential = new DefaultAzureCredential();\nvar blobClient = new BlobServiceClient(\n    new Uri(\"https:\u002F\u002Fmyaccount.blob.core.windows.net\"),\n    credential);\n```\n\n### ASP.NET Core with Dependency Injection\n\n```csharp\nusing Azure.Identity;\nusing Microsoft.Extensions.Azure;\n\nbuilder.Services.AddAzureClients(clientBuilder =>\n{\n    clientBuilder.AddBlobServiceClient(\n        new Uri(\"https:\u002F\u002Fmyaccount.blob.core.windows.net\"));\n    clientBuilder.AddSecretClient(\n        new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"));\n    \n    \u002F\u002F Uses DefaultAzureCredential by default\n    clientBuilder.UseCredential(new DefaultAzureCredential());\n});\n```\n\n### Customizing DefaultAzureCredential\n\n```csharp\nvar credential = new DefaultAzureCredential(\n    new DefaultAzureCredentialOptions\n    {\n        ExcludeEnvironmentCredential = true,\n        ExcludeManagedIdentityCredential = false,\n        ExcludeVisualStudioCredential = false,\n        ExcludeAzureCliCredential = false,\n        ExcludeInteractiveBrowserCredential = false, \u002F\u002F Enable interactive\n        TenantId = \"\u003Ctenant-id>\",\n        ManagedIdentityClientId = \"\u003Cuser-assigned-mi-client-id>\"\n    });\n```\n\n## Credential Types\n\n### ManagedIdentityCredential (Production)\n\n```csharp\n\u002F\u002F System-assigned managed identity\nvar credential = new ManagedIdentityCredential(ManagedIdentityId.SystemAssigned);\n\n\u002F\u002F User-assigned by client ID\nvar credential = new ManagedIdentityCredential(\n    ManagedIdentityId.FromUserAssignedClientId(\"\u003Cclient-id>\"));\n\n\u002F\u002F User-assigned by resource ID\nvar credential = new ManagedIdentityCredential(\n    ManagedIdentityId.FromUserAssignedResourceId(\"\u003Cresource-id>\"));\n```\n\n### ClientSecretCredential\n\n```csharp\nvar credential = new ClientSecretCredential(\n    tenantId: \"\u003Ctenant-id>\",\n    clientId: \"\u003Cclient-id>\",\n    clientSecret: \"\u003Cclient-secret>\");\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    credential);\n```\n\n### ClientCertificateCredential\n\n```csharp\nvar certificate = X509CertificateLoader.LoadCertificateFromFile(\"MyCertificate.pfx\");\nvar credential = new ClientCertificateCredential(\n    tenantId: \"\u003Ctenant-id>\",\n    clientId: \"\u003Cclient-id>\",\n    certificate);\n```\n\n### ChainedTokenCredential (Custom Chain)\n\n```csharp\nvar credential = new ChainedTokenCredential(\n    new ManagedIdentityCredential(),\n    new AzureCliCredential());\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    credential);\n```\n\n### Developer Credentials\n\n```csharp\n\u002F\u002F Azure CLI\nvar credential = new AzureCliCredential();\n\n\u002F\u002F Azure PowerShell\nvar credential = new AzurePowerShellCredential();\n\n\u002F\u002F Azure Developer CLI (azd)\nvar credential = new AzureDeveloperCliCredential();\n\n\u002F\u002F Visual Studio\nvar credential = new VisualStudioCredential();\n\n\u002F\u002F Interactive Browser\nvar credential = new InteractiveBrowserCredential();\n```\n\n## Environment-Based Configuration\n\n```csharp\n\u002F\u002F Production vs Development\nTokenCredential credential = builder.Environment.IsProduction()\n    ? new ManagedIdentityCredential(\"\u003Cclient-id>\")\n    : new DefaultAzureCredential();\n```\n\n## Sovereign Clouds\n\n```csharp\nvar credential = new DefaultAzureCredential(\n    new DefaultAzureCredentialOptions\n    {\n        AuthorityHost = AzureAuthorityHosts.AzureGovernment\n    });\n\n\u002F\u002F Available authority hosts:\n\u002F\u002F AzureAuthorityHosts.AzurePublicCloud (default)\n\u002F\u002F AzureAuthorityHosts.AzureGovernment\n\u002F\u002F AzureAuthorityHosts.AzureChina\n\u002F\u002F AzureAuthorityHosts.AzureGermany\n```\n\n## Credential Types Reference\n\n| Category | Credential | Purpose |\n|----------|------------|---------|\n| **Chains** | `DefaultAzureCredential` | Preconfigured chain for dev-to-prod |\n| | `ChainedTokenCredential` | Custom credential chain |\n| **Azure-Hosted** | `ManagedIdentityCredential` | Azure managed identity |\n| | `WorkloadIdentityCredential` | Kubernetes workload identity |\n| | `EnvironmentCredential` | Environment variables |\n| **Service Principal** | `ClientSecretCredential` | Client ID + secret |\n| | `ClientCertificateCredential` | Client ID + certificate |\n| | `ClientAssertionCredential` | Signed client assertion |\n| **User** | `InteractiveBrowserCredential` | Browser-based auth |\n| | `DeviceCodeCredential` | Device code flow |\n| | `OnBehalfOfCredential` | Delegated identity |\n| **Developer** | `AzureCliCredential` | Azure CLI |\n| | `AzurePowerShellCredential` | Azure PowerShell |\n| | `AzureDeveloperCliCredential` | Azure Developer CLI |\n| | `VisualStudioCredential` | Visual Studio |\n\n## Best Practices\n\n### 1. Use Deterministic Credentials in Production\n\n```csharp\n\u002F\u002F Development\nvar devCredential = new DefaultAzureCredential();\n\n\u002F\u002F Production - use specific credential\nvar prodCredential = new ManagedIdentityCredential(\"\u003Cclient-id>\");\n```\n\n### 2. Reuse Credential Instances\n\n```csharp\n\u002F\u002F Good: Single credential instance shared across clients\nvar credential = new DefaultAzureCredential();\nvar blobClient = new BlobServiceClient(blobUri, credential);\nvar secretClient = new SecretClient(vaultUri, credential);\n```\n\n### 3. Configure Retry Policies\n\n```csharp\nvar options = new ManagedIdentityCredentialOptions(\n    ManagedIdentityId.FromUserAssignedClientId(clientId))\n{\n    Retry =\n    {\n        MaxRetries = 3,\n        Delay = TimeSpan.FromSeconds(0.5),\n    }\n};\nvar credential = new ManagedIdentityCredential(options);\n```\n\n### 4. Enable Logging for Debugging\n\n```csharp\nusing Azure.Core.Diagnostics;\n\nusing AzureEventSourceListener listener = new((args, message) =>\n{\n    if (args is { EventSource.Name: \"Azure-Identity\" })\n    {\n        Console.WriteLine(message);\n    }\n}, EventLevel.LogAlways);\n```\n\n## Error Handling\n\n```csharp\nusing Azure.Identity;\nusing Azure.Security.KeyVault.Secrets;\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    new DefaultAzureCredential());\n\ntry\n{\n    KeyVaultSecret secret = await client.GetSecretAsync(\"secret1\");\n}\ncatch (AuthenticationFailedException e)\n{\n    Console.WriteLine($\"Authentication Failed: {e.Message}\");\n}\ncatch (CredentialUnavailableException e)\n{\n    Console.WriteLine($\"Credential Unavailable: {e.Message}\");\n}\n```\n\n## Key Exceptions\n\n| Exception | Description |\n|-----------|-------------|\n| `AuthenticationFailedException` | Base exception for authentication errors |\n| `CredentialUnavailableException` | Credential cannot authenticate in current environment |\n| `AuthenticationRequiredException` | Interactive authentication is required |\n\n## Managed Identity Support\n\nSupported Azure services:\n- Azure App Service and Azure Functions\n- Azure Arc\n- Azure Cloud Shell\n- Azure Kubernetes Service (AKS)\n- Azure Service Fabric\n- Azure Virtual Machines\n- Azure Virtual Machine Scale Sets\n\n## Thread Safety\n\nAll credential implementations are thread-safe. A single credential instance can be safely shared across multiple clients and threads.\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.Identity` | Authentication (this SDK) | `dotnet add package Azure.Identity` |\n| `Microsoft.Extensions.Azure` | DI integration | `dotnet add package Microsoft.Extensions.Azure` |\n| `Azure.Identity.Broker` | Brokered auth (Windows) | `dotnet add package Azure.Identity.Broker` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.Identity |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fazure.identity |\n| Credential Chains | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fazure\u002Fsdk\u002Fauthentication\u002Fcredential-chains |\n| Best Practices | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fazure\u002Fsdk\u002Fauthentication\u002Fbest-practices |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fidentity\u002FAzure.Identity |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure.Identity (.NET)\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID (formerly Azure AD).\n\n## Installation\n\n```bash\ndotnet add package Azure.Identity\n\n# For ASP.NET Core\ndotnet add package Microsoft.Extensions.Azure\n\n# For brokered authentication (Windows)\ndotnet add package Azure.Identity.Broker\n```\n\n**Current Versions**: Stable v1.17.1, Preview v1.18.0-beta.2\n\n## Environment Variables\n\n### Service Principal with Secret\n```bash\nAZURE_CLIENT_ID=\u003Capplication-client-id>\nAZURE_TENANT_ID=\u003Cdirectory-tenant-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret-value>\n```\n\n### Service Principal with Certificate\n```bash\nAZURE_CLIENT_ID=\u003Capplication-client-id>\nAZURE_TENANT_ID=\u003Cdirectory-tenant-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u003Cpath-to-pfx-or-pem>\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Ccertificate-password>  # Optional\n```\n\n### Managed Identity\n```bash\nAZURE_CLIENT_ID=\u003Cuser-assigned-managed-identity-client-id>  # Only for user-assigned\n```\n\n## DefaultAzureCredential\n\nThe recommended credential for most scenarios. Tries multiple authentication methods in order:\n\n| Order | Credential | Enabled by Default |\n|-------|------------|-------------------|\n| 1 | EnvironmentCredential | Yes |\n| 2 | WorkloadIdentityCredential | Yes |\n| 3 | ManagedIdentityCredential | Yes |\n| 4 | VisualStudioCredential | Yes |\n| 5 | VisualStudioCodeCredential | Yes |\n| 6 | AzureCliCredential | Yes |\n| 7 | AzurePowerShellCredential | Yes |\n| 8 | AzureDeveloperCliCredential | Yes |\n| 9 | InteractiveBrowserCredential | **No** |\n\n### Basic Usage\n\n```csharp\nusing Azure.Identity;\nusing Azure.Storage.Blobs;\n\nvar credential = new DefaultAzureCredential();\nvar blobClient = new BlobServiceClient(\n    new Uri(\"https:\u002F\u002Fmyaccount.blob.core.windows.net\"),\n    credential);\n```\n\n### ASP.NET Core with Dependency Injection\n\n```csharp\nusing Azure.Identity;\nusing Microsoft.Extensions.Azure;\n\nbuilder.Services.AddAzureClients(clientBuilder =>\n{\n    clientBuilder.AddBlobServiceClient(\n        new Uri(\"https:\u002F\u002Fmyaccount.blob.core.windows.net\"));\n    clientBuilder.AddSecretClient(\n        new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"));\n    \n    \u002F\u002F Uses DefaultAzureCredential by default\n    clientBuilder.UseCredential(new DefaultAzureCredential());\n});\n```\n\n### Customizing DefaultAzureCredential\n\n```csharp\nvar credential = new DefaultAzureCredential(\n    new DefaultAzureCredentialOptions\n    {\n        ExcludeEnvironmentCredential = true,\n        ExcludeManagedIdentityCredential = false,\n        ExcludeVisualStudioCredential = false,\n        ExcludeAzureCliCredential = false,\n        ExcludeInteractiveBrowserCredential = false, \u002F\u002F Enable interactive\n        TenantId = \"\u003Ctenant-id>\",\n        ManagedIdentityClientId = \"\u003Cuser-assigned-mi-client-id>\"\n    });\n```\n\n## Credential Types\n\n### ManagedIdentityCredential (Production)\n\n```csharp\n\u002F\u002F System-assigned managed identity\nvar credential = new ManagedIdentityCredential(ManagedIdentityId.SystemAssigned);\n\n\u002F\u002F User-assigned by client ID\nvar credential = new ManagedIdentityCredential(\n    ManagedIdentityId.FromUserAssignedClientId(\"\u003Cclient-id>\"));\n\n\u002F\u002F User-assigned by resource ID\nvar credential = new ManagedIdentityCredential(\n    ManagedIdentityId.FromUserAssignedResourceId(\"\u003Cresource-id>\"));\n```\n\n### ClientSecretCredential\n\n```csharp\nvar credential = new ClientSecretCredential(\n    tenantId: \"\u003Ctenant-id>\",\n    clientId: \"\u003Cclient-id>\",\n    clientSecret: \"\u003Cclient-secret>\");\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    credential);\n```\n\n### ClientCertificateCredential\n\n```csharp\nvar certificate = X509CertificateLoader.LoadCertificateFromFile(\"MyCertificate.pfx\");\nvar credential = new ClientCertificateCredential(\n    tenantId: \"\u003Ctenant-id>\",\n    clientId: \"\u003Cclient-id>\",\n    certificate);\n```\n\n### ChainedTokenCredential (Custom Chain)\n\n```csharp\nvar credential = new ChainedTokenCredential(\n    new ManagedIdentityCredential(),\n    new AzureCliCredential());\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    credential);\n```\n\n### Developer Credentials\n\n```csharp\n\u002F\u002F Azure CLI\nvar credential = new AzureCliCredential();\n\n\u002F\u002F Azure PowerShell\nvar credential = new AzurePowerShellCredential();\n\n\u002F\u002F Azure Developer CLI (azd)\nvar credential = new AzureDeveloperCliCredential();\n\n\u002F\u002F Visual Studio\nvar credential = new VisualStudioCredential();\n\n\u002F\u002F Interactive Browser\nvar credential = new InteractiveBrowserCredential();\n```\n\n## Environment-Based Configuration\n\n```csharp\n\u002F\u002F Production vs Development\nTokenCredential credential = builder.Environment.IsProduction()\n    ? new ManagedIdentityCredential(\"\u003Cclient-id>\")\n    : new DefaultAzureCredential();\n```\n\n## Sovereign Clouds\n\n```csharp\nvar credential = new DefaultAzureCredential(\n    new DefaultAzureCredentialOptions\n    {\n        AuthorityHost = AzureAuthorityHosts.AzureGovernment\n    });\n\n\u002F\u002F Available authority hosts:\n\u002F\u002F AzureAuthorityHosts.AzurePublicCloud (default)\n\u002F\u002F AzureAuthorityHosts.AzureGovernment\n\u002F\u002F AzureAuthorityHosts.AzureChina\n\u002F\u002F AzureAuthorityHosts.AzureGermany\n```\n\n## Credential Types Reference\n\n| Category | Credential | Purpose |\n|----------|------------|---------|\n| **Chains** | `DefaultAzureCredential` | Preconfigured chain for dev-to-prod |\n| | `ChainedTokenCredential` | Custom credential chain |\n| **Azure-Hosted** | `ManagedIdentityCredential` | Azure managed identity |\n| | `WorkloadIdentityCredential` | Kubernetes workload identity |\n| | `EnvironmentCredential` | Environment variables |\n| **Service Principal** | `ClientSecretCredential` | Client ID + secret |\n| | `ClientCertificateCredential` | Client ID + certificate |\n| | `ClientAssertionCredential` | Signed client assertion |\n| **User** | `InteractiveBrowserCredential` | Browser-based auth |\n| | `DeviceCodeCredential` | Device code flow |\n| | `OnBehalfOfCredential` | Delegated identity |\n| **Developer** | `AzureCliCredential` | Azure CLI |\n| | `AzurePowerShellCredential` | Azure PowerShell |\n| | `AzureDeveloperCliCredential` | Azure Developer CLI |\n| | `VisualStudioCredential` | Visual Studio |\n\n## Best Practices\n\n### 1. Use Deterministic Credentials in Production\n\n```csharp\n\u002F\u002F Development\nvar devCredential = new DefaultAzureCredential();\n\n\u002F\u002F Production - use specific credential\nvar prodCredential = new ManagedIdentityCredential(\"\u003Cclient-id>\");\n```\n\n### 2. Reuse Credential Instances\n\n```csharp\n\u002F\u002F Good: Single credential instance shared across clients\nvar credential = new DefaultAzureCredential();\nvar blobClient = new BlobServiceClient(blobUri, credential);\nvar secretClient = new SecretClient(vaultUri, credential);\n```\n\n### 3. Configure Retry Policies\n\n```csharp\nvar options = new ManagedIdentityCredentialOptions(\n    ManagedIdentityId.FromUserAssignedClientId(clientId))\n{\n    Retry =\n    {\n        MaxRetries = 3,\n        Delay = TimeSpan.FromSeconds(0.5),\n    }\n};\nvar credential = new ManagedIdentityCredential(options);\n```\n\n### 4. Enable Logging for Debugging\n\n```csharp\nusing Azure.Core.Diagnostics;\n\nusing AzureEventSourceListener listener = new((args, message) =>\n{\n    if (args is { EventSource.Name: \"Azure-Identity\" })\n    {\n        Console.WriteLine(message);\n    }\n}, EventLevel.LogAlways);\n```\n\n## Error Handling\n\n```csharp\nusing Azure.Identity;\nusing Azure.Security.KeyVault.Secrets;\n\nvar client = new SecretClient(\n    new Uri(\"https:\u002F\u002Fmyvault.vault.azure.net\"),\n    new DefaultAzureCredential());\n\ntry\n{\n    KeyVaultSecret secret = await client.GetSecretAsync(\"secret1\");\n}\ncatch (AuthenticationFailedException e)\n{\n    Console.WriteLine($\"Authentication Failed: {e.Message}\");\n}\ncatch (CredentialUnavailableException e)\n{\n    Console.WriteLine($\"Credential Unavailable: {e.Message}\");\n}\n```\n\n## Key Exceptions\n\n| Exception | Description |\n|-----------|-------------|\n| `AuthenticationFailedException` | Base exception for authentication errors |\n| `CredentialUnavailableException` | Credential cannot authenticate in current environment |\n| `AuthenticationRequiredException` | Interactive authentication is required |\n\n## Managed Identity Support\n\nSupported Azure services:\n- Azure App Service and Azure Functions\n- Azure Arc\n- Azure Cloud Shell\n- Azure Kubernetes Service (AKS)\n- Azure Service Fabric\n- Azure Virtual Machines\n- Azure Virtual Machine Scale Sets\n\n## Thread Safety\n\nAll credential implementations are thread-safe. A single credential instance can be safely shared across multiple clients and threads.\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.Identity` | Authentication (this SDK) | `dotnet add package Azure.Identity` |\n| `Microsoft.Extensions.Azure` | DI integration | `dotnet add package Microsoft.Extensions.Azure` |\n| `Azure.Identity.Broker` | Brokered auth (Windows) | `dotnet add package Azure.Identity.Broker` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.Identity |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fazure.identity |\n| Credential Chains | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fazure\u002Fsdk\u002Fauthentication\u002Fcredential-chains |\n| Best Practices | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fazure\u002Fsdk\u002Fauthentication\u002Fbest-practices |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fidentity\u002FAzure.Identity |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":31,"source":36,"date_added":50,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fazure-identity-dotnet","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill azure-identity-dotnet",{"tool":63,"command":64},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill azure-identity-dotnet",{"tool":66,"command":67},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill azure-identity-dotnet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fazure-identity-dotnet\u002FSKILL.md",true,[],[72,94,120,130,143,162],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":45},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[82,83,84,85,86,87,88,89,90,91,92,93],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":45},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[101,102,103,104,105,106,84,107,108,109,110,111,112,113,114,115,116,117,118,119],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":45},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[127,128,101,112,113,114,115,105,84,117,129,118,119,111,109,108,107,116,106,104],"trend radar","radar","pulse",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":45},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[137,138,139,140,141,142],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":154,"publishedAt":45},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[145,90,155,156,157,93,112,158,159,160,103,161,116],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":45},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[164,169,170,171,116,172,159,173,174,175,176,177],"status","play","go","latest","github","discover","control","cmd","volume"]