node.js - 从 ldapjs 搜索中获取特定对象属性
问题描述
我正在将用户绑定和身份验证到 ldap,如下面的代码所示。现在我正在获取对象的所有属性,例如,我想要的只是获取“distingushedName”。ldapjs 中有一个方法吗?是过滤问题吗?
谢谢 !
'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);
});
});
解决方案
找到它,它可能对某人有帮助 =)
我刚刚将(属性:['distinguishedName'])添加到如下选项:
var opts = {
filter: "(&(objectClass=user))",
scope: "sub",
client: "*",
attributes: ['distinguishedName']
};
推荐阅读
- database - 是否有一个开源组件可以订阅各种数据库活动提要并使 Redis 等进程外缓存失效?
- sql - SQL - 使用 JOIN 或 SUM 时的双倍(或三倍)计数统计信息
- java - 从 openapi 定义自定义生成的 java 类名
- rust - Rust在循环中修改链表中的元素时借用检查器多个可变引用
- maven - IntelliJ 无法索引远程 Maven 存储库
- python - 如何在 Python 格式字符串迷你语言中给出多个参数(宽度、叹息、分组)?
- java - 在 Java 中乘/加 Google OR 工具 IntVar 和常量
- python - 从导入的文件更新布尔变量
- javascript - 我想在重新发送 otp 时避免 Recaptcha 验证
- c# - 如何从 appsetting.json 获取 ConnectionString 值到核心 WebAPI 的存储库中