【问题标题】:Read objectGUID from active directory从活动目录中读取 objectGUID
【发布时间】:2017-10-18 13:04:14
【问题描述】:

我正在尝试使用 node.js 从 AD 获取信息。我试过activedirectoryldapauth-fork 并且通常代码可以工作,但是如果我需要一些octetstring 数据,比如objectGUID,我会在对象中看到一个垃圾字符串。我found 将二进制数据转换为 utf-8 格式的字符串。但问题是数据在转换过程中被损坏(很多带有 65533 代码的 cahrs),我无法将字符串恢复为原始二进制文件。

如何访问octetstring 格式的数据以获得正确的二进制表示?

const ActiveDirectory = require('activedirectory');

const config = {
  url: 'LDAP://ldap.example.com',
  baseDN: 'OU=Users,DC=example,DC=com',
  username: 'user@example.com',
  password: 'password'
};

const ad = new ActiveDirectory(config);

const query = { 
  filter: '(objectClass=user)',
  attributes: ["dn", "cn", "objectGUID", "objectSid"]
};

ad.findUsers(query, function (err, result) {
  if (err) {
    return console.error(err);
  }

  console.log(result.length);
  console.log(result[0]); // objectGUID contains rubbish
  console.log([...result[0].objectGUID].map(ch => ch.charCodeAt(0)));
});

相关:

【问题讨论】:

    标签: javascript node.js active-directory ldap


    【解决方案1】:

    entryParser 就是为了这个目的:

    const ActiveDirectory = require('activedirectory');
    
    const config = {
      url: 'LDAP://ldap.example.com',
      baseDN: 'OU=Users,DC=example,DC=com',
      username: 'user@example.com',
      password: 'password',
      entryParser(entry, raw, callback) {
        if (raw.hasOwnProperty("objectGUID")) { entry.objectGUID = raw.objectGUID; }
        callback(entry);
      }
    };
    
    const ad = new ActiveDirectory(config);
    
    const query = { 
      filter: '(objectClass=user)',
      attributes: ["dn", "cn", "objectGUID", "objectSid"]
    };
    
    ad.findUsers(query, function (err, result) {
      if (err) {
        return console.error(err);
      }
    
      console.log(result.length);
      console.log(result[0]); // objectGUID contains Buffer with strange byte order
      console.log(result[0].objectGUID
        .toString('hex')
        .replace(
          /^(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)(..)$/,
          "{$4$3$2$1-$6$5-$8$7-$10$9-$16$15$14$13$12$11}"
        ).toUpperCase() // Normal guid, conversion could be moved into the parser
      );
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2011-06-27
      • 2013-02-02
      • 1970-01-01
      • 2012-11-25
      相关资源
      最近更新 更多