活动目录/ LDAP获取特定的NodeJS属性,数据类型或语法
我能够查询主动目录/ LDAP与自定义属性相处的用户信息。不过,我想知道基本数据类型/ attributeSyntax为每个属性的返回。另一个问题是,该查询将不会返回属性本身,如果它不包含任何价值。所以,如果能得到获取属性和它们各自的数据类型,然后它为我提供了灵活设置的数据类型的默认值筑底,同时准备最终的输出对象。
例如:1。我查询AD找到与属性foo
,givenName
,mail
,myCustom1
myCustom2
用户
{
givenName : "foo foo",
mail : "[email protected]",
myCustom1 : "TRUE"
}
但可能不包含myCustom2
,因为它不是在AD保持的值。
- 获得属性
givenName
,mail
,myCustom1
,myCustom2
语法
{
givenName : unistring,
mail : unistring,
myCustom1 : boolean,
myCustom2 : integer,
}
- 使用上述我可以映射所述第一结果和准备最终的对象作为
{
givenName : "foo foo"
mail : "[email protected]"
myCustom1 : "TRUE"
myCustom2 : //usingHelperFunctionGetDefaultValueFor -> myCustom2
}
回答如下:
活动总监不返回没有值的属性,所以这不只是LDAPjs库,这是AD是如何工作的。
每个对象都有名为allowedAttributes
的属性,它会告诉你每一个有效的属性,对象都可能有。
如果你需要它,allowedAttributesEffective
会列出每个属性当前用户有权修改。
这些都是构建属性,这意味着你必须特别要求他们,否则你不会得到他们。例如,在搜索时,你必须指定要取回属性的选项。如果指定了什么,你会得到具有价值的每个非构造的属性。如果您想要的任何构造属性,你必须明确将其添加到该列表。
这只是一个属性列表。它不会告诉你的类型。你不得不考虑的模式为,这是比较困难的。你所要做的使用基本CN=Schema,CN=Configuration,DC=domain,DC=com
的DN,其中“domain”是你林的根域,这可能会或可能不会是一样的,你要搜索的域名进行搜索。你可以看任何物体找到模式的位置的subSchemaSubEntry
属性,但它通常会CN=Aggregate,CN=Schema,CN=Configuration,DC=domain,DC=com
(注意添加CN=Aggregate
)。
但无论如何,在那里每个对象有一个名为ldapDisplayName
的属性,这是因为它出现在对象属性的名称。
所以,如果你想找到的givenName
属性的细节,你会搜索(ldapDisplayName=givenName)
模式。然后oMSyntax
属性是一个枚举,将告诉你的类型。枚举值示here。对于givenName
,这将是64
,这是一个Unicode字符串。
要查找的类型,如这样做的唯一好处是,如果你期待你的代码,可在任何AD环境中运行。如果你的代码将永远只能在一个环境中运行,那么你就可以节省编码时间,并通过刚刚硬编码你正在寻找和类型的属性运行时间。