上LdapConnection類的Active Directory我有一個問題:我需要從遠程服務器到Active Directory連接,但代碼必須使用LdapConnection
類。我需要這樣做,因爲這樣我只能在發生某些事件時(例如,用戶已停用或者更改組,數據等)測試更改通知程序。在遠程服務器上的操作系統是Windows Server 2012的連接到使用遠程服務器
我設法使用DirectoryServices
用下面的代碼從地方這樣做:
String ldapPath = "LDAP://XRMSERVER02.a24xrmdomain.info";
directoryEntry = new DirectoryEntry(ldapPath, @"A24XRMDOMAIN\username", "pass");
//// Search AD to see if the user already exists.
DirectorySearcher search = new DirectorySearcher(directoryEntry);
search.Filter = "(&(objectClass=user))";
SearchResult result = search.FindOne();
這是正常的和連接工作,但現在我需要使用LdapConnection
連接類。
我想這樣的事情在很多方面,但沒有的,幫助我:
LdapConnection connection = new LdapConnection(XRMSERVER02.a24xrmdomain.info);
var credentials = new NetworkCredential(@"A24XRMDOMAIN\username", "pass");
connection.Credential = credentials;
connection.Bind();
它說,證書是無效的,但事實並非如此。
說明:
XRMSERVER02
- 的域控制器a24xrmdomain.info
- 域名A24XRMDOMAIN
- 域名用於登錄
感謝您的幫助。
如果您要監視整個域,我不建議使用更改通知。此技術旨在用於需要監視指定對象或多個對象以更改屬性的情況。在高負載環境中這種技術根本不起作用:您將不會收到關於修改(10K用戶添加到域,並看看會發生什麼)的所有通知。對於整個域中的輪詢更改,請使用DirSync或USN技術。 – oldovets
你的意思是我的通知問題http://stackoverflow.com/questions/39261263/notify-me-when-events-in-active-directory-occur-in-c-sharp ..我使用通知因爲我不知道如何改變其他技術,也許每5秒設置一些TImer來檢查uSNChanged屬性狀態?我有對象的以前的狀態,所以它可以這樣工作。我不確定什麼是其他選項。你能檢查我提供的鏈接上的答案嗎?謝謝 – Dan
對於uSNChanged技術,您可以執行以下步驟:1.連接到DC。 2.從該DC查詢當前highestCommitedUsn(將其命名爲hcusn)(請參閱https://msdn.microsoft.com/zh-cn/library/system.directoryservices.activedirectory.domaincontroller.highestcommittedusn(v=vs.110).aspx) 。 3.如果您需要先前的值,則通過在LDAP過濾器中指定(uSNChanged <= hcusn)來收集來自此DC的當前AD快照。 4.將硬盤存儲在磁盤上。 5.再次連接到同一個DC。 6.查詢highestCommitedUsn(將其命名爲hcusnnew)4.通過在LDAP過濾器中指定&(uSNChanged> hcusn)(uSNChanged <= hcusnew)來收集更改。 – oldovets