1

我正在为我的团队使用 MEAN 堆栈(MongoDB、Express、Angular 和 Node)创建的网站设置 LDAP 身份验证。但是,我的绑定不成功。

这项工作已在 Windows 10 上完成。我无法按照ldap.js 文档进行客户端集成,但发现了一个看起来很有希望的Github 问题。我相信我的问题在于绑定 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 start 时,我希望终端上的输出是四行,告诉我我的名字、我的 DN、搜索参考和“结束”。但是,我实际上得到的是

AssertionError [ERR_ASSERTION]:ifError 出现不需要的异常:80090308:>LdapErr:DSID-0C09042F,注释:AcceptSecurityContext 错误,数据 52e,>v2580

根据我发现的另一个页面,问题可能出在我的密码上,但我使用的正是我用来通过 ADExplorer 访问我的计算机和服务器的东西。有一个特殊字符,但我尝试同时使用 CHARACTER 和 \CHARACTER 均无济于事。

4

1 回答 1

0

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

于 2019-07-16T15:29:36.630 回答