搜索 SN(姓氏)时 Lucee LDAP 不返回结果

Lucee LDAP not returning results when searching for SN (Surname)

我有这段代码可以 return 得到正确的结果

<cfldap server="ad.domain.com"
    action="query"
    name="qryResults"
    start="DC=ad,DC=domain,DC=com"
    filter="mail=#form.searchterm#"
    username="#application.ldapUsername#"
    password="#application.ldapPassword#"
    attributes="cn,sn,givenName,mail,st,l,ou,sAMAccountName"
/>

但这不会:

<cfldap server="ad.domain.com"
    action="query"
    name="qryResults"
    start="DC=ad,DC=domain,DC=com"
    filter="SN=#form.searchterm#"
    username="#application.ldapUsername#"
    password="#application.ldapPassword#"
    attributes="cn,sn,givenName,mail,st,l,ou,sAMAccountName"
/>

我缺少什么以便可以通过 Active Directory SN 属性进行搜索?

知道名字和姓氏时如何搜索 Active Directory 的加分项:

<cfldap server="ad.domain.com"
    action="query"
    name="qryResults"
    start="DC=ad,DC=domain,DC=com"
    filter="givenname=#form.givenname#;SN=#form.searchterm#"
    username="#application.ldapUsername#"
    password="#application.ldapPassword#"
    attributes="cn,sn,givenName,mail,st,l,ou,sAMAccountName"
/>

来源:http://www.rlmueller.net/AmbiguousNameResolution.htm

其中“|”是“或”运算符,“*”是通配符。更好的是,假设您知道此人的名字是“Jim Smith”。您可以使用过滤器:

(anr=吉姆史密斯)

现在 Active Directory 将搜索任何命名属性与“Jim Smith*”匹配的对象,以及 (givenName=Jim*) 和 (sn=Smith*) 的任何对象,以及 (givenName=史密斯*) 和 (sn=吉姆*)。在将字符串分解为两个值时,该算法仅考虑字符串中的第一个 space。例如过滤器:

(anr=吉姆·史密斯·威廉姆斯)

这将查询任何命名属性与“Jim Smith Williams*”匹配的对象,以及 (givenName=Jim*) 和 (sn=Smith Williams*) 或 (givenName=Smith Williams*) 的对象) 和 (sn=吉姆*).

当应用 anr 语法时,它完全满足我的需要,我不必对用户数据进行任何花哨的解析(例如循环遍历名称中的 spaces ,搜索 @ 符号等)。

更新: 歧义名称解析 (ANR) 是 Active Directory 中的一种高效搜索算法,它允许您在单个子句中指定涉及多个 naming-related 属性的复杂过滤器。当您知道有关对象名称的某些信息时,它可用于在 Active Directory 中定位对象,但不一定是哪个命名属性具有该信息。虽然 ANR 通常用于定位用户对象,但它可用于在 Active Directory 中查找任何 class 对象。 来源:https://social.technet.microsoft.com/wiki/contents/articles/22653.active-directory-ambiguous-name-resolution.aspx