Node.js用ActiveDirectory库跨信任域LDAP认证报Invalid Credentials怎么办
Active Directory跨信任域认证失败问题解决方案
你遇到的data 52e错误是AD返回的凭证无效标识,但你用Active Directory Explorer可以正常认证,说明域信任配置本身没有问题,问题出在activedirectory库的配置参数上,可按以下步骤修改:
- 改用全局编录端口
普通LDAP 389端口默认仅处理当前域的认证请求,跨信任域的认证需要连接域控制器的全局编录端口3268,将url配置修改为ldap://xyz.com.pk:3268 - 开启请求转发(referrals)
activedirectory库默认关闭跨域请求转发,需要手动开启该配置,允许xyz.com.pk将abc.pk域的认证请求转发到信任的目标域控制器 - 取消baseDN限制或传完整用户标识
跨域认证时如果使用完整UPN(如user_abc@abc.pk)作为用户名参数,无需配置baseDN限制查询范围,AD可直接根据UPN后缀路由到对应域;如果要保留baseDN配置,必须确保用户名传完整的abc\user_abc(域\用户名)格式或完整UPN,不能只传用户名前缀。
修改后的可用代码示例:
const ActiveDirectory = require('activedirectory'); var ad = new ActiveDirectory({ "url": "ldap://xyz.com.pk:3268", "referrals": { "enabled": true } }); // 必须传完整UPN或 域\用户名 格式的用户名 ad.authenticate("user_abc@abc.pk", password, function(err, auth) { console.log('auth function called with username: '+username); if (err) { console.log('auth function called and with following err '+JSON.stringify(err)); return; } if (auth) { console.log('Authenticated from Active directory!'); } });
如果修改后仍报错,可做以下检查:
- 确认代码中传入的用户名、密码和你用Active Directory Explorer登录时输入的凭证完全一致
- 如果是外部信任而非林信任,需确认abc.pk后缀已添加到xyz.com.pk的允许UPN后缀列表中
内容的提问来源于stack exchange,提问作者jazeb Sheraz
相关产品推荐
相关产品推荐

