我以前没有使用过Active Directory,因此我需要在C#中的Unity独立实现与通过LDAP安装在Windows Server 2012 R2上的Active Directory之间建立连接。每次连接时,都会出现相同的错误:
LdapException:(49)无效的凭据 LdapException:服务器消息:8009030C:LdapErr:DSID-0C0903C5,注释:AcceptSecurityContext错误,数据2030,v2580
我确信我的用户名和密码正确。
DirectoryEntry entry = new DirectoryEntry("LDAP://"+ serverName+":"+port,userName,password);
DirectorySearcher ds = new DirectorySearcher(entry);
ds.Filter = "XX";
SearchResult result = ds.FindOne();
ResultPropertyCollection rpc = result.Properties;
foreach (string property in rpc.PropertyNames)
{
foreach (object value in rpc[property])
console.text+="Property = " + property + "Value = " + value;
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
我已经尝试使用LdapAdmin(开源LDAP目录管理工具),但是即使在Windows PowerShell中使用ldp命令行,我也收到相同的错误。任何帮助将不胜感激。 Screenshot
答案 0 :(得分:1)
这很晦涩,但是您被拒绝的原因是在错误消息中。真正的错误是data
字段的值。在这种情况下,错误为0x2030
。
将值转换为十进制以获得8240
。
然后查找错误。 FormatMessage API will give you that,或在命令行上,您将执行以下操作:
net helpmsg 8240
您会得到
There is no such object on the server.
这意味着您使用的用户名不存在,有错字等。