Active directory Lucee LDAP在搜索序列号(姓氏)时不返回结果

Active directory Lucee LDAP在搜索序列号(姓氏)时不返回结果,active-directory,coldfusion,Active Directory,Coldfusion,我有这个代码,它将返回一个正确的结果 <cfldap server="ad.domain.com" action="query" name="qryResults" start="DC=ad,DC=domain,DC=com" filter="mail=#form.searchterm#" username="#application.lda

我有这个代码,它将返回一个正确的结果

<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"
/>

src:

其中“|”是“或”运算符,“*”是通配符。更好的是,假设你知道这个人的名字是“吉姆·史密斯”。您可以使用过滤器:

(anr=吉姆·史密斯)

现在,Active Directory将搜索任何命名属性与“Jim Smith*”匹配的对象,再加上(givenName=Jim*)和(sn=Smith*)匹配的对象,再加上(givenName=Smith*)和(sn=Jim*)匹配的对象。当将字符串拆分为两个值时,该算法只考虑字符串中的第一个空格。例如,过滤器:

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

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

当应用
anr
语法时,它完全满足我的需要,并且我不必对用户数据进行任何奇特的解析(例如,在名称中的空格上循环,搜索@符号等)

更新: 模糊名称解析(ANR)是Active Directory中的一种高效搜索算法,允许您在单个子句中指定涉及多个命名相关属性的复杂筛选器。当您知道某个对象的名称,但不一定知道哪个命名属性包含该信息时,可以使用它来定位Active Directory中的对象。虽然ANR通常用于定位用户对象,但它可以用于查找Active Directory中的任何对象类。 资料来源:

src:

其中“|”是“或”运算符,“*”是通配符。更好的是,假设你知道这个人的名字是“吉姆·史密斯”。您可以使用过滤器:

(anr=吉姆·史密斯)

现在,Active Directory将搜索任何命名属性与“Jim Smith*”匹配的对象,再加上(givenName=Jim*)和(sn=Smith*)匹配的对象,再加上(givenName=Smith*)和(sn=Jim*)匹配的对象。当将字符串拆分为两个值时,该算法只考虑字符串中的第一个空格。例如,过滤器:

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

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

当应用
anr
语法时,它完全满足我的需要,并且我不必对用户数据进行任何奇特的解析(例如,在名称中的空格上循环,搜索@符号等)

更新: 模糊名称解析(ANR)是Active Directory中的一种高效搜索算法,允许您在单个子句中指定涉及多个命名相关属性的复杂筛选器。当您知道某个对象的名称,但不一定知道哪个命名属性包含该信息时,可以使用它来定位Active Directory中的对象。虽然ANR通常用于定位用户对象,但它可以用于查找Active Directory中的任何对象类。
来源:

对于多个术语,请将它们括在括号中,并使用and
&
|
运算符。尝试类似于
(&(givenName=John)(sn=Smith))
或搜索常用名称(名字和姓氏),
(cn=John-Smith)
。See也工作得很漂亮。从中作出回答,我可以接受。另外,非常好的资源链接,感谢您将其包括在内。对于多个术语,请将它们用括号括起来,并使用and
&
|
运算符。尝试类似于
(&(givenName=John)(sn=Smith))
或搜索常用名称(名字和姓氏),
(cn=John-Smith)
。See也工作得很漂亮。从中作出回答,我可以接受。还有,很好的资源链接,谢谢你的加入。很好。知道通配符,但从来没有听说过anr(好的,我能帮助别人改变!更新了答案,增加了一点背景。很好。知道通配符,但从来没有听说过anr(好的,我能帮助别人改变!更新了答案,增加了一点上下文。