|
Add this skill
npx mdskills install sickn33/azure-identity-pyComprehensive authentication reference with clear examples and credential chain guidance
1---2name: azure-identity-py3description: |4 Azure Identity SDK for Python authentication. Use for DefaultAzureCredential, managed identity, service principals, and token caching.5 Triggers: "azure-identity", "DefaultAzureCredential", "authentication", "managed identity", "service principal", "credential".6package: azure-identity7---89# Azure Identity SDK for Python1011Authentication library for Azure SDK clients using Microsoft Entra ID (formerly Azure AD).1213## Installation1415```bash16pip install azure-identity17```1819## Environment Variables2021```bash22# Service Principal (for production/CI)23AZURE_TENANT_ID=<your-tenant-id>24AZURE_CLIENT_ID=<your-client-id>25AZURE_CLIENT_SECRET=<your-client-secret>2627# User-assigned Managed Identity (optional)28AZURE_CLIENT_ID=<managed-identity-client-id>29```3031## DefaultAzureCredential3233The recommended credential for most scenarios. Tries multiple authentication methods in order:3435```python36from azure.identity import DefaultAzureCredential37from azure.storage.blob import BlobServiceClient3839# Works in local dev AND production without code changes40credential = DefaultAzureCredential()4142client = BlobServiceClient(43 account_url="https://<account>.blob.core.windows.net",44 credential=credential45)46```4748### Credential Chain Order4950| Order | Credential | Environment |51|-------|-----------|-------------|52| 1 | EnvironmentCredential | CI/CD, containers |53| 2 | WorkloadIdentityCredential | Kubernetes |54| 3 | ManagedIdentityCredential | Azure VMs, App Service, Functions |55| 4 | SharedTokenCacheCredential | Windows only |56| 5 | VisualStudioCodeCredential | VS Code with Azure extension |57| 6 | AzureCliCredential | `az login` |58| 7 | AzurePowerShellCredential | `Connect-AzAccount` |59| 8 | AzureDeveloperCliCredential | `azd auth login` |6061### Customizing DefaultAzureCredential6263```python64# Exclude credentials you don't need65credential = DefaultAzureCredential(66 exclude_environment_credential=True,67 exclude_shared_token_cache_credential=True,68 managed_identity_client_id="<user-assigned-mi-client-id>" # For user-assigned MI69)7071# Enable interactive browser (disabled by default)72credential = DefaultAzureCredential(73 exclude_interactive_browser_credential=False74)75```7677## Specific Credential Types7879### ManagedIdentityCredential8081For Azure-hosted resources (VMs, App Service, Functions, AKS):8283```python84from azure.identity import ManagedIdentityCredential8586# System-assigned managed identity87credential = ManagedIdentityCredential()8889# User-assigned managed identity90credential = ManagedIdentityCredential(91 client_id="<user-assigned-mi-client-id>"92)93```9495### ClientSecretCredential9697For service principal with secret:9899```python100from azure.identity import ClientSecretCredential101102credential = ClientSecretCredential(103 tenant_id=os.environ["AZURE_TENANT_ID"],104 client_id=os.environ["AZURE_CLIENT_ID"],105 client_secret=os.environ["AZURE_CLIENT_SECRET"]106)107```108109### AzureCliCredential110111Uses the account from `az login`:112113```python114from azure.identity import AzureCliCredential115116credential = AzureCliCredential()117```118119### ChainedTokenCredential120121Custom credential chain:122123```python124from azure.identity import (125 ChainedTokenCredential,126 ManagedIdentityCredential,127 AzureCliCredential128)129130# Try managed identity first, fall back to CLI131credential = ChainedTokenCredential(132 ManagedIdentityCredential(client_id="<user-assigned-mi-client-id>"),133 AzureCliCredential()134)135```136137## Credential Types Table138139| Credential | Use Case | Auth Method |140|------------|----------|-------------|141| `DefaultAzureCredential` | Most scenarios | Auto-detect |142| `ManagedIdentityCredential` | Azure-hosted apps | Managed Identity |143| `ClientSecretCredential` | Service principal | Client secret |144| `ClientCertificateCredential` | Service principal | Certificate |145| `AzureCliCredential` | Local development | Azure CLI |146| `AzureDeveloperCliCredential` | Local development | Azure Developer CLI |147| `InteractiveBrowserCredential` | User sign-in | Browser OAuth |148| `DeviceCodeCredential` | Headless/SSH | Device code flow |149150## Getting Tokens Directly151152```python153from azure.identity import DefaultAzureCredential154155credential = DefaultAzureCredential()156157# Get token for a specific scope158token = credential.get_token("https://management.azure.com/.default")159print(f"Token expires: {token.expires_on}")160161# For Azure Database for PostgreSQL162token = credential.get_token("https://ossrdbms-aad.database.windows.net/.default")163```164165## Async Client166167```python168from azure.identity.aio import DefaultAzureCredential169from azure.storage.blob.aio import BlobServiceClient170171async def main():172 credential = DefaultAzureCredential()173174 async with BlobServiceClient(175 account_url="https://<account>.blob.core.windows.net",176 credential=credential177 ) as client:178 # ... async operations179 pass180181 await credential.close()182```183184## Best Practices1851861. **Use DefaultAzureCredential** for code that runs locally and in Azure1872. **Never hardcode credentials** — use environment variables or managed identity1883. **Prefer managed identity** in production Azure deployments1894. **Use ChainedTokenCredential** when you need a custom credential order1905. **Close async credentials** explicitly or use context managers1916. **Set AZURE_CLIENT_ID** for user-assigned managed identities1927. **Exclude unused credentials** to speed up authentication193
Full transparency — inspect the skill content before installing.