从 linux 机器上的 nodejs 连接到带有 Active Directory 的 Sql 服务器
connect to Sql Server with Active Directory from nodejs on a linux machine
我有一个在 linux 机器 上运行的 nodejs 服务。
我需要连接到 Sql 服务器 (Mssql)。
我正在使用 mssql 包,但我没有看到任何与 AD 连接的支持。
还有一个 Azure Keyvault,我们可以通过调用以下方式连接到连接到机器的 MSI:
import * as msRestAzure from 'ms-rest-azure'
msRestAzure.loginWithVmMSI({ resource: this.azureKeyVaultResourceName })
有没有办法使用我从 loginWithVmMSI 获得的凭据并连接到 Sql 服务器?
有没有办法直接用AD调用Sql服务器?
其他驱动程序是否支持它?繁琐还是nodemssql?
如果你可以使用 Tedious(从 tedious@4.1.0 开始支持 Azure AD)。
有一个 top-level authentication
选项允许指定要使用的身份验证方法:
new Connection({
'config': {
'server': '<server>',
'authentication': {
'type': 'azure-active-directory-password',
'options': {
'userName': '<userName>',
'password': '<password>'
}
},
'options': {
'encrypt': true
}
}
})
至于集成安全部分(MSI 身份验证支持),目前 (19.5.2019) pull request 待处理 github。如果它获得 approved/accepted,您将获得支持 - 您也可以手动添加它。
配置如下所示
简单的连接配置:
var connectionADMSI = {
server: [Server Name],
options: {
database:[Database Name],
encrypt: true
},
authentication: {
type: "azure-active-directory-MSI",
// Option client id, if provided, then the token will be only valid for that user
options: {
clientID: [Client ID For User Assigned Identity]
}
}
};
如果您使用 msnodesqlv8
,那您就倒霉了。这是 windows 唯一的解决方案,linux 尚不支持。出于信息目的,我包括如何连接它:
// Init connection string
var dbConfig = {
driver: 'msnodesqlv8',
connectionString:'Driver={SQL Server Native Client 11.0};Server={localhost\SQLNode};Database={nodedb};Trusted_Connection={yes};'
};
我有一个在 linux 机器 上运行的 nodejs 服务。 我需要连接到 Sql 服务器 (Mssql)。
我正在使用 mssql 包,但我没有看到任何与 AD 连接的支持。
还有一个 Azure Keyvault,我们可以通过调用以下方式连接到连接到机器的 MSI:
import * as msRestAzure from 'ms-rest-azure'
msRestAzure.loginWithVmMSI({ resource: this.azureKeyVaultResourceName })
有没有办法使用我从 loginWithVmMSI 获得的凭据并连接到 Sql 服务器? 有没有办法直接用AD调用Sql服务器?
其他驱动程序是否支持它?繁琐还是nodemssql?
如果你可以使用 Tedious(从 tedious@4.1.0 开始支持 Azure AD)。
有一个 top-level authentication
选项允许指定要使用的身份验证方法:
new Connection({
'config': {
'server': '<server>',
'authentication': {
'type': 'azure-active-directory-password',
'options': {
'userName': '<userName>',
'password': '<password>'
}
},
'options': {
'encrypt': true
}
}
})
至于集成安全部分(MSI 身份验证支持),目前 (19.5.2019) pull request 待处理 github。如果它获得 approved/accepted,您将获得支持 - 您也可以手动添加它。
配置如下所示
简单的连接配置:
var connectionADMSI = {
server: [Server Name],
options: {
database:[Database Name],
encrypt: true
},
authentication: {
type: "azure-active-directory-MSI",
// Option client id, if provided, then the token will be only valid for that user
options: {
clientID: [Client ID For User Assigned Identity]
}
}
};
如果您使用 msnodesqlv8
,那您就倒霉了。这是 windows 唯一的解决方案,linux 尚不支持。出于信息目的,我包括如何连接它:
// Init connection string
var dbConfig = {
driver: 'msnodesqlv8',
connectionString:'Driver={SQL Server Native Client 11.0};Server={localhost\SQLNode};Database={nodedb};Trusted_Connection={yes};'
};