5

我已经安装了一个openldap for windows服务器,我用LDAPAdmin它的默认值连接到它:

Server=ldap://localhost:389
Base:dc=maxcrc,dc=com
UserName:cn=Manager,dc=maxcrc,dc=com
Password:secret

现在我想使用PrincipalContext将用户添加到我ou=People 的问题是我什至无法使用 PrincipalContext 连接到服务器。我在网上搜索了很多关于如何连接到 ldap 服务器的答案,但没有一个对我有用。我不断获得PrincipalContext 构造函数提供的参数NullReferenceExceptionServerNotFoundException不同组合。我想我可以使用 PrincipalContext 作为以下之一:

new PirncipalContext(ContextType.Domain,"maxcrc.com","dc=maxcrc,dc=com")

或者

new PrincipalContext(ContextType.ApplicationDirectory,"localhost:389","dc=maxcrc,dc=com")

但他们都没有工作。有人说我应该提供用户名和密码,所以我这样做了,但我不断收到异常。

那么请告诉我如何使用 PrincipalContext 连接到 openldap ?

PS 我的电脑已经加入了一个 Active Directory 域控制器。

4

1 回答 1

6

正如MSDN 上的官方文档所述:

System.DirectoryServices.AccountManagement 命名空间跨多个主体存储提供对用户、计算机和组安全主体的统一访问和操作:Active Directory域服务 (AD DS)、Active Directory轻型目录服务 (AD LDS) 和计算机 SAM ( MSAM)。System.DirectoryServices.AccountManagement 管理独立于 System.DirectoryServices 命名空间的目录对象。

这些类仅对Active Directory有用- 它们不能移植到其他“通用”LDAP 存储。

如果你需要支持 OpenLDAP,要么使用DirectoryEntry那些功能,要么使用较低级别System.DirectoryServices.Protocol(bare-bones LDAP)层。

于 2015-03-11T14:56:24.000 回答