C# .net ldap opends读取自定义属性0x8000500c
我正在尝试为我的.Net应用程序构建一个功能,使其能够与LDAP服务器通信以读取用户属性并对用户进行身份验证。我已经使用OpenDS设置了一个测试目录服务器,添加了自定义属性和对象,并添加了具有新对象类型的用户。在我尝试读取自定义属性值之前,一切正常,我得到:C# .net ldap opends读取自定义属性0x8000500c,c#,.net,ldap,opends,C#,.net,Ldap,Opends,我正在尝试为我的.Net应用程序构建一个功能,使其能够与LDAP服务器通信以读取用户属性并对用户进行身份验证。我已经使用OpenDS设置了一个测试目录服务器,添加了自定义属性和对象,并添加了具有新对象类型的用户。在我尝试读取自定义属性值之前,一切正常,我得到: {"Unknown error (0x8000500c)"} at System.DirectoryServices.PropertyValueCollection.PopulateList() at System.DirectorySe
{"Unknown error (0x8000500c)"}
at System.DirectoryServices.PropertyValueCollection.PopulateList()
at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
我尝试了(使用正确格式的OID)和(在ldap路径中使用完全限定的域名-我使用的是类似ldap://mymachine.company.local/…)的建议。由于COM错误代码表示E_ADS_CANT_CONVERT_数据类型,因此我的属性或架构有问题,但属性设置为DirectoryString,我可以读取相同类型的其他默认字段
我知道使用OpenDS的工作方式与Active Directory的工作方式不同,我有一个单独的AD模块可以正常工作,我只是想知道是否有人有过使用OpenDS或Sun One LDAP实现的经验
想法?我在谷歌上找不到太多关于OpenDS和.NET的信息,这让我觉得我应该做些别的事情。正如我所说的,广告的东西很好用,但是我真的很想用OpenDS也能做到这一点
谢谢
Rusty使用已知的良好工具,如
ldapsearch
,验证LDAP客户端是否确实可以请求和接收所需的条目和属性。例如:
ldapsearch --hostname hostname \
--port port \
--bindDn your-auth-id \
--bindPassword credentials-for-your-auth-id \
--useSSL \
--trustAll \
--baseDn your-base-object \
--searchScope the-scope-you-use \
'(&)' \
your-custom-attribute-names
使用与LDAP客户端代码中相同的参数。如果上述搜索成功,则服务器配置正确,条目存在,并且auth ID具有检索这些条目和自定义属性的权限。否则,它们可能是LDAP客户端代码中的问题
另见
var dirEntry = new DirectoryEntry("ldapDn", "logonDn", "logonPass");
var nativeEntry = (ActiveDs.IADsPropertyList)dirEntry.NativeObject;
var propEntry = (ActiveDs.IADsPropertyEntry)nativeEntry.GetPropertyItem("attributeName", 3);
foreach (ActiveDs.IADsPropertyValue propValue in (object[])propEntry.Values)
{
Debug.Print(propValue.CaseIgnoreString);
}
这是为了满足我自己的简单需求而准备的。这是我的建议。嗨,特里,谢谢你的建议。我使用了与OpenDS一起安装的ldapsearch实用程序,一切似乎都很好。我还下载了ApacheDirectoryStudio,读取自定义属性没有问题。我开始认为标准的.net DirectoryServices库不适合这个……是的。