使用nodejs进行LDAP身份验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nodejs进行LDAP身份验证相关的知识,希望对你有一定的参考价值。
对于我的angularJs应用程序,我想通过使用nodeJs连接到我公司的LDAP来管理用户授权来创建身份验证。这是我目前的代码,我收到此错误:
绑定失败状态:0结果:{“messageID”:2,“protocolOp”:“LDAPResult”,“status”:0,“matchedDN”:“”,“errorMessage”:“”,“referrals”:[],“控制“:[]}
这可以通过简单的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);
});
});
答案
好吧,我修复了它,我在这里发布它可能会帮助某人=)下面的代码绑定和验证。
'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);
});
});
以上是关于使用nodejs进行LDAP身份验证的主要内容,如果未能解决你的问题,请参考以下文章