我读过 mssql 模块在内部使用 Tedious 连接到 azure sql db。因此,我正在尝试使用 azure-active-directory-access-token 建立连接。但是,我收到错误 ConnectionError: Login failed for user token-identified principal
示例代码:-
const mssql = require('mssql');
const msrestAzure = require("ms-rest-azure");
const clientSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
const serverName = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
const databaseName = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
const clientId = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
const tenantId = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
let token = 0;
msrestAzure.loginWithServicePrincipalSecret(clientId,
clientSecret,
tenantId,
{
tokenAudience: "https://database.windows.net/",
},
).then((databaseCredentials) => {
return new Promise((resolve, reject) => {
databaseCredentials.getToken((err, results) => {
if (err) return reject(err);
resolve(results.accessToken);
});
});
}).then((token) => {
// console.log(token);
var config = {
server: serverName,
authentication: {
type: "azure-active-directory-access-token",
options: {
token: token,
}
},
options: {
database: databaseName,
encrypt: true,
}
};
return new mssql.connect(config);
}).then(pool => {
console.log('Connected to MSSQL')
return pool;
}).catch((error) => {
console.log(error);
});