使用System.DirectoryService连接到OpenDS

时间:2010-09-14 18:37:35

标签: c# ldap opends

我一直试图找到一些关于如何使用.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();

2 个答案:

答案 0 :(得分:1)

我猜您的用户名是错误的,您需要输入用户名的完整ldap路径,即 UID =管理员,OU = AdminOU,DC =例如,DC = COM

你也可以使用System.DirectoryServices.AccountManagement来实现更容易的实现 - >> http://anyrest.wordpress.com/2010/06/28/active-directory-c/

答案 1 :(得分:0)

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

NetworkCredential myCreds = new NetworkCredential("cn=Directory Manager", "TestPass!");