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

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

Я написал следующий код для сброса пароля в 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 });

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

1 ответ

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

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

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

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

Другие вопросы по тегам