2015-01-20 4 views
0

Кто-нибудь знает, как сбросить пароль для Active Directory на C#?Как сбросить пароль для 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 });

enter image description here

enter image description here

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

+0

Ну, вы проверили свойство ErrorCode для исключения? –

ответ

1

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

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

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

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