在nodejs上的ldap auth – 不断得到32没有这样的对象

我是一个LDAP新手。

我正在使用nodejs的ldapauth ,我一直得到32 - No Such Object

这是我的代码:

 var LdapAuth = require('ldapauth'); var ldapOptions = { "url":"ldap://my-host:389", "adminDn" : "cn=manager,dc=guycrc,dc=com", "adminPassword":"secret", "searchBase":"ou=Engineering", "searchFilter":"(uid={{username}})" }; var ldapAuthClient = new LdapAuth( ldapOptions ); ldapAuthClient.authenticate('Dana', 'Dana', function(err, result) { if (err) { console.log(['Error',err.code, err.dn, err.message ]); } else { console.log('Credentials valid = ' + result); // true or false } } ); 

这是我的LDAP信息 – 我认为这个问题是相关的

 dn: cn=Dana,ou=people,dc=guycrc,dc=com ... cn: Dana Dana sn: Dana uid: Dana userpassword: Dana ou: Engineering dn: cn=CompanyA,ou=groups,dc=guycrc,dc=com ... cn: CompanyA ou: Groups member: cn=Dana,ou=people,dc=guycrc,dc=com 

为什么我一直No Such Object

不确定什么.authenticate是在你的行中做的: ldapAuthClient.authenticate('Dana', 'Dana',

我猜想通过的数据不足以find所需的对象,每个错误。

看看你定义的选项:

 "searchBase":"ou=Engineering", "searchFilter":"(uid={{username}})" 

意味着它正在ou =工程容器中寻找。 并寻找一个与用户名相匹配的用户名,所以可能是“Dana”作为uid部分是正确的。

但是因为你的LDIF显示Dana的DN: dn: cn=Dana,ou=people,dc=guycrc,dc=com

不在ou =工程中。

也许就像把你的searchBase改成ou = people,dc = guycrc,dc = com一样简单

search基础对象ou=engineering可能不是目的,该值看起来不像DN,而更像是一个RDN。 使用完整且正确的search基础对象,该基础对象将比客户端search的对象优先。

也可以看看

  • LDAP:search最佳实践