Read objectGUID from active directory(从活动目录中读取 objectGUID)
问题描述
我正在尝试使用 node.js 从 AD 获取信息.我已经尝试过 activedirectory
和 ldapauth-fork
并且通常代码可以工作,但是如果我需要一些 octetstring
数据,例如 objectGUID
,我在对象中看到一个垃圾字符串.我发现二进制数据被转换成utf-8的字符串.但问题是数据在转换过程中被损坏(很多带有 65533 代码的 cahrs),我无法将字符串恢复为原始二进制文件.
I'm trying to get information from AD using node.js. I've tried activedirectory
and ldapauth-fork
and in general the code works, but if I need some octetstring
data like objectGUID
, I see a rubbish string in the object. I found that binary data is converted into a string as utf-8. But the problem is that the data is damaged during convertion (a lot of cahrs with 65533 code) and I can't revert the string to original binary.
如何访问 octetstring
格式的数据以获得正确的二进制表示?
How can I access data in octetstring
format to get correct binary representation?
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)));
});
相关:
- https://github.com/mcavage/node-ldapjs/issues/228
- https://github.com/gheeres/node-activedirectory/pull/15
推荐答案
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
);
});
这篇关于从活动目录中读取 objectGUID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从活动目录中读取 objectGUID


基础教程推荐
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 直接将值设置为滑块 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01