使用安全全局编录的Active Directory失败

时间:2012-05-18 19:26:16

标签: active-directory

首先我要说我对活动目录相当新,而且我不是处理服务器配置的人(如果这确实是与服务器相关的问题)。但是,如果给出适当的建议,我可以将建议传达给正确的人。

我们正在运行一个大型ASP.NET C#.NET 3.5应用程序。

以下是我们遇到的场景:

我创建了一个测试页面来测试我们的全局目录AD搜索。

从测试服务器1开始会发生以下情况:

使用GC://TEST.COM:3268(不安全) - >很棒的表现。

使用G:C // TEST.COM:3269(安全) - >出色的表现

来自测试服务器2:

使用GC://TEST.COM:3268(不安全) - >很棒的表现。

使用G:C // TEST.COM:3269(安全) - >失败。

我看到的唯一例外是:异常:“服务器无法运行”

我不认为这是代码问题,因为两个测试服务器都运行相同的代码。当我们尝试从测试服务器2连接到GC的安全端口时,我们只会遇到问题。

当我尝试在服务器上运行它时,这是异常信息,我将它转储到日志表中:

目录服务例外(异常消息):服务器无法运行。  ErrorCode:-2147016646  堆栈跟踪:

在System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)

在System.DirectoryServices.DirectoryEntry.get_AdsObject()的System.DirectoryServices.DirectoryEntry.Bind()

at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)

位于TestClass.GetUserDomainTest(String UserName)的System.DirectoryServices.DirectorySearcher.FindOne()

testclass.aspx.cs:第155行

就像我说的那样,我不相信这是一个代码问题,但我已经附上了代码,如果有可能帮助:

private string GetUserDomain2(string UserName) 
{ 
    string domainName = String.Empty; 
    try 
    { 
       // This is Test page code so we can change the values as we want 
        DirectoryEntry entry = new DirectoryEntry(txtGCPath.Text) 
        entry.Username = txtGCUserID.Text; 
        entry.Password = txtGCPassword.Text; 
        // Set SSL or leave default 
        if (cb1.Checked == true) 
        { 
            entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; 
        } 

        DirectorySearcher search = new DirectorySearcher(); 
        search.SearchRoot = entry; 
        search.SearchScope = SearchScope.Subtree; 
        search.Filter = string.Format(txtGCFilter.Text, UserName); 


        SearchResult results = search.FindOne(); // CRASHES HERE 
      // Parsing code removed. 
      return domainName; 
   } 

1 个答案:

答案 0 :(得分:0)

您不需要SSL,默认情况下不启用SSL。您可以使用Kerberos安全功能来完全加密流量。这就是我使用SASL'QOP auth-conf