概括
使用 nodejs繁琐的驱动程序,我可以指定任何域名以通过 NTLM 身份验证连接到我的 SQL Server 实例,然后能够使用此连接查询数据库。
背景
繁琐的驱动程序被用作几乎所有流行的节点 SQL Server 模块(node-mssql,typeorm)的 db 连接器,不出所料,我在使用所有三个模块进行测试时遇到了这个问题。
从历史上看,我相信这不是问题,所以我开始怀疑这是否与我正在使用的 Windows 机器的配置有关(Win Server 2016)。不幸的是,我缺乏 Windows 管理知识。
目前官方 GitHub 上针对繁琐的驱动程序提出了一个问题,该问题完全涵盖了我所遇到的情况,但我不明白驱动程序如何成为此问题的根源。
我尝试过的事情
- 连接到 Windows 域的 VM
- 未连接到 Windows 域的 VM
- 与不是默认管理员的用户连接
- 成功登录尝试后检查事件查看器日志
- 这将 SecurityID、Account Name 和 Account Domain 显示为所有正确的值(而不是我在连接配置中指定的不正确的值)
再生产
npm 安装繁琐
let config = {
server: '<server ip>',
port: 1433,
authentication: {
type: 'ntlm',
options: {
domain: 'WRONGDOMAIN',
userName: 'Administrator', // update me
password: 'password' // update me
}
},
options: {
database: '<database name>'
}
}
然后,只要用户具有所需的权限,无论域值是什么,我都可以连接到数据库。