如何在node-mssql中配置Azure AD身份验证以使用JSON处理功能?
配置失效的核心原因
你的配置确实存在结构问题,这是自定义认证配置没有覆盖顶层user/password的根本诱因:
- node-mssql的配置读取有固定优先级:只要根节点下存在非空的
user、password顶层字段,框架会直接优先使用这两个值构建认证参数,完全忽略options字段下透传给tedious的自定义认证配置,这也是报错信息始终返回顶层user取值的直接原因。 - 透传tedious原生自定义认证时,必须删除根节点的
user、password字段。如果需要使用Azure AD密码认证这类非默认SQL账号密码认证方式,保留顶层账号字段会直接拦截tedious原生配置的加载流程。
调整后的可用配置示例
const sqlConfig = { server: process.env.SQL_SERVER, database: process.env.DATABASE_NAME, // 移除原顶层的user、password字段,避免优先级覆盖 options: { encrypt: true, authentication: { type: "azure-active-directory-password", options: { userName: "root.options.authentication.options.userName", password: "password" } } }, // 直接在根节点启用node-mssql提供的JSON处理实用功能 parseJSON: true };
版本兼容提示:如果移除顶层账号字段后配置依然不生效,可以检查当前使用的node-mssql版本,v7及更早版本存在配置透传的已知bug,升级到v8及以上版本即可正常读取tedious原生认证配置。
内容的提问来源于stack exchange,提问作者Stephanie
相关产品推荐
相关产品推荐

