@azure/identity

Microsoft Entra ID credential library that authenticates every Azure SDK client, from managed identity in production to CLI and browser login in development.

SDK
npm
v4.14.0
2,301 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
97 /100 Excellent
Development Activity 100
Maintenance 96
Community 92
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
79 /100 Good
Architecture 87
Code Quality 88
Innovation 72
Learning Curve 70

@azure/identity is the authentication library underpinning the entire Azure SDK for JavaScript. It implements the TokenCredential interface expected by every Azure client library (Key Vault, Storage, Cosmos DB, and dozens more), so instead of hand-rolling OAuth 2.0 flows against Microsoft Entra ID, an app constructs a credential object once and passes it to any Azure client constructor.

The package ships a large family of credential classes covering the practical span of how Azure apps actually authenticate: ManagedIdentityCredential for workloads running on Azure compute, ClientSecretCredential/ClientCertificateCredential/ClientAssertionCredential for service principals, WorkloadIdentityCredential for Kubernetes, AzureCliCredential/AzurePowerShellCredential/VisualStudioCodeCredential for local development against a developer’s already-authenticated tooling, and InteractiveBrowserCredential/DeviceCodeCredential for interactive user sign-in. DefaultAzureCredential chains the most common of these together so the same code authenticates unmodified whether it’s running on a laptop or in an Azure-hosted production environment.

Under the hood, most credentials wrap Microsoft’s MSAL.js libraries (@azure/msal-node and @azure/msal-browser) behind a shared MsalClient abstraction, adding Azure-specific concerns MSAL doesn’t handle itself: token caching policy, regional authority resolution, Continuous Access Evaluation support, and a plugin system (useIdentityPlugin) that lets separate packages like @azure/identity-broker and @azure/identity-cache-persistence add native broker auth and persistent disk caching without bloating the core package.

As part of the azure-sdk-for-js monorepo, the package is built dual-target (Node.js, browser, and Cloudflare Workers/workerd) from a single TypeScript source tree, with platform-specific files resolved through conditional package exports.

What You Get

  • DefaultAzureCredential — a pre-built chain that tries managed identity, environment variables, and developer tools in order, so the same code works in Azure and in local dev
  • Service principal credentials — ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential for app-to-app authentication with a secret, certificate, or signed assertion
  • Managed identity support — ManagedIdentityCredential for Azure App Service, Functions, VMs, AKS, Arc, and Cloud Shell without managing any secrets
  • Developer-tool credentials — AzureCliCredential, AzurePowerShellCredential, and VisualStudioCodeCredential that reuse a developer’s existing sign-in
  • Interactive user auth — InteractiveBrowserCredential and DeviceCodeCredential for browser popup/redirect and limited-UI device flows
  • Token caching and plugins — in-memory and opt-in persistent disk token caching, plus a plugin API (useIdentityPlugin) for broker auth and VS Code sign-in

Common Use Cases

  • Authenticating any Azure SDK client — construct a credential once and pass it to Key Vault, Storage, Cosmos DB, or any other Azure client constructor
  • Zero-secret production auth — use ManagedIdentityCredential/DefaultAzureCredential so an Azure-hosted app never stores a client secret
  • CI/CD pipelines — AzurePipelinesCredential and WorkloadIdentityCredential authenticate Azure DevOps and Kubernetes workloads via federated identity
  • Local development against Azure resources — AzureCliCredential/DefaultAzureCredential let a developer authenticate with az login instead of provisioning app credentials
  • Multi-tenant and custom auth chains — ChainedTokenCredential composes multiple credential instances for apps that need a bespoke fallback order

Under The Hood

Architecture

Execution centers on a shared MsalClient (src/msal/nodeFlows/msalClient.ts, ~900 lines) that every Node credential delegates to for silent and interactive token acquisition, wrapping @azure/msal-node with Azure-specific policy: regional authority resolution, MSAL log-level bridging, plugin invocation, and error normalization into CredentialUnavailableError/AuthenticationRequiredError. Each credential class (40+ files under src/credentials/) is a thin adapter that configures MsalClient for its specific flow and exposes the common getToken(scopes, options) shape from TokenCredential. DefaultAzureCredential composes several of these into a ChainedTokenCredential, and a separate IdentityClient (src/client/identityClient.ts) handles the lower-level HTTP exchanges (e.g. managed identity IMDS/token-exchange endpoints) that don’t go through MSAL at all. Platform variation (Node vs. browser vs. workerd) is resolved at the file level via a #platform/* subpath-imports map, with -browser.mts sibling files substituted for browser/edge builds — a structural pattern that keeps one credential name importable everywhere while its implementation differs per runtime.

