簡體   English   中英

LDAP 在 C# 中按屬性搜索用戶

[英]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 和 mobile 屬性的條目,請使用以下語法:

(&(objectClass=*)(mobile=*))

您可能希望指定objectClass=User以確保僅獲得 User 條目(盡管如果 mobile 屬性僅適用於具有 objectClass=User 的條目,則可能根本不需要 objectClass 過濾器,但我不確定這一點,即. 非用戶條目是否可以具有移動屬性)。

此外,您可以定義需要從搜索結果中讀取哪些屬性,例如:

string[] attrs = new string[] { "dn", "uid", "cn", "mobile" };
var request = new SearchRequest(baseDn, ldapFilter, SearchScope.Subtree, attrs);

您還可以指定"*"來讀取所有非操作屬性,和/或"+"讀取操作屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM