Создание Пользователя Active Directory с паролем в C#

Я ищу способ создать Пользователей Active Directory и установить их пароль, предпочтительно не давая мои полномочия Администратора домена приложения/сервиса.

Я попробовал следующее:

DirectoryEntry newUser = _directoryEntry.Children.Add("CN=" + fullname, USER);
newUser.Properties["samAccountName"].Value = username;
newUser.Properties["userPassword"].Value = password;
newUser.Properties["mail"].Value = email;
newUser.CommitChanges();

Пользователь создается, но кажется, что пароль никогда не устанавливается на пользователе.

У кого-либо есть идея о том, как установить пароль пользователя первоначально при создании пользователя? Я знаю о

.Invoke("SetPassword", new object[] { password })

Но это требует, чтобы мой код был выполнен с полномочиями Администратора домена. Поскольку я действительно не вижу точку, чтобы предоставить мои полномочия Администратора домена кода, только установить начальный пароль (я также позволяю сброс пароля пользователя, но выполненных в контексте того конкретного пользователя), я надеюсь, что у кого-то есть умное решение, которое не требует, чтобы я сделал так.

Заранее спасибо!

23
задан RajenK 21 February 2010 в 12:34
поделиться

2 ответа

Теперь вы можете сделать весь этот процесс намного проще с помощью System.DirectoryServices.AccountManagement (пока вы используете .Net 3.5):

См. Здесь для полного изложения

Вот краткий пример вашего конкретного случая:

using(var pc = new PrincipalContext(ContextType.Domain))
{
  using(var up = new UserPrincipal(pc))
  {
    up.SamAccountName = username;
    up.EmailAddress = email;
    up.SetPassword(password);
    up.Enabled = true;
    up.ExpirePasswordNow();
    up.Save();
  }
}
35
ответ дан 29 November 2019 в 01:55
поделиться

Я бы использовал код @Nick (обернутый в using операторы, чтобы контекст и принципал утилизировались должным образом). Что касается привилегий, вам нужно, по крайней мере, иметь достаточно привилегий на OU, где вы создаете пользователя, чтобы создавать и управлять объектами. Я бы создал конкретного пользователя, под которым будет работать ваша программа, и дал бы ему достаточно привилегий для выполнения задач, которые ему нужны в этом конкретном OU, и не более.

4
ответ дан 29 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: