c# - .net ldap opends 读取自定义属性 0x8000500c

标签 c# .net ldap opends

我正在尝试为我的 .Net 应用程序构建一个功能,以便能够与 LDAP 服务器对话以读取用户属性并验证用户身份。我已经使用 OpenDS 设置了一个测试目录服务器,添加了自定义属性和对象,并添加了具有新对象类型的用户。一切正常,直到我尝试读取自定义属性值,我得到:

{"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)

我已经尝试了来自 this post 的建议(使用正确形成的 oids)以及 this post (在您的 ldap 路径中使用完全限定的域名 - 我正在使用类似 LDAP://mymachine.company.local/... 的东西)。 Others have suggested因为 COM 错误代码表示 E_ADS_CANT_CONVERT_DATATYPE,所以我的属性或架构有问题,但属性设置为 DirectoryString,其中还有其他我可以读取的相同类型的默认字段。

我知道使用 OpenDS 的工作方式与 Active Directory 不同,我有一个单独的 AD 模块可以正常工作,我只是想知道是否有人有过使用 OpenDS 或 Sun One LDAP 实现的经验。

想法?我在谷歌上找不到太多同时处理 OpenDS 和 .NET 的信息,这让我觉得我应该做些别的事情。正如我所说,AD 的东西工作正常,但我真的很想也能用 OpenDS 做到这一点。

谢谢!

生锈

最佳答案

使用一个已知的好工具,例如 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 客户端代码中的问题。

另见

关于c# - .net ldap opends 读取自定义属性 0x8000500c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11000339/

相关文章:

.net - 从 HDF5DotNet 1.8.7 中删除 H5F.flush()?

.net - 什么影响 GC 的时间?

c# - 在 C# 中通过 System.DirectoryServices 查询自定义 LDAP 属性?

c# - Facebook SDK .NET - (#200) 用户尚未授权应用程序执行此操作

c# - 按返回类型重载?

.net - .NET 结构中的成员相等性测试使用的算法是什么?

php - 使用 HTACCESS 进行 LDAP 身份验证(Windows 上的 Apache 2.4)

c# - 类设计——如何管理多线程响应

c# - MVC 6 多个获取方法

database - 构建集中式配置存储库