[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71BBSNWX9AS2QBX3JRHH4TG":3,"skill-same:01M71BBSNWX9AS2QBX3JRHH4TG":76},{"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":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71BBSNWX9AS2QBX3JRHH4TG","azure-identity-java",null,"Azure Identity library for Java authentication with Azure services. Use when implementing DefaultAzureCredential, managed identity, service principal, or any Azure authentication pattern in Java applications.","strmt7\u002Fai_skills_collection_benchmarked","strmt7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F28989754?v=4","01M71929P914SWKQ7QJV24NBBY","Stratos","01M71929Q9VGKQ7PWYR95VSQQQ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-identity-java\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"identity","azure","azure identity java","java","when","microsoft","managed","for","implementing","with","service","pattern","use","applications","services","library","authentication","2026-11-10 10:12:30",false,"---\nname: azure-identity-java\ndescription: Azure Identity library for Java authentication with Azure services. Use when implementing DefaultAzureCredential, managed identity, service principal, or any Azure authentication pattern in Java applications.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: com.azure:azure-identity\n---\n\n# Azure Identity library for Java\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-identity\u003C\u002FartifactId>\n    \u003Cversion>1.15.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Key Concepts\n\n| Credential | Use Case |\n|------------|----------|\n| `DefaultAzureCredential` | **Recommended** - Works in dev and production |\n| `ManagedIdentityCredential` | Azure-hosted apps (App Service, Functions, VMs) |\n| `EnvironmentCredential` | CI\u002FCD pipelines with env vars |\n| `ClientSecretCredential` | Service principals with secret |\n| `ClientCertificateCredential` | Service principals with certificate |\n| `AzureCliCredential` | Local dev using `az login` |\n| `InteractiveBrowserCredential` | Interactive login flow |\n| `DeviceCodeCredential` | Headless device authentication |\n\n## DefaultAzureCredential (Recommended)\n\nThe `DefaultAzureCredential` tries multiple authentication methods in order. See [DefaultAzureCredential overview](https:\u002F\u002Faka.ms\u002Fazsdk\u002Fjava\u002Fidentity\u002Fcredential-chains#defaultazurecredential-overview) for the current credential chain order and defaults.\n\n```java\nimport com.azure.identity.DefaultAzureCredential;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\n\u002F\u002F Simple usage\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();\n\n\u002F\u002F Use with any Azure client\nBlobServiceClient blobClient = new BlobServiceClientBuilder()\n    .endpoint(\"https:\u002F\u002F\u003Cstorage-account>.blob.core.windows.net\")\n    .credential(credential)\n    .buildClient();\n\nKeyClient keyClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildClient();\n```\n\n### Configure DefaultAzureCredential\n\n```java\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .managedIdentityClientId(\"\u003Cuser-assigned-identity-client-id>\")  \u002F\u002F For user-assigned MI\n    .tenantId(\"\u003Ctenant-id>\")                                        \u002F\u002F Limit to specific tenant\n    .excludeEnvironmentCredential()                                 \u002F\u002F Skip env vars\n    .excludeAzureCliCredential()                                    \u002F\u002F Skip Azure CLI\n    .build();\n```\n\n## Managed Identity\n\nFor Azure-hosted applications (App Service, Functions, AKS, VMs).\n\n```java\nimport com.azure.identity.ManagedIdentityCredential;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\n\n\u002F\u002F System-assigned managed identity\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .build();\n\n\u002F\u002F User-assigned managed identity (by client ID)\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .clientId(\"\u003Cuser-assigned-client-id>\")\n    .build();\n\n\u002F\u002F User-assigned managed identity (by resource ID)\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .resourceId(\"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ManagedIdentity\u002FuserAssignedIdentities\u002F\u003Cname>\")\n    .build();\n```\n\n## Service Principal with Secret\n\n```java\nimport com.azure.identity.ClientSecretCredential;\nimport com.azure.identity.ClientSecretCredentialBuilder;\n\nClientSecretCredential credential = new ClientSecretCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .clientSecret(\"\u003Cclient-secret>\")\n    .build();\n```\n\n## Service Principal with Certificate\n\n```java\nimport com.azure.identity.ClientCertificateCredential;\nimport com.azure.identity.ClientCertificateCredentialBuilder;\n\n\u002F\u002F From PEM file\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pemCertificate(\"\u003Cpath-to-cert.pem>\")\n    .build();\n\n\u002F\u002F From PFX file with password\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pfxCertificate(\"\u003Cpath-to-cert.pfx>\", \"\u003Cpfx-password>\")\n    .build();\n\n\u002F\u002F Send certificate chain for SNI\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pemCertificate(\"\u003Cpath-to-cert.pem>\")\n    .sendCertificateChain(true)\n    .build();\n```\n\n## Environment Credential\n\nReads credentials from environment variables.\n\n```java\nimport com.azure.identity.EnvironmentCredential;\nimport com.azure.identity.EnvironmentCredentialBuilder;\n\nEnvironmentCredential credential = new EnvironmentCredentialBuilder().build();\n```\n\n### Required Environment Variables\n\n**For service principal with secret:**\n\n```bash\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n**For service principal with certificate:**\n\n```bash\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u002Fpath\u002Fto\u002Fcert.pem\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Coptional-password>\n```\n\n## Azure CLI Credential\n\nFor local development using `az login`.\n\n```java\nimport com.azure.identity.AzureCliCredential;\nimport com.azure.identity.AzureCliCredentialBuilder;\n\nAzureCliCredential credential = new AzureCliCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")  \u002F\u002F Optional: specific tenant\n    .build();\n```\n\n## Interactive Browser\n\nFor desktop applications requiring user login.\n\n```java\nimport com.azure.identity.InteractiveBrowserCredential;\nimport com.azure.identity.InteractiveBrowserCredentialBuilder;\n\nInteractiveBrowserCredential credential = new InteractiveBrowserCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .redirectUrl(\"http:\u002F\u002Flocalhost:8080\")  \u002F\u002F Must match app registration\n    .build();\n```\n\n## Device Code\n\nFor headless devices (IoT, CLI tools).\n\n```java\nimport com.azure.identity.DeviceCodeCredential;\nimport com.azure.identity.DeviceCodeCredentialBuilder;\n\nDeviceCodeCredential credential = new DeviceCodeCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .challengeConsumer(challenge -> {\n        \u002F\u002F Display to user\n        System.out.println(challenge.getMessage());\n    })\n    .build();\n```\n\n## Chained Credential\n\nCreate custom authentication chains.\n\n```java\nimport com.azure.identity.ChainedTokenCredential;\nimport com.azure.identity.ChainedTokenCredentialBuilder;\n\nChainedTokenCredential credential = new ChainedTokenCredentialBuilder()\n    .addFirst(new ManagedIdentityCredentialBuilder().build())\n    .addLast(new AzureCliCredentialBuilder().build())\n    .build();\n```\n\n## Workload Identity (AKS)\n\nFor Azure Kubernetes Service with workload identity.\n\n```java\nimport com.azure.identity.WorkloadIdentityCredential;\nimport com.azure.identity.WorkloadIdentityCredentialBuilder;\n\n\u002F\u002F Reads from AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE\nWorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder().build();\n\n\u002F\u002F Or explicit configuration\nWorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .tokenFilePath(\"\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\")\n    .build();\n```\n\n## Token Caching\n\nEnable persistent token caching for better performance.\n\n```java\n\u002F\u002F Enable token caching (in-memory by default)\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .enableAccountIdentifierLogging()\n    .build();\n\n\u002F\u002F With shared token cache (for multi-credential scenarios)\nSharedTokenCacheCredential credential = new SharedTokenCacheCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .build();\n```\n\n## Sovereign Clouds\n\n```java\nimport com.azure.identity.AzureAuthorityHosts;\n\n\u002F\u002F Azure Government\nDefaultAzureCredential govCredential = new DefaultAzureCredentialBuilder()\n    .authorityHost(AzureAuthorityHosts.AZURE_GOVERNMENT)\n    .build();\n\n\u002F\u002F Azure China\nDefaultAzureCredential chinaCredential = new DefaultAzureCredentialBuilder()\n    .authorityHost(AzureAuthorityHosts.AZURE_CHINA)\n    .build();\n```\n\n## Error Handling\n\n```java\nimport com.azure.identity.CredentialUnavailableException;\nimport com.azure.core.exception.ClientAuthenticationException;\n\ntry {\n    DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();\n    AccessToken token = credential.getToken(new TokenRequestContext()\n        .addScopes(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\"));\n} catch (CredentialUnavailableException e) {\n    \u002F\u002F No credential could authenticate\n    System.out.println(\"Authentication failed: \" + e.getMessage());\n} catch (ClientAuthenticationException e) {\n    \u002F\u002F Authentication error (wrong credentials, expired, etc.)\n    System.out.println(\"Auth error: \" + e.getMessage());\n}\n```\n\n## Logging\n\nEnable authentication logging for debugging.\n\n```java\n\u002F\u002F Via environment variable\n\u002F\u002F AZURE_LOG_LEVEL=verbose\n\n\u002F\u002F Or programmatically\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .enableAccountIdentifierLogging()  \u002F\u002F Log account info\n    .build();\n```\n\n## Environment Variables\n\n```bash\n# DefaultAzureCredential configuration\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n\n# Managed Identity\nAZURE_CLIENT_ID=\u003Cuser-assigned-mi-client-id>\n\n# Workload Identity (AKS)\nAZURE_FEDERATED_TOKEN_FILE=\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\n\n# Logging\nAZURE_LOG_LEVEL=verbose\n\n# Authority host\nAZURE_AUTHORITY_HOST=https:\u002F\u002Flogin.microsoftonline.com\u002F\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** - Works seamlessly from dev to production\n2. **Managed Identity in Production** - No secrets to manage, automatic rotation\n3. **Azure CLI for Local Dev** - Run `az login` before running your app\n4. **Least Privilege** - Grant only required permissions to service principals\n5. **Token Caching** - Enabled by default, reduces auth round-trips\n6. **Environment Variables** - Use for CI\u002FCD, not hardcoded secrets\n\n## Credential Selection Matrix\n\n| Environment | Recommended Credential |\n|-------------|----------------------|\n| Local Development | `DefaultAzureCredential` (uses Azure CLI) |\n| Azure App Service | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Functions | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Kubernetes Service | `WorkloadIdentityCredential` |\n| Azure VMs | `DefaultAzureCredential` (uses Managed Identity) |\n| CI\u002FCD Pipeline | `EnvironmentCredential` |\n| Desktop App | `InteractiveBrowserCredential` |\n| CLI Tool | `DeviceCodeCredential` |\n\n## Trigger Phrases\n\n- \"Azure authentication Java\", \"DefaultAzureCredential Java\"\n- \"managed identity Java\", \"service principal Java\"\n- \"Azure login Java\", \"Azure credentials Java\"\n- \"AZURE_CLIENT_ID\", \"AZURE_TENANT_ID\"\n","# Azure Identity library for Java\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-identity\u003C\u002FartifactId>\n    \u003Cversion>1.15.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Key Concepts\n\n| Credential | Use Case |\n|------------|----------|\n| `DefaultAzureCredential` | **Recommended** - Works in dev and production |\n| `ManagedIdentityCredential` | Azure-hosted apps (App Service, Functions, VMs) |\n| `EnvironmentCredential` | CI\u002FCD pipelines with env vars |\n| `ClientSecretCredential` | Service principals with secret |\n| `ClientCertificateCredential` | Service principals with certificate |\n| `AzureCliCredential` | Local dev using `az login` |\n| `InteractiveBrowserCredential` | Interactive login flow |\n| `DeviceCodeCredential` | Headless device authentication |\n\n## DefaultAzureCredential (Recommended)\n\nThe `DefaultAzureCredential` tries multiple authentication methods in order. See [DefaultAzureCredential overview](https:\u002F\u002Faka.ms\u002Fazsdk\u002Fjava\u002Fidentity\u002Fcredential-chains#defaultazurecredential-overview) for the current credential chain order and defaults.\n\n```java\nimport com.azure.identity.DefaultAzureCredential;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\n\u002F\u002F Simple usage\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();\n\n\u002F\u002F Use with any Azure client\nBlobServiceClient blobClient = new BlobServiceClientBuilder()\n    .endpoint(\"https:\u002F\u002F\u003Cstorage-account>.blob.core.windows.net\")\n    .credential(credential)\n    .buildClient();\n\nKeyClient keyClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildClient();\n```\n\n### Configure DefaultAzureCredential\n\n```java\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .managedIdentityClientId(\"\u003Cuser-assigned-identity-client-id>\")  \u002F\u002F For user-assigned MI\n    .tenantId(\"\u003Ctenant-id>\")                                        \u002F\u002F Limit to specific tenant\n    .excludeEnvironmentCredential()                                 \u002F\u002F Skip env vars\n    .excludeAzureCliCredential()                                    \u002F\u002F Skip Azure CLI\n    .build();\n```\n\n## Managed Identity\n\nFor Azure-hosted applications (App Service, Functions, AKS, VMs).\n\n```java\nimport com.azure.identity.ManagedIdentityCredential;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\n\n\u002F\u002F System-assigned managed identity\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .build();\n\n\u002F\u002F User-assigned managed identity (by client ID)\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .clientId(\"\u003Cuser-assigned-client-id>\")\n    .build();\n\n\u002F\u002F User-assigned managed identity (by resource ID)\nManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()\n    .resourceId(\"\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002FMicrosoft.ManagedIdentity\u002FuserAssignedIdentities\u002F\u003Cname>\")\n    .build();\n```\n\n## Service Principal with Secret\n\n```java\nimport com.azure.identity.ClientSecretCredential;\nimport com.azure.identity.ClientSecretCredentialBuilder;\n\nClientSecretCredential credential = new ClientSecretCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .clientSecret(\"\u003Cclient-secret>\")\n    .build();\n```\n\n## Service Principal with Certificate\n\n```java\nimport com.azure.identity.ClientCertificateCredential;\nimport com.azure.identity.ClientCertificateCredentialBuilder;\n\n\u002F\u002F From PEM file\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pemCertificate(\"\u003Cpath-to-cert.pem>\")\n    .build();\n\n\u002F\u002F From PFX file with password\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pfxCertificate(\"\u003Cpath-to-cert.pfx>\", \"\u003Cpfx-password>\")\n    .build();\n\n\u002F\u002F Send certificate chain for SNI\nClientCertificateCredential credential = new ClientCertificateCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .pemCertificate(\"\u003Cpath-to-cert.pem>\")\n    .sendCertificateChain(true)\n    .build();\n```\n\n## Environment Credential\n\nReads credentials from environment variables.\n\n```java\nimport com.azure.identity.EnvironmentCredential;\nimport com.azure.identity.EnvironmentCredentialBuilder;\n\nEnvironmentCredential credential = new EnvironmentCredentialBuilder().build();\n```\n\n### Required Environment Variables\n\n**For service principal with secret:**\n\n```bash\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n**For service principal with certificate:**\n\n```bash\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_CERTIFICATE_PATH=\u002Fpath\u002Fto\u002Fcert.pem\nAZURE_CLIENT_CERTIFICATE_PASSWORD=\u003Coptional-password>\n```\n\n## Azure CLI Credential\n\nFor local development using `az login`.\n\n```java\nimport com.azure.identity.AzureCliCredential;\nimport com.azure.identity.AzureCliCredentialBuilder;\n\nAzureCliCredential credential = new AzureCliCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")  \u002F\u002F Optional: specific tenant\n    .build();\n```\n\n## Interactive Browser\n\nFor desktop applications requiring user login.\n\n```java\nimport com.azure.identity.InteractiveBrowserCredential;\nimport com.azure.identity.InteractiveBrowserCredentialBuilder;\n\nInteractiveBrowserCredential credential = new InteractiveBrowserCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .redirectUrl(\"http:\u002F\u002Flocalhost:8080\")  \u002F\u002F Must match app registration\n    .build();\n```\n\n## Device Code\n\nFor headless devices (IoT, CLI tools).\n\n```java\nimport com.azure.identity.DeviceCodeCredential;\nimport com.azure.identity.DeviceCodeCredentialBuilder;\n\nDeviceCodeCredential credential = new DeviceCodeCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .challengeConsumer(challenge -> {\n        \u002F\u002F Display to user\n        System.out.println(challenge.getMessage());\n    })\n    .build();\n```\n\n## Chained Credential\n\nCreate custom authentication chains.\n\n```java\nimport com.azure.identity.ChainedTokenCredential;\nimport com.azure.identity.ChainedTokenCredentialBuilder;\n\nChainedTokenCredential credential = new ChainedTokenCredentialBuilder()\n    .addFirst(new ManagedIdentityCredentialBuilder().build())\n    .addLast(new AzureCliCredentialBuilder().build())\n    .build();\n```\n\n## Workload Identity (AKS)\n\nFor Azure Kubernetes Service with workload identity.\n\n```java\nimport com.azure.identity.WorkloadIdentityCredential;\nimport com.azure.identity.WorkloadIdentityCredentialBuilder;\n\n\u002F\u002F Reads from AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE\nWorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder().build();\n\n\u002F\u002F Or explicit configuration\nWorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder()\n    .tenantId(\"\u003Ctenant-id>\")\n    .clientId(\"\u003Cclient-id>\")\n    .tokenFilePath(\"\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\")\n    .build();\n```\n\n## Token Caching\n\nEnable persistent token caching for better performance.\n\n```java\n\u002F\u002F Enable token caching (in-memory by default)\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .enableAccountIdentifierLogging()\n    .build();\n\n\u002F\u002F With shared token cache (for multi-credential scenarios)\nSharedTokenCacheCredential credential = new SharedTokenCacheCredentialBuilder()\n    .clientId(\"\u003Cclient-id>\")\n    .build();\n```\n\n## Sovereign Clouds\n\n```java\nimport com.azure.identity.AzureAuthorityHosts;\n\n\u002F\u002F Azure Government\nDefaultAzureCredential govCredential = new DefaultAzureCredentialBuilder()\n    .authorityHost(AzureAuthorityHosts.AZURE_GOVERNMENT)\n    .build();\n\n\u002F\u002F Azure China\nDefaultAzureCredential chinaCredential = new DefaultAzureCredentialBuilder()\n    .authorityHost(AzureAuthorityHosts.AZURE_CHINA)\n    .build();\n```\n\n## Error Handling\n\n```java\nimport com.azure.identity.CredentialUnavailableException;\nimport com.azure.core.exception.ClientAuthenticationException;\n\ntry {\n    DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();\n    AccessToken token = credential.getToken(new TokenRequestContext()\n        .addScopes(\"https:\u002F\u002Fmanagement.azure.com\u002F.default\"));\n} catch (CredentialUnavailableException e) {\n    \u002F\u002F No credential could authenticate\n    System.out.println(\"Authentication failed: \" + e.getMessage());\n} catch (ClientAuthenticationException e) {\n    \u002F\u002F Authentication error (wrong credentials, expired, etc.)\n    System.out.println(\"Auth error: \" + e.getMessage());\n}\n```\n\n## Logging\n\nEnable authentication logging for debugging.\n\n```java\n\u002F\u002F Via environment variable\n\u002F\u002F AZURE_LOG_LEVEL=verbose\n\n\u002F\u002F Or programmatically\nDefaultAzureCredential credential = new DefaultAzureCredentialBuilder()\n    .enableAccountIdentifierLogging()  \u002F\u002F Log account info\n    .build();\n```\n\n## Environment Variables\n\n```bash\n# DefaultAzureCredential configuration\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n\n# Managed Identity\nAZURE_CLIENT_ID=\u003Cuser-assigned-mi-client-id>\n\n# Workload Identity (AKS)\nAZURE_FEDERATED_TOKEN_FILE=\u002Fvar\u002Frun\u002Fsecrets\u002Fazure\u002Ftokens\u002Fazure-identity-token\n\n# Logging\nAZURE_LOG_LEVEL=verbose\n\n# Authority host\nAZURE_AUTHORITY_HOST=https:\u002F\u002Flogin.microsoftonline.com\u002F\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** - Works seamlessly from dev to production\n2. **Managed Identity in Production** - No secrets to manage, automatic rotation\n3. **Azure CLI for Local Dev** - Run `az login` before running your app\n4. **Least Privilege** - Grant only required permissions to service principals\n5. **Token Caching** - Enabled by default, reduces auth round-trips\n6. **Environment Variables** - Use for CI\u002FCD, not hardcoded secrets\n\n## Credential Selection Matrix\n\n| Environment | Recommended Credential |\n|-------------|----------------------|\n| Local Development | `DefaultAzureCredential` (uses Azure CLI) |\n| Azure App Service | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Functions | `DefaultAzureCredential` (uses Managed Identity) |\n| Azure Kubernetes Service | `WorkloadIdentityCredential` |\n| Azure VMs | `DefaultAzureCredential` (uses Managed Identity) |\n| CI\u002FCD Pipeline | `EnvironmentCredential` |\n| Desktop App | `InteractiveBrowserCredential` |\n| CLI Tool | `DeviceCodeCredential` |\n\n## Trigger Phrases\n\n- \"Azure authentication Java\", \"DefaultAzureCredential Java\"\n- \"managed identity Java\", \"service principal Java\"\n- \"Azure login Java\", \"Azure credentials Java\"\n- \"AZURE_CLIENT_ID\", \"AZURE_TENANT_ID\"\n",{"name":5,"license":15,"metadata":41,"description":7},{"author":42,"package":43,"version":44},"Microsoft","com.azure:azure-identity","1.0.0","main","5c95bcac4646c5aed06bd9aed5235cfc7985aafc","included\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-identity-java",0,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked","https:\u002F\u002Fgithub.com\u002Fstrmt7","2026-11-11 04:18:12",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-identity-java",{"tool":58,"command":59},"bunx","bunx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-identity-java",{"tool":61,"command":62},"pnpm","pnpm dlx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-identity-java","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-identity-java\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Facceptance-criteria.md","REFERENCE","参考文档",11090,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-identity-java\u002Freferences\u002Facceptance-criteria.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fexamples.md",14391,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-identity-java\u002Freferences\u002Fexamples.md",[77,108,137,162,187,215],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":81,"licenseFileUrl":82,"sourceHtmlUrl":83,"categories":84,"keywords":93,"publishedAt":36},"01M71D4H3T6M57DFKN8HENAWRV","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FSKILL.md",[85,90],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000009","前端开发",[94,95,96,26,32,97,98,99,100,101,102,28,103,104,105,106,107],"webapp","testing","webapp testing","local","frontend","debugging","toolkit","logs","browser","playwright","web","behavior","ui","screenshots",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":81,"licenseFileUrl":112,"sourceHtmlUrl":113,"categories":114,"keywords":118,"publishedAt":36},"01M71D4CQR2A2TB7GASCR5ZBG3","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FSKILL.md",[115],{"categoryNo":116,"categoryName":117,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发",[119,120,121,122,123,124,23,125,126,127,128,129,130,131,132,133,134,135,26,136],"skill creator","creator","performance","improve","run evals","new","analysis","create","optimize","variance analysis","run","edit","benchmark","a skill","existing skill","evals","modify","accuracy",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":145,"publishedAt":36},"01M71D488XHEZVXXSXFYP8ENMH","playwright-skill","Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Flatest-release-browser-automation\u002Fplaywright-skill\u002FSKILL.md",[143,144],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":116,"categoryName":117,"taxonomyType":88,"taxonomyTypeDesc":89},[103,146,147,148,95,149,150,23,151,102,152,153,154,155,156,157,158,159,160,161],"playwright skill","browser automation","flows","auto","access","Bash","website","ux","login","scripts","read","write","node","install","network","responsive",{"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":81,"licenseFileUrl":166,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":36},"01M71CY25GM939M6RES91QSG3T","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FSKILL.md",[169],{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},[171,172,173,104,174,175,176,26,177,178,98,179,31,180,181,182,183,184,185,186],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":81,"licenseFileUrl":191,"sourceHtmlUrl":192,"categories":193,"keywords":203,"publishedAt":36},"01M71CXZB60QJJ1H4S3NN94WMZ","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FSKILL.md",[194,195,198],{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":196,"categoryName":197,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":199,"categoryName":200,"taxonomyType":201,"taxonomyTypeDesc":202},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[98,204,205,176,206,207,208,32,209,210,31,23,173,211,181,212,182,213,214,28],"design","frontend design","ui design","generic","aesthetics","landing","pages","code","web ui","react components","examples",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":36},"01M71CVZ54WFBTVA7R16PFY1ZE","zarr-python","Chunked N-D arrays for cloud storage. Compressed arrays, parallel I\u002FO, S3\u002FGCS integration, NumPy\u002FDask\u002FXarray compatible, for large-scale scientific computing pipelines.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fzarr-python\u002FSKILL.md",[],[222,223,224,225,226,227,228,229,230,26,231,232,233,234,235,236,237,238],"zarr python","python","zarr","arrays","Cloud Storage","scientific","storage","parallel","dask","numpy","gcs","s3","integration","scientific computing","cloud","scale","pipelines"]