Элемент управления ASP.NET ChangePassword с ActiveDirectoryMembershipProvider

У меня есть веб-приложение, которое использует аутентификацию с помощью форм с помощью 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)

person Romias    schedule 15.05.2009    source источник
comment
Можете ли вы предоставить точную информацию об исключении COM (также из внутреннего исключения, которое может быть там)?   -  person Ronald Wildenberg    schedule 15.05.2009
comment
Там я добавил исключение. Пароль, введенный мной в моих тестах, был действительно сложным... поэтому я не думаю, что сообщение является точным. Спасибо, что посмотрели.   -  person Romias    schedule 15.05.2009


Ответы (2)


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

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

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

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

person Romias    schedule 15.05.2009
comment
Спасибо - та же проблема, то же решение. - person Vaibhav; 25.03.2014

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

MinRequiredNonAlphanumericCharacters
MinRequiredPasswordLength
PasswordStrengthRegularExpression

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

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

connectionProtection="SignAndSeal"

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

person jellomonkey    schedule 15.05.2009
comment
Это для конкретной версии, когда я добавляю это, это отображается как недопустимая настройка для подписи и печати - person Eric Brown - Cal; 27.02.2020