Назад | Перейти на главную страницу

Смена паролей AD через ASP.NET. Отказано в доступе, когда пул приложений работает под привилегированным пользователем

Я пытаюсь создать инструмент для самостоятельного сброса пароля для тестового домена. Я использую ASP.NET 4 и IIS 7.

Мой код:

string userDirectoryEntry = "WinNT://domain/" + usermapping[user[1]]
System.DirectoryServices.DirectoryEntry ADEntryToReset = new System.DirectoryServices.DirectoryEntry(userDirectoryEntry);

ADEntryToReset.Invoke("SetPassword", new object[] { newPassword });
ADEntryToReset.Properties["passwordExpired"][0] = 1;
ADEntryToReset.CommitChanges();

Однако при изменении пароля я получаю отказ в доступе. Я изменил пул приложений по умолчанию, чтобы он работал под учетной записью администратора, которая может изменять пароли. Прекрасно работает в отладчике Visual Studio.

Я также попытался явно указать учетные данные для объекта DirectoryEntry (msdn). Это тоже не работает.

Любые идеи?

Возможно, вы захотите использовать LDAP провайдер вместо pre-2000 WinNT поставщик, у которого есть некоторые ограничения возможностей по сравнению с LDAP. В userDirectoryEntry строка должна начинаться с LDAP:// вместо того WinNT://

Если пример msdn с учетными данными не работает, попробуйте инициализировать DirectoryEntry объект с учетными данными:

new DirectoryEntry(userDN,callerUsername,callerPwd);

http://msdn.microsoft.com/en-us/library/wh2h7eed.aspx