Tag: ldapjs

如何在NodeJS中使用ldapjs连接LDAP

过去几天一直在使用NodeJS,并使用ldapjs模块运行LDAP连接。 我尝试连接的背景故事Active-Directory服务器支持LDAPv3。 以下是我用来连接到LDAP服务器的代码: var ldapClient = ldap.createClient({url: 'ldap://ldap.myhost.com.au:389'}, function (err){ if (err) { console.log('Failed'); process.exit(1); } else console.log('Through'); }); 在给定的例子中 ,它不包括最后一个callback函数,我尝试了它,因为大多数操作都包含callback的常见模式,所以我想我可以有一点运气,我没有。 我也尝试过和没有callback,仍然没有工作。 即使将url更改为无效URL,ldapClient容器也将始终返回true。 – 到目前为止,詹姆斯·托马斯的答案已经在下面解释了这一点 – 编辑: 我尝试绑定到LDAP的用户,并执行search查询作为下面的代码片段: ldapClient.bind('cn=drupal,ou=SystemAccount,dc=myhost,dc=com,dc=au', '', function (err) { if (err) { console.log('LDAP binding failed… disconnecting'); process.exit(1); } }); var opts = { scope: 'sub' }; var result = ldapClient.search('ou=Users,dc=myhost,dc=com,dc=au', opts, […]

我需要什么来连接到LDAP,并绑定到更“一般”的DN来search用户?

我遇到了一个我从未真正遇到过的问题,即从NodeJS应用程序连接到LDAP。 到现在为止,我甚至不知道有一个LDAP这样的东西,所以我一直在学习。 这就是为什么这可能是一个愚蠢的问题,但我还没有find任何简洁的答案。 这个要求是: “用你的应用程序login到你的应用程序中,用户和你的login屏幕上提供的通行证” 。 客户端有一个LDAP,并且想要使用它来validation我们的应用程序的用户,所以用户login屏幕上input的用户名和密码用于尝试login到LDAP。 我知道我需要三件东西来连接到LDAP: 服务器的URL 用户(通过) 和一个DN绑定 我目前使用ldapjs从ldapjs进行连接。 我需要用来validation用户的操作,我知道, 这是bind操作 。 为此,我需要创build服务器(已经完成,没有问题),并通过DN和密码。 我假设DN包含用户。 就像是 CN=myuser,OU=MyOrg,OU=Users,DN=MyLdapServer,DN=com 哪些工作… 只要用户属于同一个“分支” 。 也就是说,如果他们都在,比如OU=MyOrg 。 这就是为什么我能够在bind()对DN进行“硬编码”,只需要用replace来改变用户。 问题是,并不是所有的人都属于同一个“分支”(我不知道这个技术名称)。 说,我有一些在OU=MyOrg ,一些在OU=MyOtherOrg … 所以我不知道用户的组织是什么,所以我不能让他绑定到LDAP客户端,因为我缺lessDN。 客户端仅向我们提供了一个例子,使用ASP.NET和ADO.NET这样的另一个应用程序,使用类似于SQL命令的方式获取LDAP信息。 事情是,相当于DN是一个更通用的。 就像是 ldap://MyLdapServer.com/CN=[the_user_provided] 这显然是有效的。 如果我尝试做同样的事情,使用更多的“通用”DN路由(我假设它是LDAP树上的一个更高的节点),提供其中一个用户的密码,我得到一个authentication错误。 那么,怎么样? 我错过了什么? 只需使用“CN = [username]”DNlogin用户到LDAP,我需要什么? 那是只有ADO.NET可以使用的东西吗? 谢谢,抱歉,如果这是一个太普通的问题。

ldapjs,如何删除属性

我想使用Node.js ldapjs client api #modify删除LDAP条目的属性。 通过shell和ldapmodify … -f removeAttribute.ldif它的工作原理,使用下面的ldif文件: dn: uid=user,dc=test changetype: modify delete: myAttribute 在ldapjs文档之后,我必须使用操作'delete'并添加要修改的属性(… 删除修改中引用的属性(以及所有值) …)。 如果我尝试使用ldapjs来做到这一点,我会得到错误。 let dn = 'uid=user,dc=test'; let change = { operation : 'delete', modification: { myAttribute: null } ; client.modify(dn, change, err => { … }); …导致错误无法读取null的属性'toString' let dn = 'uid=user,dc=test'; let change = { operation : 'delete', […]

使用LDAP的Node.js身份validation机制

我希望实现一个login机制到我的应用程序,因为用户正在坐在LDAP服务器,而不是在本地数据库。 我一直在考虑实施passport.js,但我想弄清楚解决scheme的其他部分 – 我可以selectpassport-ldap ,或者我可以尝试…以“本地”策略实施解决scheme: passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } if (!user.verifyPassword(password)) { return done(null, false); } return done(null, user); }); } )); 作为function(user, password, done)可能被植入ldapjs 。 我不确定哪个选项会更好。 我认为第二个可能会给我更多的login过程控制,但使用LDAP策略可能会更有意义。 有什么build议么?

ldapjs连接在一段时间后超时

我有一些关于使用LDAPjs的LDAP存储库中的searchEntry的问题。 我不熟悉LDAP,因此我可能会在客户端实现中丢失一些东西。 问题是,在一段时间后LDAP没有来自LDAP服务器的响应,没有任何callback被调用。 const ldapClient = ldap.createClient({ url: 'ldap://some.ldap.server', timeout: 3000, connectTimeout: 6000 }); ldapClient.search('c=XX', opts, (err, res) => { if (err) { ldapClient.unbind(function(err) { if (err) { console.log(err) } }); return next(null); } res.once('searchEntry', (entry) => { ldapClient.unbind(function(err) { if (err) { console.log(err) } }); return next(entry); }); res.on('error', (error) => { ldapClient.unbind(function(err) { […]

与蓝鸟诺言使用ldapjs

我在这里发布类似的东西: 使用ldapjs的承诺 。 不幸的是,它仍然没有解决。 这次我尝试了蓝鸟,希望能得到一些好运。 // https://www.npmjs.com/package/ldapjs var Promise = require('bluebird'); var ldap = Promise.promisifyAll( require('ldapjs') ); var config = require('./config'); var print_r = require('print_r').print_r; var my_filter = "(&(objectCategory=person)(objectClass=user)" + "(cn=" + 'someone' + "))"; var ldap_username = config.ad.username; var ldap_password = config.ad.password; var ldap_url = config.ad.url; var ldap_dn_search = config.ad.dn_search; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; ldap.Attribute.settings.guid_format […]