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