@azure/identity
Version:
Provides credential implementations for Azure SDK libraries that can authenticate with Microsoft Entra ID
130 lines (129 loc) • 6.23 kB
JavaScript
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