在 C# 中按属性搜索 LDAP 用户
LDAP search user by attribute in C#
我有一个 LDAP 目录 http://btechintegrator.com/index.php/2020/01/22/free-online-cloud-ldap/
我想在哪里找到具有自定义属性的用户。
我有关注以获得所有用户
public List<Dictionary<string, string>> search(string baseDn, string ldapFilter)
{
var result = new List<Dictionary<string, string>>();
var request = new SearchRequest(baseDn, ldapFilter, SearchScope.Subtree);
if (request != null)
{
var response = (SearchResponse)connection.SendRequest(request);
foreach (SearchResultEntry entry in response.Entries)
{
var dic = new Dictionary<string, string>();
dic["DN"] = entry.DistinguishedName;
foreach (string attrName in entry.Attributes.AttributeNames)
{
//For simplicity, we ignore multi-value attributes
dic[attrName] = string.Join(",", entry.Attributes[attrName].GetValues(typeof(string)));
}
result.Add(dic);
}
}
return result;
}
我正在打电话给
var searchResult = client.search("ou=users,o=freeguests,dc=btechsample,dc=com", "objectClass=*");
知道我可以做些什么来让具有移动属性的用户或具有特定值的移动属性的用户
您可以使用以下内容:
mobile=*
:获取具有 mobile
属性且任何值 的条目
mobile=0123
:获取具有移动价值的条目0123
然后,要过滤具有 objectClass 和移动属性的条目,请使用以下语法:
(&(objectClass=*)(mobile=*))
您可能想要指定 objectClass=User
以确保您只获得用户条目(尽管如果移动属性仅对具有 objectClass=User 的条目可用,则 objectClass 过滤器可能根本不需要,但我'我不确定,即非用户条目是否可以具有移动属性)。
此外,您还可以定义需要从搜索结果中读取哪些属性,例如:
string[] attrs = new string[] { "dn", "uid", "cn", "mobile" };
var request = new SearchRequest(baseDn, ldapFilter, SearchScope.Subtree, attrs);
也可以指定"*"
读取所有非操作属性,and/or"+"
读取操作属性。
我有一个 LDAP 目录 http://btechintegrator.com/index.php/2020/01/22/free-online-cloud-ldap/ 我想在哪里找到具有自定义属性的用户。
我有关注以获得所有用户
public List<Dictionary<string, string>> search(string baseDn, string ldapFilter)
{
var result = new List<Dictionary<string, string>>();
var request = new SearchRequest(baseDn, ldapFilter, SearchScope.Subtree);
if (request != null)
{
var response = (SearchResponse)connection.SendRequest(request);
foreach (SearchResultEntry entry in response.Entries)
{
var dic = new Dictionary<string, string>();
dic["DN"] = entry.DistinguishedName;
foreach (string attrName in entry.Attributes.AttributeNames)
{
//For simplicity, we ignore multi-value attributes
dic[attrName] = string.Join(",", entry.Attributes[attrName].GetValues(typeof(string)));
}
result.Add(dic);
}
}
return result;
}
我正在打电话给
var searchResult = client.search("ou=users,o=freeguests,dc=btechsample,dc=com", "objectClass=*");
知道我可以做些什么来让具有移动属性的用户或具有特定值的移动属性的用户
您可以使用以下内容:
mobile=*
:获取具有mobile
属性且任何值 的条目
mobile=0123
:获取具有移动价值的条目0123
然后,要过滤具有 objectClass 和移动属性的条目,请使用以下语法:
(&(objectClass=*)(mobile=*))
您可能想要指定 objectClass=User
以确保您只获得用户条目(尽管如果移动属性仅对具有 objectClass=User 的条目可用,则 objectClass 过滤器可能根本不需要,但我'我不确定,即非用户条目是否可以具有移动属性)。
此外,您还可以定义需要从搜索结果中读取哪些属性,例如:
string[] attrs = new string[] { "dn", "uid", "cn", "mobile" };
var request = new SearchRequest(baseDn, ldapFilter, SearchScope.Subtree, attrs);
也可以指定"*"
读取所有非操作属性,and/or"+"
读取操作属性。