Add support for ClientSecret and DeviceCode credentials in getCredential function
This commit is contained in:
34
src/azure.js
34
src/azure.js
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user