Tech Stack

TypeScript targeting Node.js 22+, built with the shared @azure/dev-tool build pipeline into commonjs, ESM, browser, and workerd output targets from one source tree, with API surface locked via api-extractor. Runtime dependencies are almost entirely other first-party Azure packages (@azure/core-auth, @azure/core-client, @azure/core-rest-pipeline, @azure/core-util, @azure/logger) plus @azure/msal-node/@azure/msal-browser for the actual OAuth/OIDC protocol work and open for launching a system browser during interactive flows.

Code Quality

Tests are extensive and split by concern: test/public for the credential-facing API surface (Vitest specs per credential class), test/internal for MsalClient internals, and separate test/integration/test/manual/test/manual-integration suites for live-cloud scenarios (Cloud Shell, Azure Arc, DevOps) that can’t run in unit CI. The project enforces @azure/eslint-plugin-azure-sdk lint rules, strict TypeScript project references per build target, and Prettier formatting, with errors modeled as typed classes (AuthenticationError, CredentialUnavailableError, AggregateAuthenticationError) rather than raw exceptions.

What Makes It Unique

Rather than exposing MSAL.js directly, the package curates it into Azure-specific credential chains (DefaultAzureCredential above all) that encode Microsoft’s own guidance on which auth method to try in which environment, so the same application code authenticates unmodified across local development, CI, and every Azure compute host. The plugin system further lets platform-specific auth mechanisms (native OS broker, VS Code sign-in, persistent disk cache) ship and version independently of the core credential logic.

Used by 43 apps in this directory

TypeScript
92%
Other

n8n

Automation · No Code Platforms

208,437

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 92%
Updated yesterday
TypeScript
84%
Apache 2.0

nao

AI Development · Analytics

1,949

Build and deploy an open-source analytics agent that understands your data warehouse and answers business questions in plain English.

View details
85
Repo Health
76
Technical
67
Dependency
Built with
TypeScript 84%
Python 15%
Updated today
TypeScript
98%
Other

Novu

Developer Tools

40,195

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated today
TypeScript
98%
Other

Novu

Developer Tools

40,195

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated today
TypeScript
99%
Other

openclaude

AI Agents · AI Code Assistants

34,123

Run Claude Code workflows against any LLM — OpenAI, Gemini, Ollama, and 200+ backends — from a single terminal-first CLI.

View details
87
Repo Health
78
Technical
71
Dependency
Built with
TypeScript 99%
Updated today
TypeScript
90%
MIT

OpenClaw

AI Agents · AI Assistants

392,894

An open-source AI assistant that runs on your own hardware and meets you in Discord, Slack, WhatsApp, iMessage, Telegram, and 20+ other channels, with native apps for every major platform.

View details
88
Repo Health
88
Technical
66
Dependency
Built with
TypeScript 90%
Updated today
TypeScript
54%
Other

OpenReplay

Analytics

13,042

Self-hosted session replay and product analytics suite that lets you see exactly what users do on your web app — without sending data to third parties.

View details
91
Repo Health
77
Technical
66
Dependency
Built with
TypeScript 54%
Go 13%
Updated yesterday
TypeScript
94%
AGPL 3.0

Papra

Bookmarks Archiving

5,587

Self-hosted document archiving with email ingestion, OCR full-text search, and pluggable storage — store once, find anything.

View details
86
Repo Health
82
Technical
69
Dependency
Built with
TypeScript 94%
Updated yesterday
TypeScript
96%
MIT

Payload CMS

Blogging · CMS · Developer Tools

45,458

The open-source, Next.js-native headless CMS that lives inside your /app folder and gives you a full TypeScript backend instantly.

View details
92
Repo Health
88
Technical
65
Dependency
Built with
TypeScript 96%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers