我正在尝试编写一个活动目录代理,它将接收搜索请求,运行一些代码,然后使用真实服务器重新创建请求。
我无法让它工作,这是到目前为止的代码:
var ldap = require('ldapjs');
var ActiveDirectory = require('activedirectory');
var server = ldap.createServer();
server.bind('cn=root', function(req, res, next) {
console.log('BIND REACHED');
if (req.dn.toString() !== 'cn=root' || req.credentials !== 'somepassword')
return next(new ldap.InvalidCredentialsError());
res.end();
return next();
});
server.listen(389, '127.0.0.1', function() {
console.log('LDAP server listening at %s', server.url);
});
var ad = new ActiveDirectory({
url: 'ldap://127.0.0.1',
baseDN: 'dc=lab,dc=ldapproxy,dc=local',
username: 'root',
password: 'somepassword'
});
ad.findUser('root', function (err, results) {
if (err) {
console.log('AD Login Failed: '+err);
}
else
console.log('AD Login Succeeded.');
});
我得到的错误是: ProtocolError: InvalidDistinguishedNameError: root
似乎无论我如何或在 ActiveDirectory 凭据中放入什么,我都会收到相同的错误。但是,当我在真正的活动目录服务器上使用不同的凭据运行相同的代码时,它可以正常工作而不会出现任何错误。
我在这里想念什么? 我正在阅读的网站正在解释如何在 linux 上使用密码文件执行此操作,我没有使用 linux 或任何文件,也没有看到任何示例描述如何在绑定和搜索上配置服务器我写的。
编辑我忘了提到这个代码 snappit 是用于调试的,我知道我正在尝试连接到我刚刚创建的同一台服务器,这是为了测试目的和学习如何 ldap。