Как сбросить пароль для Active Directory

Кто-нибудь знает, как сбросить пароль для Active Directory на С#?

Я написал следующий код для сброса пароля в Active Directory:

   [WebMethod]
   public static string ResetPassword(string test)
   {
       string userDn = "CN=Joe Bloggs,OU=Test Accounts,OU=ST IT,OU=Departments,OU=Internal,OU=Divisions,DC=thegroup,DC=com,DC=au";
       string password = "!qwer12345";

       DirectoryEntry uEntry = new DirectoryEntry(userDn);
       uEntry.Invoke("SetPassword", new object[] { password });
       uEntry.Properties["LockOutTime"].Value = 0; //unlock account

       uEntry.Close();

       return "hello";
   }

Когда я запускаю код, появляется ошибка, когда он достигает строки uEntry.Invoke("SetPassword", new object[] { password });

введите здесь описание изображения

введите здесь описание изображения

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


person Jin Yong    schedule 20.01.2015    source источник
comment
Хорошо, вы проверили свойство ErrorCode исключения?   -  person Reticulated Spline    schedule 20.01.2015


Ответы (1)


Это, похоже, объясняет причину проблемы — вам необходимо указать учетные данные администратора (имя пользователя и пароль).

Я бы подумал, что это проблема безопасности - когда вы запускаете его локально в Windows напрямую, он выполняется под вашей собственной учетной записью, которая, скорее всего, имеет достаточно прав для создания пользователя.

Когда вы делаете это через веб-службу, вы запускаете ее как «анонимный» пользователь ASP.NET, у которого по умолчанию, скорее всего, нет разрешений для этого.

Поэтому, когда вы привязываетесь к AD, вам нужно будет предоставить учетные данные (имя пользователя и пароль), которые обладают достаточными привилегиями, чтобы иметь возможность создавать пользователей. Вы можете сделать это в конструкторе "new DirectoryEntry()" - проверьте его перегрузки.

person kennyzx    schedule 20.01.2015