我正在为我的团队使用MEAN堆栈(MongoDB,Express,Angular和Node)创建的网站设置LDAP身份验证。但是,我的绑定失败。
这项工作已在Windows 10上完成。我很难遵循ldap.js documentation进行客户端集成,但是发现Github issue似乎很有希望。我相信我的问题是绑定API。我的理解是,我需要在服务器中给它一些东西(我使用了我的mailNickname,尽管我也尝试过使用userPrincipalName)和一个私有的东西(我的密码)。我使用了AD Explorer,该浏览器允许我使用userPrincipalName(first.last@company.com)和密码连接到公司服务器。我可以使用几个属性(例如mailNickname和userPrincipalName)在服务器中进行搜索,因此我不确定是什么导致了绑定错误。
今年夏天初为Hygieia仪表板建立身份验证时,我们使用了同一台服务器(带有Active Directory),并且AD Explorer运行良好,因此,我相信自己拥有正确的服务器。
var ldap = require('ldapjs');
var assert = require('assert');
// Create client and bind to AD
var ldapClient = ldap.createClient({
url: "ldap://servername.us.company.com:389"
});
ldapClient.bind(myDN, password, function(err) {
assert.ifError(err);
});
var opts = {
scope: 'sub',
filter: '(mailNickname=NICKNAME4Testing)'
};
ldapClient.search('OU=AllUsers,DC=us,DC=company,DC=com', opts, function(err, res) {
assert.ifError(err);
res.on('searchEntry', function(entry) {
console.log(entry.object.name);
console.log(entry.object.dn);
});
res.on('searchReference', function(referral) {
console.log('referral: ' + referral.uris.join());
});
res.on('error', function(err) {
console.error('error: ' + err.message);
});
res.on('end', function(result) {
console.log(result);
});
});
当我从命令行开始运行npm时,我希望输出是终端上的四行,告诉我我的名字,我的DN,搜索参考和“结束”。但是,我实际上得到的是
AssertionError [ERR_ASSERTION]:ifError出现了意外异常:80090308:> LdapErr:DSID-0C09042F,注释:AcceptSecurityContext错误,数据52e,> v2580
根据another page that I found,问题可能出在我的密码上,但是我使用的正是通过ADExplorer访问计算机和服务器所使用的内容。有一个特殊字符,但是我尝试同时使用CHARACTER和\ CHARACTER。
答案 0 :(得分:0)
嗯,我一直在挖掘并设法解决这个特殊错误。我使用了userPrincipalName而不是DN,然后将密码保持不变。我不再有错误,但是现在我有一个SearchResponse,我不太确定该怎么做。