2017-10-18 40 views
0

我试图从AD使用node.js获取信息。我试过activedirectoryldapauth-fork,一般情况下代码有效,但如果我需要一些octetstring数据,如objectGUID,我会在对象中看到一个垃圾字符串。我found二进制数据被转换为utf-8字符串。但问题是数据在转换期间被损坏(很多cahrs代码为65533),我无法将该字符串恢复为原始二进制文件。从活动目录中读取objectGUID

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

​​

相关:

回答

0

entryParser是有这个目的:

const ActiveDirectory = require('activedirectory'); 

const config = { 
    url: 'LDAP://ldap.example.com', 
    baseDN: 'OU=Users,DC=example,DC=com', 
    username: '[email protected]', 
    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 
); 
}); 
+0

这可能会帮助:http://ldapwiki.com/WIK我/的objectGUID – jwilleke