Как сбросить пароль для 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()" - проверьте его перегрузки.