【问题标题】:LDAP authentication using nodejs使用 nodejs 的 LDAP 身份验证
【发布时间】:2018-09-01 22:51:19
【问题描述】:

对于我的 angularJs 应用程序,我想通过使用 nodeJs 连接到我公司的 LDAP 来创建身份验证来管理用户授权。 这是我当前的代码,我收到了这个错误:

绑定失败 状态:0 结果:{"messageID":2,"protocolOp":"LDAPResult","status":0,"matchedDN":"","errorMessage":"","re​​ferrals":[],"controls":[] }

这可以通过简单的 javascript 绑定实现吗? 请问有人有好的样品吗? 提前谢谢!

'use strict';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var ldap = require('ldapjs');
const assert = require('assert');

var creds = {
  url: "ldap://*****************",
};

var baseDN = "OU=****,OU=Utilisateurs,OU=****,OU=****,OU=****,DC=***,DC=***,DC=local";
var user = 'LASTNAME Firstname';
var password = 'password';
var fullDN = 'uid=' + user + ',' + baseDN;

var opts = {
  filter: "(&(objectClass=user)(email=*****@***))",
  scope: "sub",
  password: "password",
  client: "email"
};

function authDN(user, baseDN, password, cb) {
	console.log('binding done');
  client.bind(baseDN,password, function (err) {
    client.unbind();
    cb(err === null, err);
    console.log('binding failed');
  });
}

function output(res, err) {				
  if (res) {
    console.log('success');
    console.log(res);
  } else {
    console.log(['Error',err.code, err.dn, err.message ]);
  }
}

var client = ldap.createClient(creds);
authDN(client, 'server instance name', 'password', output);

  //serach method 
  client.search('CN=LASTNAME Firstname,OU=****,OU=Utilisateurs,OU=****,OU=****,OU=****,DC=***,DC=***,DC=local', opts, function(err, res) {
  assert.ifError(err);

  res.on('searchEntry', function(entry) {
    console.log('entry: ' + JSON.stringify(entry.object));
  });
  res.on('searchReference', function(referral) {
    console.log('referral: ' + referral.uris.join());
  });
  //res.put(Context.REFERRAL,"follow");
  res.on('error', function(err) {
    console.error('error: ' + err.message);
  });
  res.on('end', function(result) {
    console.log('status: ' + result.status);
    console.log('result: ' + result);
    process.exit(1);
  });

});

【问题讨论】:

    标签: angularjs node.js authentication authorization ldapjs


    【解决方案1】:

    嗯,我修好了,我在这里发布它可能对某人有帮助 =) 下面的代码绑定和验证。

    'use strict';
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
    var ldap = require('ldapjs');
    const assert = require('assert');
    
    var creds = {
      url: "ldap://************.local:389",
      bindDN: "DC=***,DC=***,DC=local"
    };
    
    var opts = {
      filter: "(&(objectClass=user))",
      scope: "sub",
      client: "*"
    };
    //binding
    function authDN(user, baseDN, password, cb) {
      client.bind(baseDN, password, function (err) {
        client.unbind();
        cb(err === null, err);
      });
    }
    
    function output(res, err) {				
      if (res) {
        console.log('success :' + res);
      } else {
        console.log(['Error :',err.code, err.dn, err.message ]);
      }
    }
    
    var client = ldap.createClient(creds);
    authDN(client, 'username', 'password', output);
    
    //search
      client.search('CN=*** ,OU=****,...,OU=****,DC=***,DC=***,DC=local', opts, function(err, res) {
      assert.ifError(err);
    
      res.on('searchEntry', function(entry) {
        console.log('entry: ' + JSON.stringify(entry.object));
      });
      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('status: ' + result.status);
        console.log('result: ' + result);
        process.exit(1);
      });
    
    });

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多