【问题标题】:ldapjs authentication errorldapjs 认证错误
【发布时间】:2014-03-10 09:00:47
【问题描述】:

我公司有一个ldap服务器,我尝试使用nodejs和ldapjs模块测试ldap连接,我只是想首先测试连接,所以没有包含搜索功能。

代码如下:

exports.authenticate = function(req, res){
  var ldap = require('ldapjs');
  var username = req.body.username;
  var password = req.body.password;

  var client = ldap.createClient({
    url: 'LDAP://192.168.3.220/'
  });

  client.bind(username, password, function (err) {
    if(err){
      res.send(err);
    }else{
      res.send('login');        
  });
};

当我输入正确的用户名和密码时,它会发回“登录”,这是预期的。 当我输入正确的用户名但错误的密码时,它会发回 err 对象,这也是预期的。

问题来了: 当我输入有效用户名或无效用户名(如“fjdkfjdklsjfsjd”)而没有密码时,它也返回“登录”,这是不正常的。

我是 ldap 和 ldapjs 的新手,所以这可能只是一个简单的错误,但我无法弄清楚。请帮忙....

【问题讨论】:

    标签: node.js authentication login ldap


    【解决方案1】:

    对于绑定,您需要传递与 LDAP 中的条目关联的 dn 和密码,而不是直接传递用户名/密码。

    所以进行基本的匿名搜索,从结果中获取 dn,然后尝试使用该 dn 和用户输入的密码进行绑定。

    var ldapres = null
    
    var opts = {
      filter: '(username='+ username +')',
      scope: 'sub',
    }
    
    client.search('ou=people,dc=company,dc=com', opts, function (err, result) {
    
      result.on('searchEntry', function (entry) {
        ldapres = entry.raw
      })
    
      result.on('end', function (result) {
        if (!ldapres) { return res.send('Invalid username') }
    
        client.bind(ldapres.dn, password, function (err) {
          if (err) { return res.send('Wrong password') }
          res.send('You are logged')
        })
    
      })
    })
    

    我假设您希望在 LDAP 中定位属性用户名,但您可以更改它,与搜索的 ou 和 dc 字段相同。

    【讨论】:

      【解决方案2】:

      过了很长时间,但希望这会对某人有所帮助。

      “问题是:当我输入有效用户名或无效用户名(如“fjdkfjdklsjfsjd”)时,它也返回“登录”,这是不正常的。”

      不,LDAP 中有一种叫做“匿名”绑定的东西。它允许您在没有密码的情况下进行绑定。 所以为什么?。原因是要在 LDAP 中搜索,您首先需要 BIND,因此有些人更喜欢匿名绑定,而不是使用专用用户进行搜索操作。所以仅出于这个原因,应该使用匿名绑定。

      重要

      因此,当您使用 LDAP 时,您需要从开发人员端处理空密码和空 DN 场景,而不是将其传递给 LDAP 服务器

      P.S:在某些目录服务中,这可以关闭

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-10
        • 1970-01-01
        • 2016-06-16
        相关资源
        最近更新 更多