2

我一直在尝试寻找一些关于如何使用 .NET 的 LDAP 类型连接到 OpenDS 的教程,但无济于事。任何人都可以向我指出一些文章/教程,这些文章/教程有很好的示例,将 OpenDS 用作目录服务并使用 C# 访问和使用它。

这是我迄今为止尝试过的,但总是收到无效的用户名/密码错误。我被困在需要输入什么凭据,或者我正在尝试做的事情是否有任何意义。

DirectoryEntry directoryEntry = new DirectoryEntry
                                            {
                                                Path = @"LDAP://SUnnikris-va-d:389/dc=example,dc=com",
                                                Username = "uid=user.0",
                                                Password = "TestPass!",
                                                AuthenticationType = AuthenticationTypes.ServerBind
                                            };

        directoryEntry.RefreshCache();

        DirectoryEntry newUser = directoryEntry.Children.Add("uid=nuser,ou=People,dc=example,dc=com", "person");
        newUser.Properties["objectClass"].Value = new object[] { "top", "person", "organizationalPerson", "inetorgPerson" };
        newUser.Properties["uid"].Value = "nuser";
        newUser.Properties["givenName"].Value = "new";
        newUser.Properties["sn"].Value = "user";
        newUser.Properties["cn"].Value = "new user";
        newUser.Properties["userPassword"].Value = "nuser";
        newUser.CommitChanges();
4

2 回答 2

1

我猜你的用户名是错误的你需要把用户名的完整 ldap 路径即 uid=admin,ou=AdminOU,dc=example,dc=com

您还可以使用 System.DirectoryServices.AccountManagement 进行更轻松的实施,看看这里 -> http://anyrest.wordpress.com/2010/06/28/active-directory-c/

于 2010-09-14T22:12:28.587 回答
0

我想通了,OpenDS 使用规范名称作为管理的超级用户。本质上,问题出在我使用的凭据上,而不是我必须指定的 uid:-

NetworkCredential myCreds = new NetworkCredential("cn=Directory Manager", "TestPass!");
于 2010-09-15T17:49:09.603 回答