{"id":"497e9158-6a6b-47b6-992d-9ba860f68e2a","shortId":"HerAbE","kind":"skill","title":"azure-identity-ts","tagline":"Authenticate to Azure services with various credential types.","description":"# Azure Identity SDK for TypeScript\n\nAuthenticate to Azure services with various credential types.\n\n## Installation\n\n```bash\nnpm install @azure/identity\n```\n\n## Environment Variables\n\n### Service Principal (Secret)\n\n```bash\nAZURE_TENANT_ID=<tenant-id>\nAZURE_CLIENT_ID=<client-id>\nAZURE_CLIENT_SECRET=<client-secret>\n```\n\n### Service Principal (Certificate)\n\n```bash\nAZURE_TENANT_ID=<tenant-id>\nAZURE_CLIENT_ID=<client-id>\nAZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pem\nAZURE_CLIENT_CERTIFICATE_PASSWORD=<optional-password>\n```\n\n### Workload Identity (Kubernetes)\n\n```bash\nAZURE_TENANT_ID=<tenant-id>\nAZURE_CLIENT_ID=<client-id>\nAZURE_FEDERATED_TOKEN_FILE=/var/run/secrets/tokens/azure-identity\n```\n\n## DefaultAzureCredential (Recommended)\n\n```typescript\nimport { DefaultAzureCredential } from \"@azure/identity\";\n\nconst credential = new DefaultAzureCredential();\n\n// Use with any Azure SDK client\nimport { BlobServiceClient } from \"@azure/storage-blob\";\nconst blobClient = new BlobServiceClient(\n  \"https://<account>.blob.core.windows.net\",\n  credential\n);\n```\n\n**Credential Chain Order:**\n1. EnvironmentCredential\n2. WorkloadIdentityCredential\n3. ManagedIdentityCredential\n4. VisualStudioCodeCredential\n5. AzureCliCredential\n6. AzurePowerShellCredential\n7. AzureDeveloperCliCredential\n\n## Managed Identity\n\n### System-Assigned\n\n```typescript\nimport { ManagedIdentityCredential } from \"@azure/identity\";\n\nconst credential = new ManagedIdentityCredential();\n```\n\n### User-Assigned (by Client ID)\n\n```typescript\nconst credential = new ManagedIdentityCredential({\n  clientId: \"<user-assigned-client-id>\"\n});\n```\n\n### User-Assigned (by Resource ID)\n\n```typescript\nconst credential = new ManagedIdentityCredential({\n  resourceId: \"/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>\"\n});\n```\n\n## Service Principal\n\n### Client Secret\n\n```typescript\nimport { ClientSecretCredential } from \"@azure/identity\";\n\nconst credential = new ClientSecretCredential(\n  \"<tenant-id>\",\n  \"<client-id>\",\n  \"<client-secret>\"\n);\n```\n\n### Client Certificate\n\n```typescript\nimport { ClientCertificateCredential } from \"@azure/identity\";\n\nconst credential = new ClientCertificateCredential(\n  \"<tenant-id>\",\n  \"<client-id>\",\n  { certificatePath: \"/path/to/cert.pem\" }\n);\n\n// With password\nconst credentialWithPwd = new ClientCertificateCredential(\n  \"<tenant-id>\",\n  \"<client-id>\",\n  { \n    certificatePath: \"/path/to/cert.pem\",\n    certificatePassword: \"<password>\"\n  }\n);\n```\n\n## Interactive Authentication\n\n### Browser-Based Login\n\n```typescript\nimport { InteractiveBrowserCredential } from \"@azure/identity\";\n\nconst credential = new InteractiveBrowserCredential({\n  clientId: \"<client-id>\",\n  tenantId: \"<tenant-id>\",\n  loginHint: \"user@example.com\"\n});\n```\n\n### Device Code Flow\n\n```typescript\nimport { DeviceCodeCredential } from \"@azure/identity\";\n\nconst credential = new DeviceCodeCredential({\n  clientId: \"<client-id>\",\n  tenantId: \"<tenant-id>\",\n  userPromptCallback: (info) => {\n    console.log(info.message);\n    // \"To sign in, use a web browser to open...\"\n  }\n});\n```\n\n## Custom Credential Chain\n\n```typescript\nimport { \n  ChainedTokenCredential,\n  ManagedIdentityCredential,\n  AzureCliCredential\n} from \"@azure/identity\";\n\n// Try managed identity first, fall back to CLI\nconst credential = new ChainedTokenCredential(\n  new ManagedIdentityCredential(),\n  new AzureCliCredential()\n);\n```\n\n## Developer Credentials\n\n### Azure CLI\n\n```typescript\nimport { AzureCliCredential } from \"@azure/identity\";\n\nconst credential = new AzureCliCredential();\n// Uses: az login\n```\n\n### Azure Developer CLI\n\n```typescript\nimport { AzureDeveloperCliCredential } from \"@azure/identity\";\n\nconst credential = new AzureDeveloperCliCredential();\n// Uses: azd auth login\n```\n\n### Azure PowerShell\n\n```typescript\nimport { AzurePowerShellCredential } from \"@azure/identity\";\n\nconst credential = new AzurePowerShellCredential();\n// Uses: Connect-AzAccount\n```\n\n## Sovereign Clouds\n\n```typescript\nimport { ClientSecretCredential, AzureAuthorityHosts } from \"@azure/identity\";\n\n// Azure Government\nconst credential = new ClientSecretCredential(\n  \"<tenant>\", \"<client>\", \"<secret>\",\n  { authorityHost: AzureAuthorityHosts.AzureGovernment }\n);\n\n// Azure China\nconst credentialChina = new ClientSecretCredential(\n  \"<tenant>\", \"<client>\", \"<secret>\",\n  { authorityHost: AzureAuthorityHosts.AzureChina }\n);\n```\n\n## Bearer Token Provider\n\n```typescript\nimport { DefaultAzureCredential, getBearerTokenProvider } from \"@azure/identity\";\n\nconst credential = new DefaultAzureCredential();\n\n// Create a function that returns tokens\nconst getAccessToken = getBearerTokenProvider(\n  credential,\n  \"https://cognitiveservices.azure.com/.default\"\n);\n\n// Use with APIs that need bearer tokens\nconst token = await getAccessToken();\n```\n\n## Key Types\n\n```typescript\nimport type { \n  TokenCredential, \n  AccessToken, \n  GetTokenOptions \n} from \"@azure/core-auth\";\n\nimport {\n  DefaultAzureCredential,\n  DefaultAzureCredentialOptions,\n  ManagedIdentityCredential,\n  ClientSecretCredential,\n  ClientCertificateCredential,\n  InteractiveBrowserCredential,\n  ChainedTokenCredential,\n  AzureCliCredential,\n  AzurePowerShellCredential,\n  AzureDeveloperCliCredential,\n  DeviceCodeCredential,\n  AzureAuthorityHosts\n} from \"@azure/identity\";\n```\n\n## Custom Credential Implementation\n\n```typescript\nimport type { TokenCredential, AccessToken, GetTokenOptions } from \"@azure/core-auth\";\n\nclass CustomCredential implements TokenCredential {\n  async getToken(\n    scopes: string | string[],\n    options?: GetTokenOptions\n  ): Promise<AccessToken | null> {\n    // Custom token acquisition logic\n    return {\n      token: \"<access-token>\",\n      expiresOnTimestamp: Date.now() + 3600000\n    };\n  }\n}\n```\n\n## Debugging\n\n```typescript\nimport { setLogLevel, AzureLogger } from \"@azure/logger\";\n\nsetLogLevel(\"verbose\");\n\n// Custom log handler\nAzureLogger.log = (...args) => {\n  console.log(\"[Azure]\", ...args);\n};\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** - Works in development (CLI) and production (managed identity)\n2. **Never hardcode credentials** - Use environment variables or managed identity\n3. **Prefer managed identity** - No secrets to manage in production\n4. **Scope credentials appropriately** - Use user-assigned identity for multi-tenant scenarios\n5. **Handle token refresh** - Azure SDK handles this automatically\n6. **Use ChainedTokenCredential** - For custom fallback scenarios\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-ts","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-ts","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 (6,911 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:31.021Z","embedding":null,"createdAt":"2026-04-18T21:32:32.707Z","updatedAt":"2026-04-24T18:50:31.021Z","lastSeenAt":"2026-04-24T18:50:31.021Z","tsv":"'/.default':368 '/path/to/cert.pem':60,190,198 '/providers/microsoft.managedidentity/userassignedidentities':164 '/resourcegroups':163 '/subscriptions':162 '/var/run/secrets/tokens/azure-identity':79 '1':110,458 '2':112,469 '3':114,479 '3600000':438 '4':116,489 '5':118,503 '6':120,512 '7':122 'accesstoken':386,412,428 'acquisit':432 'action':531 'api':371 'applic':525 'appropri':492 'arg':452,455 'ask':569 'assign':128,140,152,496 'async':420 'auth':302 'authent':5,18,201 'authorityhost':333,341 'automat':511 'await':378 'az':286 'azaccount':318 'azd':301 'azur':2,7,13,20,37,40,43,50,53,56,61,69,72,75,94,274,288,304,327,335,454,507 'azure-identity-t':1 'azure/core-auth':389,415 'azure/identity':30,86,133,173,184,210,226,255,280,295,310,326,351,404 'azure/logger':445 'azure/storage-blob':100 'azureauthorityhost':324,402 'azureauthorityhosts.azurechina':342 'azureauthorityhosts.azuregovernment':334 'azureclicredenti':119,253,271,278,284,398 'azuredeveloperclicredenti':123,293,299,400 'azurelogg':443 'azurelogger.log':451 'azurepowershellcredenti':121,308,314,399 'back':261 'base':204 'bash':27,36,49,68 'bearer':343,374 'best':456 'blob.core.windows.net':105 'blobclient':102 'blobservicecli':98,104 'boundari':577 'browser':203,243 'browser-bas':202 'certif':48,58,63,179 'certificatepassword':199 'certificatepath':189,197 'chain':108,248 'chainedtokencredenti':251,267,397,514 'china':336 'clarif':571 'class':416 'clear':544 'cli':263,275,290,464 'client':41,44,54,57,62,73,96,142,167,178 'clientcertificatecredenti':182,188,196,395 'clientid':149,215,231 'clientsecretcredenti':171,177,323,332,340,394 'cloud':320 'code':220 'cognitiveservices.azure.com':367 'cognitiveservices.azure.com/.default':366 'connect':317 'connect-azaccount':316 'console.log':235,453 'const':87,101,134,145,157,174,185,193,211,227,264,281,296,311,329,337,352,362,376 'creat':356 'credenti':11,24,88,106,107,135,146,158,175,186,212,228,247,265,273,282,297,312,330,353,365,406,472,491 'credentialchina':338 'credentialwithpwd':194 'criteria':580 'custom':246,405,430,448,516 'customcredenti':417 'date.now':437 'debug':439 'defaultazurecredenti':80,84,90,348,355,391,460 'defaultazurecredentialopt':392 'describ':532,548 'develop':272,289,463 'devic':219 'devicecodecredenti':224,230,401 'environ':31,474,560 'environment-specif':559 'environmentcredenti':111 'execut':527 'expert':565 'expiresontimestamp':436 'fall':260 'fallback':517 'feder':76 'file':78 'first':259 'flow':221 'function':358 'getaccesstoken':363,379 'getbearertokenprovid':349,364 'gettoken':421 'gettokenopt':387,413,426 'govern':328 'handl':504,509 'handler':450 'hardcod':471 'id':39,42,52,55,71,74,143,155 'ident':3,14,66,125,258,468,478,482,497 'implement':407,418 'import':83,97,130,170,181,207,223,250,277,292,307,322,347,383,390,409,441 'info':234 'info.message':236 'input':574 'instal':26,29 'interact':200 'interactivebrowsercredenti':208,214,396 'key':380 'kubernet':67 'limit':536 'log':449 'logic':433 'login':205,287,303 'loginhint':217 'manag':124,257,467,477,481,486 'managedidentitycredenti':115,131,137,148,160,252,269,393 'match':545 'miss':582 'multi':500 'multi-ten':499 'need':373 'never':470 'new':89,103,136,147,159,176,187,195,213,229,266,268,270,283,298,313,331,339,354 'npm':28 'null':429 'open':245 'option':425 'order':109 'output':554 'overview':535 'password':64,192 'path':59 'permiss':575 'powershel':305 'practic':457 'prefer':480 'princip':34,47,166 'product':466,488 'promis':427 'provid':345 'recommend':81 'refresh':506 'requir':573 'resourc':154 'resourceid':161 'return':360,434 'review':566 'safeti':576 'scenario':502,518 'scope':422,490,547 'sdk':15,95,508 'secret':35,45,168,484 'servic':8,21,33,46,165 'setloglevel':442,446 'sign':238 'skill':523,539 'skill-azure-identity-ts' 'source-sickn33' 'sovereign':319 'specif':561 'stop':567 'string':423,424 'substitut':557 'success':579 'system':127 'system-assign':126 'task':543 'tenant':38,51,70,501 'tenantid':216,232 'test':563 'token':77,344,361,375,377,431,435,505 'tokencredenti':385,411,419 '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':552 'tri':256 'ts':4 'type':12,25,381,384,410 'typescript':17,82,129,144,156,169,180,206,222,249,276,291,306,321,346,382,408,440 'use':91,240,285,300,315,369,459,473,493,513,521,537 'user':139,151,495 'user-assign':138,150,494 'user@example.com':218 'userpromptcallback':233 'valid':562 'variabl':32,475 'various':10,23 'verbos':447 'visualstudiocodecredenti':117 'web':242 'work':461 'workflow':529 'workload':65 'workloadidentitycredenti':113","prices":[{"id":"ed15e670-e175-408b-ad9a-00824969b1bc","listingId":"497e9158-6a6b-47b6-992d-9ba860f68e2a","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:32.707Z"}],"sources":[{"listingId":"497e9158-6a6b-47b6-992d-9ba860f68e2a","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-identity-ts","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-identity-ts","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:32.707Z","lastSeenAt":"2026-04-24T18:50:31.021Z"}],"details":{"listingId":"497e9158-6a6b-47b6-992d-9ba860f68e2a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-identity-ts","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":"edf12b55556e5b63bc86a4934df10ee09519fe89","skill_md_path":"skills/azure-identity-ts/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-identity-ts"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-identity-ts","description":"Authenticate to Azure services with various credential types."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-identity-ts"},"updatedAt":"2026-04-24T18:50:31.021Z"}}