UNPKG

@azure/identity

Version:

Provides credential implementations for Azure SDK libraries that can authenticate with Microsoft Entra ID

130 lines (129 loc) • 6.23 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var defaultAzureCredential_exports = {}; __export(defaultAzureCredential_exports, { DefaultAzureCredential: () => DefaultAzureCredential, UnavailableDefaultCredential: () => UnavailableDefaultCredential }); module.exports = __toCommonJS(defaultAzureCredential_exports); var import_chainedTokenCredential = require("./chainedTokenCredential.js"); var import_logging = require("../util/logging.js"); var import_defaultAzureCredentialFunctions = require("./defaultAzureCredentialFunctions.js"); const logger = (0, import_logging.credentialLogger)("DefaultAzureCredential"); class UnavailableDefaultCredential { credentialUnavailableErrorMessage; credentialName; constructor(credentialName, message) { this.credentialName = credentialName; this.credentialUnavailableErrorMessage = message; } getToken() { logger.getToken.info( `Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}` ); return Promise.resolve(null); } } class DefaultAzureCredential extends import_chainedTokenCredential.ChainedTokenCredential { constructor(options) { validateRequiredEnvVars(options); const azureTokenCredentials = process.env.AZURE_TOKEN_CREDENTIALS ? process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase() : void 0; const devCredentialFunctions = [ import_defaultAzureCredentialFunctions.createDefaultVisualStudioCodeCredential, import_defaultAzureCredentialFunctions.createDefaultAzureCliCredential, import_defaultAzureCredentialFunctions.createDefaultAzurePowershellCredential, import_defaultAzureCredentialFunctions.createDefaultAzureDeveloperCliCredential, import_defaultAzureCredentialFunctions.createDefaultBrokerCredential ]; const prodCredentialFunctions = [ import_defaultAzureCredentialFunctions.createDefaultEnvironmentCredential, import_defaultAzureCredentialFunctions.createDefaultWorkloadIdentityCredential, import_defaultAzureCredentialFunctions.createDefaultManagedIdentityCredential ]; let credentialFunctions = []; const validCredentialNames = "EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential"; if (azureTokenCredentials) { switch (azureTokenCredentials) { case "dev": credentialFunctions = devCredentialFunctions; break; case "prod": credentialFunctions = prodCredentialFunctions; break; case "environmentcredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultEnvironmentCredential]; break; case "workloadidentitycredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultWorkloadIdentityCredential]; break; case "managedidentitycredential": credentialFunctions = [ () => (0, import_defaultAzureCredentialFunctions.createDefaultManagedIdentityCredential)({ sendProbeRequest: false }) ]; break; case "visualstudiocodecredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultVisualStudioCodeCredential]; break; case "azureclicredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultAzureCliCredential]; break; case "azurepowershellcredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultAzurePowershellCredential]; break; case "azuredeveloperclicredential": credentialFunctions = [import_defaultAzureCredentialFunctions.createDefaultAzureDeveloperCliCredential]; break; default: { const errorMessage = `Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - ${validCredentialNames}.`; logger.warning(errorMessage); throw new Error(errorMessage); } } } else { credentialFunctions = [...prodCredentialFunctions, ...devCredentialFunctions]; } const credentials = credentialFunctions.map((createCredentialFn) => { try { return createCredentialFn(options ?? {}); } catch (err) { logger.warning( `Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}` ); return new UnavailableDefaultCredential(createCredentialFn.name, err.message); } }); super(...credentials); } } function validateRequiredEnvVars(options) { if (options?.requiredEnvVars) { const requiredVars = Array.isArray(options.requiredEnvVars) ? options.requiredEnvVars : [options.requiredEnvVars]; const missing = requiredVars.filter((envVar) => !process.env[envVar]); if (missing.length > 0) { const errorMessage = `Required environment ${missing.length === 1 ? "variable" : "variables"} '${missing.join(", ")}' for DefaultAzureCredential ${missing.length === 1 ? "is" : "are"} not set or empty.`; logger.warning(errorMessage); throw new Error(errorMessage); } } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { DefaultAzureCredential, UnavailableDefaultCredential }); //# sourceMappingURL=defaultAzureCredential.js.map