【问题标题】:LDAP - Find user by name onlyLDAP - 仅按名称查找用户
【发布时间】:2013-10-18 05:38:00
【问题描述】:

我对 LDAP 不太熟悉,但是我正在处理 Node.js 应用程序中的身份验证,并且该网络应用程序的用户凭据将从组织的 Windows 域中获取。

我有 LDAP 查找工作(使用 Passport.js Node 模块),但是要使其工作,我必须将用户的完整 DN 放入 Node.js 中。例如,假设:

  1. 我的 FQDN 是 mydomain.private.net

  2. 我的用户存储在一个组织单位中,比如说staff

现在,如果我想查找用户joe,我必须将此字符串放入节点:

var username = 'CN=joe,OU=staff,DC=mydomain,DC=private,DC=net';

我真的必须记录所有这些吗?

如果我的用户位于两个不同的单位部门怎么办?客户端浏览器不知道这一点!它只知道:

username = 'joe';
password = 'xxxxx';

如果您尝试以管理员身份登录会怎样?默认情况下,管理员始终位于完全不同的 OU 中。

有没有办法仅通过名称来引用 LDAP 对象?

【问题讨论】:

    标签: javascript node.js active-directory ldap


    【解决方案1】:

    这是一个常见的 LDAP 问题。你需要从用户那里得到一个唯一的标识符,然后去寻找它。

    通常这就是uid 属性的用途。 Active Directory 可能填充也可能不填充,并且通常依赖于在域中必须是唯一的 sAMAccountName。

    所以你需要一个两步的过程。

    1) 查询 uid=joe 或 samAccountName=joe 2) 使用结果来测试绑定或密码比较。

    然后您将使用 DC=mydomain,DC=private,DC=net 值作为搜索的根。

    【讨论】:

    • 谢谢 - 不久前我终于设法解决了这个问题,但您的回答确实指出了正确的解决方案,我将在下面详细说明。赞赏!
    【解决方案2】:

    (回答我自己的问题)

    geoffc 的回答是正确的,这是使用 activedirectory npm 模块适用于我的 Node.js 应用程序的工作解决方案:

      // First search for the user itself in the domain.
      // If successfully found, the findUser function
      // will return the full DN string, which is
      // subsequently used to properly query and authenticate
      // the user.
      var AD = self.ADs[domain];
      AD.findUser(username, function(err, user) {
        if (err) {
          cb(false, 'AD error on findUser', err);
          return;
        }
        if (!user) {
          cb(false, 'User does not exist', void 0);
        } else {
          username = user.dn;
          AD.authenticate(username, password, function(err, authenticated) {
            if (authenticated == false) {
              cb(false, err, void 0);
              return;
            } else {
              cb(true, 'Authenticated', void 0);
            }
          });  
        }
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 2021-06-22
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      相关资源
      最近更新 更多