У меня есть веб-приложение, которое использует аутентификацию с помощью форм с помощью ActiveDirectoryMembershipProvider. Это отлично работает... пользователи могут успешно войти в систему.
Как только пользователь войдет в систему, он может изменить пароль. Мы используем элемент управления ChangePassword, который извлекает информацию о членстве и использует СТАРЫЙ и новый пароль для изменения пароля пользователя. ЭТО не работает.
Сообщение об исключении заключается в том, что пароль не соответствует политикам паролей (не сообщение провайдера, а базовый COM-объект. Но это не так, поскольку переход в консоль ActiveDirectory и изменение пароля там действительно работает. При использовании консоли ActiveDirectory мы использовали довольно простой пароль: «Password01».
Для пользователя в ActiveDirectory установлено разрешение на смену пароля. Все наши пользователи хранятся в определенной OU, и строка подключения к AD также указывает на эту OU. Опять же, соединение успешно, так как мы можем войти в систему.
Что еще может помешать нам сменить пароль?
Информация об исключении
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)