我正在尝试使用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();
答案 0 :(得分:1)
用户容器的LDAP路径不正确。 用户容器不是组织单位,而是一个简单的容器。 因此,您必须指定不同的LDAP路径。
您案例中用户容器的LDAP路径是:
LDAP://cn=Users,dc=abc,dc=def,dc=com
还要考虑Hall72215在他的回答中提到的内容。直接在DirectoryEntry
类的构造函数中使用整个LDAP路径。
答案 1 :(得分: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
域控制器域中的{{1}}用户吗?