1

我正在尝试使用 C# 连接到 AD 服务器。这是我第一次玩 AD.Domain 我需要连接的是 abc.def.com。

这是一个 ASP.NET 网站,它给出了这个错误。但是我可以使用相同的凭据使用“ldp.exe”登录到同一个域。有人知道吗?

[DirectoryServicesCOMException (0x8007052e): Logon failure: unknown user name or bad "password.
]
   System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +387825
   System.DirectoryServices.DirectoryEntry.Bind() +36
   System.DirectoryServices.DirectoryEntry.get_AdsObject() +31

这是我的代码

static System.DirectoryServices.DirectoryEntry createDirectoryEntry()
{
        System.DirectoryServices.DirectoryEntry ldapConnection = new System.DirectoryServices.DirectoryEntry("13.18.12.16", "Administrator", "admin123");
        ldapConnection.Path = "LDAP://ou=Users,dc=abc,dc=def,dc=com";
        ldapConnection.AuthenticationType = System.DirectoryServices.AuthenticationTypes.Secure;
        return ldapConnection;
}


System.DirectoryServices.DirectoryEntry sgscAd = createDirectoryEntry();
System.DirectoryServices.DirectorySearcher search = new System.DirectoryServices.DirectorySearcher(sgscAd);
search.Filter = "(cn=" + m_username + ")";

System.DirectoryServices.SearchResult result = search.FindOne();
4

2 回答 2

1

用户容器的 LDAP 路径不正确。users 容器不是一个组织单元,而是一个简单的容器。因此,您必须指定不同的 LDAP 路径。

在您的情况下,用户容器的 LDAP 路径是:

LDAP://cn=Users,dc=abc,dc=def,dc=com

还要考虑 Hall72215 在他的回答中提到的内容。直接在DirectoryEntry类的构造函数中使用整个 LDAP 路径。

于 2013-08-30T17:07:51.430 回答
0

为什么要在构造函数 ( 13.18.12.16) 中提供一个路径,而通过设置 Path 属性来提供另一个路径?您是否尝试过在构造函数中提供所有信息?

static DirectoryEntry createDirectoryEntry()
{
    string username = "Administrator";
    string password = "admin123";
    string path = "LDAP://13.18.12.16/OU=Users,DC=abc,DC=def,DC=com";
    AuthenticationTypes authType = AuthenticationTypes.Secure | AuthenticationTypes.ServerBind;
    return new DirectoryEntry(path, username, password, authType);
}

域控制器的域中的用户是否Administrator位于13.18.12.16

于 2013-08-31T01:21:15.013 回答