2016-02-13 39 views
1

我想搜索在林中所有域和我这样做以下列方式:C#:如何使用DirectoryContext,Domains和DirectoryEntry类启用SSL连接到Active Directory?

foreach(Domain currDomain in Forest.GetCurrentForest().Domains) 
{ 
    try 
    { 
     DirectorySearcher searcher = new 
         DirectorySearcher(currDomain.GetDirectoryEntry()); 
     searcher.PageSize = 1000; 
     searcher.PropertiesToLoad.Add("cn"); 
     searcher.PropertiesToLoad.Add("distinguishedName"); 
     searcher.Filter = "(&(objectClass=group))"; 
     using (SearchResultCollection resList = searcher.FindAll()) 
     { 
     } 
    } 
} 

现在我想做的事与启用SSL相同。要做到这一点,我试图在的DirectoryEntry

AuthenticationType 

属性设置为

AuthenticationTypes.SecureSocketsLayer. 

但是,当我尝试执行,“的操作错误发生”异常被抛出。

有人可以帮助我吗?

回答

0

安全LDAP(LDAPS)侦听与常规LDAP(389)不同的端口(636)。您需要告诉它在该端口上连接。试试这个:

DirectorySearcher searcher = new 
        DirectorySearcher(new DirectoryEntry("LDAP://" + currDomain.Name + ":636"); 
0

哇!我从的回答中得到了这个工作。最初,我修改为从第1个答案的帮助下给予代码:

DirectoryEntry de = new DirectoryEntry("LDAP://" + currDomain.Name + ":636") 
DirectorySearcher searcher = new DirectoySearcher(searcher); 

但我仍然得到“的操作时发生错误”。然后,我想通了,我有以下的代码,以及:

de.AuthenticationType = AuthenticationTypes.SecureSocketLayer. 

当我删除了上述行,它开始工作正常,我使用Wireshark证实了它。

相关问题