The Azure Identity library provides Microsoft Entra ID token authentication support across the Azure SDK with a comprehensive set of TokenCredential implementations.
—
The DefaultAzureCredential is the recommended credential type for most applications. It combines multiple credential types in a chain, attempting each in sequence until one successfully authenticates. This approach simplifies authentication code while supporting both development and production environments.
DefaultAzureCredential tries the following credentials in order:
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
// Simple usage - use defaults
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
// Use with Azure SDK client
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint("https://mystorageaccount.blob.core.windows.net/")
.credential(credential)
.buildClient();// Configure specific options
TokenCredential credential = new DefaultAzureCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_GOVERNMENT) // Use government cloud
.managedIdentityClientId("user-assigned-mi-client-id") // Specify user-assigned MI
.tenantId("tenant-id") // Specify tenant
.additionallyAllowedTenants("*") // Allow any tenant
.build();DefaultAzureCredential recognizes these environment variables:
// Exclude specific credential types from the chain
TokenCredential credential = new DefaultAzureCredentialBuilder()
.excludeEnvironmentCredential() // Skip environment variables
.excludeManagedIdentityCredential() // Skip managed identity
.excludeSharedTokenCacheCredential() // Skip shared token cache
.excludeAzureCliCredential() // Skip Azure CLI
.excludeAzurePowerShellCredential() // Skip Azure PowerShell
.excludeAzureDeveloperCliCredential() // Skip Azure Developer CLI
.excludeIntelliJCredential() // Skip IntelliJ
.excludeVisualStudioCodeCredential() // Skip VS Code
.build();try {
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
AccessToken token = credential.getTokenSync(
new TokenRequestContext().addScopes("https://management.azure.com/.default")
);
System.out.println("Authentication successful");
} catch (CredentialUnavailableException e) {
System.err.println("No credential available: " + e.getMessage());
} catch (ClientAuthenticationException e) {
System.err.println("Authentication failed: " + e.getMessage());
}class DefaultAzureCredential extends ChainedTokenCredential implements TokenCredential {
// Inherits getToken methods from ChainedTokenCredential
}
class DefaultAzureCredentialBuilder extends CredentialBuilderBase<DefaultAzureCredentialBuilder> {
// Authority and tenant configuration
DefaultAzureCredentialBuilder authorityHost(String authorityHost);
DefaultAzureCredentialBuilder tenantId(String tenantId);
DefaultAzureCredentialBuilder additionallyAllowedTenants(String... additionallyAllowedTenants);
DefaultAzureCredentialBuilder additionallyAllowedTenants(List<String> additionallyAllowedTenants);
// Managed identity configuration
DefaultAzureCredentialBuilder managedIdentityClientId(String clientId);
DefaultAzureCredentialBuilder managedIdentityResourceId(String resourceId);
// Credential exclusions
DefaultAzureCredentialBuilder excludeEnvironmentCredential();
DefaultAzureCredentialBuilder excludeWorkloadIdentityCredential();
DefaultAzureCredentialBuilder excludeManagedIdentityCredential();
DefaultAzureCredentialBuilder excludeSharedTokenCacheCredential();
DefaultAzureCredentialBuilder excludeAzureCliCredential();
DefaultAzureCredentialBuilder excludeAzurePowerShellCredential();
DefaultAzureCredentialBuilder excludeAzureDeveloperCliCredential();
DefaultAzureCredentialBuilder excludeIntelliJCredential();
DefaultAzureCredentialBuilder excludeVisualStudioCodeCredential();
// Build method
DefaultAzureCredential build();
}Install with Tessl CLI
npx tessl i tessl/maven-com-azure--azure-identitydocs