2009-05-15 3 views
3

У меня есть webapp, который использует проверку подлинности с помощью ActiveDirectoryMembershipProvider. Это прекрасно работает ... пользователи могут успешно войти в систему.ASP.NET ChangePassword control с ActiveDirectoryMembershipProvider

Как только пользователь выполнит вход в систему, он может изменить пароль. Мы используем элемент управления ChangePassword, который извлекает информацию о членстве и использует OLD и новый пароль для изменения пароля пользователя. ЭТО НЕ РАБОТАЕТ.

Сообщение об исключении: пароль не соответствует политикам паролей (не сообщение поставщика, а базовый COM-объект. Но это не так, как переход на консоль ActiveDirectory и изменение пароля там работают. При использовании консоли ActiveDirectory мы использовали довольно простой пароль: «Password01».

У пользователя в ActiveDirectory установлено значение «Разрешить изменение пароля». Все наши пользователи хранятся в определенном подразделении и строке подключения к AD указывает также на это подразделение. Опять же, соединение успешно, как мы можем сделать Вход.

Любая другая вещь, которая может помешать нам c hanger Пароль?

Сведения об исключении

System.Web.Security.MembershipPasswordException: The password supplied is invalid. 
Passwords must conform to the password strength requirements configured for the default provider. 
---> System.Runtime.InteropServices.COMException (0x800708C5): The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements. (Exception from HRESULT: 0x800708C5) 
     --- End of inner exception stack trace --- 
     at System.Web.Security.ActiveDirectoryMembershipProvider.ChangePassword(String username, String oldPassword, String newPassword) 
     at System.Web.Security.MembershipUser.ChangePassword(String oldPassword, String newPassword) 
+0

Можете ли вы предоставить точную информацию об исключении COM (также из внутреннего исключения, которое может быть там)? –

+0

Там я добавил исключение. Пароль, введенный мной в моих тестах, был очень сложным ... поэтому я не думаю, что сообщение верное. Спасибо, что посмотрели на него. – Romias

ответ

4

Ну, извините за неудобства ...

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

Итак, если мы создадим пользователя ... ПОЛЬЗОВАТЕЛЬ должен подождать 1 день, чтобы изменить его пароль. Администратор может сбросить пароль без этого ограничения.

Спасибо за ваши комментарии.

+0

Спасибо - такая же проблема здесь, такое же решение. – Vaibhav

1

При настройке поставщика членства в web.config есть несколько значений, связанных с паролями, которые могут быть установлены, а именно:

MinRequiredNonAlphanumericCharacters 
MinRequiredPasswordLength 
PasswordStrengthRegularExpression 

Я бы первым убедитесь, что все они установлены в значения, которые будут соответствовать ActiveDirectory.

Далее, убедитесь, что атрибут connectionProtection установлен в SignAndSeal, вы не можете изменить пароли иначе:

connectionProtection="SignAndSeal" 

Помимо этих предложений, я посмотрел в рефлектор и все ошибки COM (кроме 0x7FF8FAD2) бросаются прямо к клиенту. Ошибка 0x800708C5 появляется в MSDN в нескольких местах, но всегда с текстом, что сложность пароля недостаточна.

Смежные вопросы