我能够查询active-directory / ldap以获得用户信息以及自定义属性。但是,我想知道返回的每个这些属性的基础DataType / attributeSyntax。 另一个问题是,查询如果不包含任何值,则不会返回属性本身。 因此,如果可以获取属性及其各自的DataType,则可以在准备最终输出对象时灵活地设置基于DataType的默认值。
例如:
1.我查询AD以找到具有属性foo
,givenName
,mail
,myCustom1
myCustom2
用户
{
givenName : "foo foo",
mail : "foo@boo.com",
myCustom1 : "TRUE"
}
但可能不包含myCustom2
,因为它没有保存AD中的值。
givenName
,mail
,myCustom1
,myCustom2
的语法{
givenName : unistring,
mail : unistring,
myCustom1 : boolean,
myCustom2 : integer,
}
{
givenName : "foo foo"
mail : "foo@boo.com"
myCustom1 : "TRUE"
myCustom2 : //usingHelperFunctionGetDefaultValueFor -> myCustom2
}
答案 0 :(得分:0)
Active Director不会返回没有值的属性,因此不仅仅是LDAPjs库,这也是AD的工作方式。
每个对象都有一个名为allowedAttributes
的属性,它将向您显示该对象可能具有的每个有效属性。
如果需要,allowedAttributesEffective
将列出当前用户有权修改的每个属性。
这两个都是构造的属性,这意味着您必须专门要求它们,否则将无法获得它们。例如,在搜索时,您可以选择指定要获取的属性。如果不指定任何内容,则将获得每个具有值的 non-constructed 属性。如果需要任何构造的属性,则必须将其专门添加到该列表中。
那只是属性列表。它不会告诉您类型。您必须为此寻找模式,这比较困难。您必须使用coalesce(sum(case when competitor = "John Smith" then result end), "-") as result
的基本DN进行搜索,其中“ domain.com”是林的 root 域,该域可能与您所选择的域相同或不同。正在搜寻。您可以查看任何对象的CN=Schema,CN=Configuration,DC=domain,DC=com
属性,以找到模式的位置,尽管它通常是subSchemaSubEntry
(请注意添加的CN=Aggregate,CN=Schema,CN=Configuration,DC=domain,DC=com
)。
但是无论如何,那里的每个对象都会有一个名为CN=Aggregate
的属性,它是出现在对象上的属性的名称。
因此,如果要查找有关ldapDisplayName
属性的详细信息,则可以在模式中搜索givenName
。然后(ldapDisplayName=givenName)
属性是一个枚举,它将告诉您类型。枚举值显示为here。对于oMSyntax
,应为givenName
,它是Unicode字符串。
查找此类类型的唯一好处是,如果您希望代码可以在任何AD环境中运行。如果您的代码只能在一种环境中运行,那么只需对所需的属性及其类型进行硬编码,就可以节省编码时间和运行时间。