如何与公司LDAP服务器成功绑定

时间:2019-07-16 14:59:58

标签: javascript node.js ldap openldap ldapjs

我正在为我的团队使用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。

1 个答案:

答案 0 :(得分:0)

嗯,我一直在挖掘并设法解决这个特殊错误。我使用了userPrincipalName而不是DN,然后将密码保持不变。我不再有错误,但是现在我有一个SearchResponse,我不太确定该怎么做。