Add support for ClientSecret and DeviceCode credentials in getCredential function

This commit is contained in:
2026-02-03 21:50:39 +01:00
parent 0cde901ec2
commit 0806a2b588

View File

@@ -1,12 +1,42 @@
// auth.js
// azure.js
import http from "node:http";
import { URL } from "node:url";
import open from "open";
import crypto from "node:crypto";
import { PublicClientApplication } from "@azure/msal-node";
import fs from "node:fs";
import path from "node:path";
import os from "node:os";
import { PublicClientApplication, ConfidentialClientApplication } from "@azure/msal-node";
import { DefaultAzureCredential, ClientSecretCredential, DeviceCodeCredential } from "@azure/identity";
export async function getCredential(credentialType, options) {
switch (credentialType) {
case "default":
return new DefaultAzureCredential();
case "clientSecret":
if (!options.tenantId || !options.clientId || !options.clientSecret) {
throw new Error("tenantId, clientId, and clientSecret are required for ClientSecretCredential");
}
return new ClientSecretCredential(
options.tenantId,
options.clientId,
options.clientSecret
);
case "deviceCode":
if (!options.tenantId || !options.clientId) {
throw new Error("tenantId and clientId are required for DeviceCodeCredential");
}
return new DeviceCodeCredential({
tenantId: options.tenantId,
clientId: options.clientId,
userPromptCallback: (info) => {
console.log(info.message);
},
});
default:
throw new Error(`Unsupported credential type: ${credentialType}`);
}
}
function fileCachePlugin(cachePath) {
return {