在没有用户密码的情况下使用ldap进行身份验证

时间:2019-08-30 11:32:38

标签: ldap openldap ldapjs

我正在尝试使用ldap js创建登录身份验证。我设置了所有凭据,并且一切正常,但是问题是我可以使用用户的Uid(用户ID或用户名)绑定用户,它不要求输入密码,也不知道如何解决该问题。必须要求提供Uid和userPAssword进行连接

我尝试使用相同的凭据(包括userPassword)进行连接,但对我而言不起作用

ldapConfig.js 在此文件中,我设置了所有ldap config

  'url': 'ldap://*************',
  'port': '***',
  'timeout': '',
  'connectTimeout': '',
  'secret': '**********',
  'reconnect': true,
  'filtre': '(&(ObjectClass=*******)',
  'search_dn': 'ou=******,dc=****,dc=****',
  'domain': 'cn=******,dc=****,dc=****'

login.js 在此文件中,我尝试连接到ldap服务器,并且确实可以正常工作,然后我想通过uid来获取用户

const server = ldapConfig.url
const ldapDomain = ldapConfig.domain
const password = ldapConfig.secret
const searchDomain = ldapConfig.search_dn

  const client = ldap.createClient({
    url: server
  })
  client.bind(ldapDomain, password, err => {
    assert.ifError(err)
  })
 const opts = {
    scope: 'sub',
    filter: ldapConfig.filtre + `(mail=${request.body.mail}))`
  }
 client.search(searchDomain, opts, (err, res) => {
     assert.ifError(err)

     res.on('searchEntry', entry => {
      console.log(entry.object)
       }  )

我希望这很清楚。谢谢

1 个答案:

答案 0 :(得分:0)

未经验证的绑定(当您提供用户ID和空密码时,似乎成功的绑定)可能已在目录中启用。如果您使用的是OpenLDAP,如问题标签所示,请检查slapd.conf中的 allow bind_anon_cred

除非特别需要未经身份验证的绑定,否则我将在目录服务器上将其禁用。在极少数情况下,需要未经身份验证的绑定,对目录进行身份验证的所有应用程序都需要在尝试绑定之前验证用户输入-即,验证输入的用户名和密码值不为null。