オブジェクトクラスpersonとuidObjectを使用してOpenLDAPに新しいユーザーレコードを作成しようとしています。問題は、System.DirectoryServices.DirectoryEntryを使用して、1つのオブジェクトクラスで新しいエントリを追加する方法しか見つけられず、複数のオブジェクトクラスを追加する方法が見つからなかったことにあるようです。
このC#コード
DirectoryEntry nRoot = new DirectoryEntry(path);
nRoot.AuthenticationType = AuthenticationTypes.None;
nRoot.Username = username;
nRoot.Password = pwd;
try
{
DirectoryEntry newUser = nRoot.Children.Add("CN=" + "test", "person");
newUser.Properties["cn"].Add("test");
newUser.Properties["sn"].Add("test");
newUser.Properties["objectClass"].Add("uidObject"); // this doesnt't make a difference
newUser.Properties["uid"].Add("testlogin"); // this causes trouble
newUser.CommitChanges();
}
catch (COMException ex)
{
Console.WriteLine(ex.ErrorCode + "\t" + ex.Message);
}
...エラーが発生します:
-2147016684要求された操作は、オブジェクトのクラスに関連付けられた1つ以上の制約を満たしていませんでした。(HRESULTからの例外:0x80072014)