Элемент управления ASP.NET ChangePassword с ActiveDirectoryMembershipProvider - PullRequest
3 голосов
/ 15 мая 2009

У меня есть веб-приложение, которое использует проверку подлинности с помощью ActiveDirectoryMembershipProvider. Это работает нормально ... пользователи могут успешно войти в систему.

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

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

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

Есть ли что-то, что может помешать нам сменить пароль?

Информация об исключении

    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)

Ответы [ 2 ]

4 голосов
/ 16 мая 2009

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

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

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

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

1 голос
/ 16 мая 2009

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

MinRequiredNonAlphanumericCharacters
MinRequiredPasswordLength
PasswordStrengthRegularExpression

Сначала я бы удостоверился, что все они установлены в значения, совпадающие с ActiveDirectory.

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

connectionProtection="SignAndSeal"

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

...