node.js - LDAP 获取全名和电子邮件 nodejs
问题描述
我正在用节点 js 编写应用程序。对于登录,我想使用活动目录。我找到了这个包。身份验证正常,但我无法获取用户全名和电子邮件。有我的代码:
var ActiveDirectory = require('activedirectory2');
var ActiveDirectory = require('activedirectory2');
var _ = require('underscore');
var query = 'cn=*Exchange*';
var opts = {
includeMembership : [ 'all' ],
includeDeleted : false
};
var config = {
url: 'ldap://dc.in.domain.cz',
baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
bindDN: 'CN=searchuser,CN=users,DC=in,DC=domain,DC=cz'
};
var ad = new ActiveDirectory(config);
var username = 'username @in.domain.cz';
var password = 'my_password';
ad.authenticate(username, password, function (err, auth) {
if (auth) {
console.log('Authenticated!');
ad.find(query, function (err, results) {
if ((err) || (!results)) {
console.log('ERROR: ' + JSON.stringify(err));
return;
}
console.log('Users');
_.each(results.users, function (user) {
console.log(' ' + user.cn);
});
});
} else {
console.log('Authentication failed!');
}
});
我得到错误:
ERROR: {"lde_message":"000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580\u0000","lde_dn":null}
谢谢
解决方案
该authenticate
函数仅用于测试凭据是否有效。例如,如果您有一个登录页面并且您想查看用户提供给您的凭据是否正确,您将使用它。这些凭据不用于其他操作。
在文档中,它在“使用”标题下说:
配置中指定的用户名和密码用于用户和组查找操作。
因此,当您使用 时find()
,它会使用您输入的凭据config
。你bindDN
有,但你没有password
,这可能是绑定失败的原因。您需要为该“searchuser”帐户添加密码:
var config = {
url: 'ldap://dc.in.domain.cz',
baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
bindDN: 'CN=searchuser,CN=users,DC=in,DC=domain,DC=cz',
password: 'something'
};
请注意,文档说您也可以使用该username
属性而不是bindDN
,但不要认为除了能够指定用户名而不是整个 DN 之外没有任何功能差异:
var config = {
url: 'ldap://dc.in.domain.cz',
baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
username: 'searchuser@in.domain.cz',
password: 'something'
};
推荐阅读
- android - FCM 通知在发布模式下工作,但*不是*来自 Play 商店
- python - subprocess.run 返回 ValueError:嵌入的空字节
- php - div类中的PHP文本不显示文本中的空格
- android - “没有为“响应”类型定义吸气剂“主体”
”。关于颤振 - node.js - Puppeteer 在 Node.js 无服务器 AWS lambda 的页眉和页脚中使用谷歌字体
- firebase - 在 Flutter 中使用 admob 和 image_picker 包的问题
- php - 根据产品类别替换 WooCommerce 占位符图像
- java - 如何在 Android 中从 Intent 中获取数据
- asp.net-core - Blazor RoleClaims 策略不适用于 Api 端点
- mysql - 即使我可以从 mariadb-client 访问,也无法从 go-sql-driver 访问 MariaDB