3

我是 ldap 的新手。我正在使用 ldapauth.js 来验证凭据。

我使用 ldapauth npm 进行身份验证。

/*----------------LDAP_AUTH----------------*/

var ldap = require('ldapjs');
var LdapAuth = require('ldapauth');
var server = ldap.createServer();

server.search('o=example', function(req, res, next) {
  var obj = {
    dn: req.dn.toString(),
    attributes: {
      objectclass: ['organization', 'top'],
      o: 'example'
    }
  };

  if (req.filter.matches(obj.attributes))
    res.send(obj);

  res.end();
});

server.listen(1389, function() {
  console.log('LDAP server listening at %s', server.url);
});



var options = {
    url: "ldap://0.0.0.0:1389",
    adminDn: "uid=myadminusername,ou=users,o=example",
    adminPassword: "mypassword",
    searchBase: "ou=users,o=example",
    searchFilter: "(uid={{username}})"
};
var auth = new LdapAuth(options);

auth.authenticate('myadminusername', 'mypassword', function(err, user) { console.log('err'); 
    console.log(err);
console.log(err.message);
console.log('user');
console.log(user);
});

auth.close(function(err) { console.log('errorr'); })

在控制台中我收到错误消息。

LDAP server listening at ldap://0.0.0.0:1389
err
{ dn: [Getter],
  code: [Getter],
  name: [Getter],
  message: [Getter] }
No tree found for: uid=myadminusername, ou=users, o=example
user
undefined

请帮助我找出问题所在。

谢谢你的时间

4

2 回答 2

1

It looks like you have mistyped the port number, the default LDAP port is 389 but here you are using url: "ldap://0.0.0.0:1389". I assume that you are using the real IP in you code.

于 2013-02-11T08:24:44.777 回答
1

您正在同一进程中运行 LDAP 客户端和 LDAP 服务器。不知何故,我怀疑这是你想要做的。通常,您要么创建一个服务器进程来提供身份验证服务,要么作为客户端尝试根据中央 LDAP 目录对用户进行身份验证。

该错误消息还显示服务器没有任何数据 - 自然,当您启动它并且没有提供任何数据时。

我猜您只是想要求您的中央(已经在某处运行)LDAP 服务器对想要使用您的服务器/api/网站的用户进行身份验证,那么您所做的第二部分是正确的。仅使用此处的说明

在我关于性能的并行问题中查看 express 应用程序中的配置

于 2013-12-11T16:58:38.207 回答