Active Directory LDAP 搜索过滤器或运算符语法

Pin*_*ave 5 c# ldap active-directory

我在 C# 中使用 LDAP 目录服务通过一些过滤条件从 LDAP 搜索用户。我想提供多个 OR 过滤条件。例如名字、姓氏、电话等。当我提供所有过滤器值时它工作正常,但当我只提供一个或两个过滤器值时会出错。

这是我正在使用的示例代码:

var LdapSearcher = new DirectorySearcher(RootDomain, 
                   "(&(objectclass=user)(sn=" + lastName.Trim() + ")(givenName=" + firstName.Trim() + "))");
Run Code Online (Sandbox Code Playgroud)

当我同时提供 sn 和 givenName 值时,我得到了结果。但是,这是一个 OR 搜索,用户将输入 lastName 或 FirstName。

如何在 LDAP DirectorySearcher 中应用 OR 过滤器。?

X30*_*61X 12

您需要使用|运算符。根据您提供的情况,您的条件是:

  • objectclass 必须等于“用户”
  • snORgivenName必须等于提供的值

假设用户提供了名称“John Smith”。您的过滤器应如下所示:

(&(objectClass=user)(|(sn=Smith)(givenName=John)))