Azure Identity SDK for Python Authentication library for Azure SDK clients using Microsoft Entra ID (formerly Azure AD). Installation pip install azure-identity Environment Variables
Service Principal (for production/CI)
AZURE_TENANT_ID
< your-tenant-id
AZURE_CLIENT_ID
< your-client-id
AZURE_CLIENT_SECRET
< your-client-secret
User-assigned Managed Identity (optional)
AZURE_CLIENT_ID
< managed-identity-client-id
DefaultAzureCredential The recommended credential for most scenarios. Tries multiple authentication methods in order: from azure . identity import DefaultAzureCredential from azure . storage . blob import BlobServiceClient
Works in local dev AND production without code changes
credential
DefaultAzureCredential
(
)
client
=
BlobServiceClient
(
account_url
=
"https://
Exclude credentials you don't need
credential
DefaultAzureCredential
(
exclude_environment_credential
=
True
,
exclude_shared_token_cache_credential
=
True
,
managed_identity_client_id
=
"
For user-assigned MI
)
Enable interactive browser (disabled by default)
credential
DefaultAzureCredential ( exclude_interactive_browser_credential = False ) Specific Credential Types ManagedIdentityCredential For Azure-hosted resources (VMs, App Service, Functions, AKS): from azure . identity import ManagedIdentityCredential
System-assigned managed identity
credential
ManagedIdentityCredential ( )
User-assigned managed identity
credential
ManagedIdentityCredential
(
client_id
=
"
Try managed identity first, fall back to CLI
credential
ChainedTokenCredential
(
ManagedIdentityCredential
(
client_id
=
"
Get token for a specific scope
token
credential . get_token ( "https://management.azure.com/.default" ) print ( f"Token expires: { token . expires_on } " )
For Azure Database for PostgreSQL
token
credential
.
get_token
(
"https://ossrdbms-aad.database.windows.net/.default"
)
Async Client
from
azure
.
identity
.
aio
import
DefaultAzureCredential
from
azure
.
storage
.
blob
.
aio
import
BlobServiceClient
async
def
main
(
)
:
credential
=
DefaultAzureCredential
(
)
async
with
BlobServiceClient
(
account_url
=
"https://
... async operations
pass await credential . close ( ) Best Practices Use DefaultAzureCredential for code that runs locally and in Azure Never hardcode credentials — use environment variables or managed identity Prefer managed identity in production Azure deployments Use ChainedTokenCredential when you need a custom credential order Close async credentials explicitly or use context managers Set AZURE_CLIENT_ID for user-assigned managed identities Exclude unused credentials to speed up authentication When to Use This skill is applicable to execute the workflow or actions described in the overview.