LDAP获取全名和电子邮件节点

我正在用Node js编写应用程序。对于登录,我想使用活动目录。我找到了这个package。身份验证可以,但是我无法获得用户全名和电子邮件。有我的代码:

var activeDirectory = require('activedirectory2');
var activeDirectory = require('activedirectory2');
var _ = require('underscore');
var query = 'cn=*Exchange*';
var opts = {
    includeMembership : [ 'all' ],includeDeleted : false
};
    var config = {
        url: 'ldap://dc.in.domain.cz',baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',bindDN: 'CN=searchuser,CN=users,DC=cz'
    };
    var ad = new activeDirectory(config);
    var username = 'username @in.domain.cz';
    var password = 'my_password';

    ad.authenticate(username,password,function (err,auth) {
        if (auth) {
        console.log('Authenticated!');
        ad.find(query,results) {
                if ((err) || (!results)) {
                    console.log('ERROR: ' + JSON.stringify(err));
                    return;
                }

                console.log('Users');
                _.each(results.users,function (user) {
                    console.log('  ' + user.cn);
                });
            });
        } else {
            console.log('Authentication failed!');
        }
    });

我收到错误消息:

ERROR: {"lde_message":"000004DC: LdapErr: DSID-0C0907C2,comment: In order to perform this operation a successful bind must be completed on the connection.,data 0,v2580\u0000","lde_dn":null}

谢谢

hustsky123 回答:LDAP获取全名和电子邮件节点

authenticate函数仅用于测试凭据是否有效。例如,如果您有一个登录页面,并且想查看用户提供给您的凭据是否正确,则可以使用此功能。这些凭据不会用于其他操作。

在文档中,其在the Usage heading下显示:

  

配置中指定的用户名和密码是用于用户和组查找操作的

因此,当您使用find()时,它使用的是您在config中放置的凭据。您在那里有bindDN,但是您没有password,这很可能是绑定失败的原因。您将需要为该“ searchuser”帐户添加密码:

var config = {
    url: 'ldap://dc.in.domain.cz',baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',bindDN: 'CN=searchuser,CN=users,password: 'something'
};

请注意,文档显示您还可以使用username属性而不是bindDN,但是除了可以只指定用户名而不是整个用户名,不要认为功能上有任何区别DN:

var config = {
    url: 'ldap://dc.in.domain.cz',username: 'searchuser@in.domain.cz',password: 'something'
};
本文链接:https://www.f2er.com/3164546.html

大家都在问