{"id":"50df0797-6545-4bcf-84d0-8c8c4cf72de8","shortId":"UwxP8B","kind":"skill","title":"azure-identity-py","tagline":"Azure Identity SDK for Python authentication. Use for DefaultAzureCredential, managed identity, service principals, and token caching.","description":"# Azure Identity SDK for Python\n\nAuthentication library for Azure SDK clients using Microsoft Entra ID (formerly Azure AD).\n\n## Installation\n\n```bash\npip install azure-identity\n```\n\n## Environment Variables\n\n```bash\n# Service Principal (for production/CI)\nAZURE_TENANT_ID=<your-tenant-id>\nAZURE_CLIENT_ID=<your-client-id>\nAZURE_CLIENT_SECRET=<your-client-secret>\n\n# User-assigned Managed Identity (optional)\nAZURE_CLIENT_ID=<managed-identity-client-id>\n```\n\n## DefaultAzureCredential\n\nThe recommended credential for most scenarios. Tries multiple authentication methods in order:\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.storage.blob import BlobServiceClient\n\n# Works in local dev AND production without code changes\ncredential = DefaultAzureCredential()\n\nclient = BlobServiceClient(\n    account_url=\"https://<account>.blob.core.windows.net\",\n    credential=credential\n)\n```\n\n### Credential Chain Order\n\n| Order | Credential | Environment |\n|-------|-----------|-------------|\n| 1 | EnvironmentCredential | CI/CD, containers |\n| 2 | WorkloadIdentityCredential | Kubernetes |\n| 3 | ManagedIdentityCredential | Azure VMs, App Service, Functions |\n| 4 | SharedTokenCacheCredential | Windows only |\n| 5 | VisualStudioCodeCredential | VS Code with Azure extension |\n| 6 | AzureCliCredential | `az login` |\n| 7 | AzurePowerShellCredential | `Connect-AzAccount` |\n| 8 | AzureDeveloperCliCredential | `azd auth login` |\n\n### Customizing DefaultAzureCredential\n\n```python\n# Exclude credentials you don't need\ncredential = DefaultAzureCredential(\n    exclude_environment_credential=True,\n    exclude_shared_token_cache_credential=True,\n    managed_identity_client_id=\"<user-assigned-mi-client-id>\"  # For user-assigned MI\n)\n\n# Enable interactive browser (disabled by default)\ncredential = DefaultAzureCredential(\n    exclude_interactive_browser_credential=False\n)\n```\n\n## Specific Credential Types\n\n### ManagedIdentityCredential\n\nFor Azure-hosted resources (VMs, App Service, Functions, AKS):\n\n```python\nfrom azure.identity import ManagedIdentityCredential\n\n# System-assigned managed identity\ncredential = ManagedIdentityCredential()\n\n# User-assigned managed identity\ncredential = ManagedIdentityCredential(\n    client_id=\"<user-assigned-mi-client-id>\"\n)\n```\n\n### ClientSecretCredential\n\nFor service principal with secret:\n\n```python\nfrom azure.identity import ClientSecretCredential\n\ncredential = ClientSecretCredential(\n    tenant_id=os.environ[\"AZURE_TENANT_ID\"],\n    client_id=os.environ[\"AZURE_CLIENT_ID\"],\n    client_secret=os.environ[\"AZURE_CLIENT_SECRET\"]\n)\n```\n\n### AzureCliCredential\n\nUses the account from `az login`:\n\n```python\nfrom azure.identity import AzureCliCredential\n\ncredential = AzureCliCredential()\n```\n\n### ChainedTokenCredential\n\nCustom credential chain:\n\n```python\nfrom azure.identity import (\n    ChainedTokenCredential,\n    ManagedIdentityCredential,\n    AzureCliCredential\n)\n\n# Try managed identity first, fall back to CLI\ncredential = ChainedTokenCredential(\n    ManagedIdentityCredential(client_id=\"<user-assigned-mi-client-id>\"),\n    AzureCliCredential()\n)\n```\n\n## Credential Types Table\n\n| Credential | Use Case | Auth Method |\n|------------|----------|-------------|\n| `DefaultAzureCredential` | Most scenarios | Auto-detect |\n| `ManagedIdentityCredential` | Azure-hosted apps | Managed Identity |\n| `ClientSecretCredential` | Service principal | Client secret |\n| `ClientCertificateCredential` | Service principal | Certificate |\n| `AzureCliCredential` | Local development | Azure CLI |\n| `AzureDeveloperCliCredential` | Local development | Azure Developer CLI |\n| `InteractiveBrowserCredential` | User sign-in | Browser OAuth |\n| `DeviceCodeCredential` | Headless/SSH | Device code flow |\n\n## Getting Tokens Directly\n\n```python\nfrom azure.identity import DefaultAzureCredential\n\ncredential = DefaultAzureCredential()\n\n# Get token for a specific scope\ntoken = credential.get_token(\"https://management.azure.com/.default\")\nprint(f\"Token expires: {token.expires_on}\")\n\n# For Azure Database for PostgreSQL\ntoken = credential.get_token(\"https://ossrdbms-aad.database.windows.net/.default\")\n```\n\n## Async Client\n\n```python\nfrom azure.identity.aio import DefaultAzureCredential\nfrom azure.storage.blob.aio import BlobServiceClient\n\nasync def main():\n    credential = DefaultAzureCredential()\n    \n    async with BlobServiceClient(\n        account_url=\"https://<account>.blob.core.windows.net\",\n        credential=credential\n    ) as client:\n        # ... async operations\n        pass\n    \n    await credential.close()\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** for code that runs locally and in Azure\n2. **Never hardcode credentials** — use environment variables or managed identity\n3. **Prefer managed identity** in production Azure deployments\n4. **Use ChainedTokenCredential** when you need a custom credential order\n5. **Close async credentials** explicitly or use context managers\n6. **Set AZURE_CLIENT_ID** for user-assigned managed identities\n7. **Exclude unused credentials** to speed up authentication\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","identity","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-azure-identity-py","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-identity-py","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (5,497 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:30.851Z","embedding":null,"createdAt":"2026-04-18T21:32:31.063Z","updatedAt":"2026-04-24T18:50:30.851Z","lastSeenAt":"2026-04-24T18:50:30.851Z","tsv":"'/.default':378,395 '1':117,429 '2':121,440 '3':124,450 '4':131,458 '5':135,468 '6':142,477 '7':146,488 '8':151 'account':106,268,415 'action':508 'ad':38 'ak':212 'app':128,209,322 'applic':502 'ask':546 'assign':64,184,220,227,485 'async':396,407,412,422,470 'auth':154,310 'authent':10,26,80,495 'auto':316 'auto-detect':315 'await':425 'az':144,270 'azaccount':150 'azd':153 'azur':2,5,21,29,37,44,53,56,59,68,126,140,205,250,256,262,320,337,342,386,439,456,479 'azure-host':204,319 'azure-ident':43 'azure-identity-pi':1 'azure.identity':86,215,242,274,285,362 'azure.identity.aio':400 'azure.storage.blob':90 'azure.storage.blob.aio':404 'azureclicredenti':143,265,276,278,289,303,334 'azuredeveloperclicredenti':152,339 'azurepowershellcredenti':147 'back':295 'bash':40,48 'best':427 'blob.core.windows.net':108,417 'blobservicecli':92,105,406,414 'boundari':554 'browser':188,196,350 'cach':20,174 'case':309 'certif':333 'chain':112,282 'chainedtokencredenti':279,287,299,460 'chang':101 'ci/cd':119 'clarif':548 'clear':521 'cli':297,338,344 'client':31,57,60,69,104,179,232,253,257,259,263,301,328,397,421,480 'clientcertificatecredenti':330 'clientsecretcredenti':234,244,246,325 'close':469 'code':100,138,355,433 'connect':149 'connect-azaccount':148 'contain':120 'context':475 'credenti':74,102,109,110,111,115,160,165,169,175,192,197,200,223,230,245,277,281,298,304,307,365,410,418,419,443,466,471,491 'credential.close':426 'credential.get':374,391 'criteria':557 'custom':156,280,465 'databas':387 'def':408 'default':191 'defaultazurecredenti':13,71,88,103,157,166,193,312,364,366,402,411,431 'deploy':457 'describ':509,525 'detect':317 'dev':96 'develop':336,341,343 'devic':354 'devicecodecredenti':352 'direct':359 'disabl':189 'enabl':186 'entra':34 'environ':46,116,168,445,537 'environment-specif':536 'environmentcredenti':118 'exclud':159,167,171,194,489 'execut':504 'expert':542 'expir':382 'explicit':472 'extens':141 'f':380 'fall':294 'fals':198 'first':293 'flow':356 'former':36 'function':130,211 'get':357,367 'hardcod':442 'headless/ssh':353 'host':206,321 'id':35,55,58,70,180,233,248,252,254,258,302,481 'ident':3,6,15,22,45,66,178,222,229,292,324,449,453,487 'import':87,91,216,243,275,286,363,401,405 'input':551 'instal':39,42 'interact':187,195 'interactivebrowsercredenti':345 'kubernet':123 'librari':27 'limit':513 'local':95,335,340,436 'login':145,155,271 'main':409 'manag':14,65,177,221,228,291,323,448,452,476,486 'managedidentitycredenti':125,202,217,224,231,288,300,318 'management.azure.com':377 'management.azure.com/.default':376 'match':522 'method':81,311 'mi':185 'microsoft':33 'miss':559 'multipl':79 'need':164,463 'never':441 'oauth':351 'oper':423 'option':67 'order':83,113,114,467 'os.environ':249,255,261 'ossrdbms-aad.database.windows.net':394 'ossrdbms-aad.database.windows.net/.default':393 'output':531 'overview':512 'pass':424 'permiss':552 'pip':41 'postgresql':389 'practic':428 'prefer':451 'princip':17,50,237,327,332 'print':379 'product':98,455 'production/ci':52 'py':4 'python':9,25,84,158,213,240,272,283,360,398 'recommend':73 'requir':550 'resourc':207 'review':543 'run':435 'safeti':553 'scenario':77,314 'scope':372,524 'sdk':7,23,30 'secret':61,239,260,264,329 'servic':16,49,129,210,236,326,331 'set':478 'share':172 'sharedtokencachecredenti':132 'sign':348 'sign-in':347 'skill':500,516 'skill-azure-identity-py' 'source-sickn33' 'specif':199,371,538 'speed':493 'stop':544 'substitut':534 'success':556 'system':219 'system-assign':218 'tabl':306 'task':520 'tenant':54,247,251 'test':540 'token':19,173,358,368,373,375,381,390,392 'token.expires':383 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':529 'tri':78,290 'true':170,176 'type':201,305 'unus':490 'url':107,416 'use':11,32,266,308,430,444,459,474,498,514 'user':63,183,226,346,484 'user-assign':62,182,225,483 'valid':539 'variabl':47,446 'visualstudiocodecredenti':136 'vms':127,208 'vs':137 'window':133 'without':99 'work':93 'workflow':506 'workloadidentitycredenti':122","prices":[{"id":"9f59dc29-41ce-4eb4-a5e0-3664a5230580","listingId":"50df0797-6545-4bcf-84d0-8c8c4cf72de8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:32:31.063Z"}],"sources":[{"listingId":"50df0797-6545-4bcf-84d0-8c8c4cf72de8","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-identity-py","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-identity-py","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:31.063Z","lastSeenAt":"2026-04-24T18:50:30.851Z"}],"details":{"listingId":"50df0797-6545-4bcf-84d0-8c8c4cf72de8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-identity-py","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"b349225dd5cead3eea3391c829600ec45a30cea2","skill_md_path":"skills/azure-identity-py/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-identity-py"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-identity-py","description":"Azure Identity SDK for Python authentication. Use for DefaultAzureCredential, managed identity, service principals, and token caching."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-identity-py"},"updatedAt":"2026-04-24T18:50:30.851Z"}}