从活动目录中读取objectGUID
问题描述:
我试图从AD使用node.js获取信息。我试过activedirectory
和ldapauth-fork
,一般情况下代码有效,但如果我需要一些octetstring
数据,如objectGUID
,我会在对象中看到一个垃圾字符串。我found二进制数据被转换为utf-8字符串。但问题是数据在转换期间被损坏(很多cahrs代码为65533),我无法将该字符串恢复为原始二进制文件。从活动目录中读取objectGUID
如何访问octetstring
格式的数据以获取正确的二进制表示?
相关:
答
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
);
});
这可能会帮助:http://ldapwiki.com/WIK我/的objectGUID – jwilleke