【问题标题】:ASP.NET ChangePassword control with ActiveDirectoryMembershipProvider带有 ActiveDirectoryMembershipProvider 的 ASP.NET ChangePassword 控件
【发布时间】:2010-10-26 14:11:51
【问题描述】:

我有一个使用 ActiveDirectoryMembershipProvider 的表单身份验证的 web 应用。 效果很好...用户可以成功登录。

一旦用户登录,他可以更改密码。 我们使用一个 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)

【问题讨论】:

  • 能否提供准确的 COM 异常信息(也来自可能存在的 innerException)?
  • 我添加了抛出的异常。我在测试中输入的密码非常复杂……所以我认为该消息不准确。感谢您的关注。

标签: asp.net active-directory asp.net-membership


【解决方案1】:

当您在 web.config 中配置成员资格提供程序时,可以设置几个与密码相关的值,即:

MinRequiredNonAlphanumericCharacters
MinRequiredPasswordLength
PasswordStrengthRegularExpression

我会首先确保所有这些都设置为与 ActiveDirectory 匹配的值。

接下来,请确保将 connectionProtection 属性设置为 SignAndSeal,否则无法更改密码:

connectionProtection="SignAndSeal"

除了这些建议之外,我还查看了 Reflector,所有 COM 错误(0x7FF8FAD2 除外)都被直接抛出给客户端。错误 0x800708C5 出现在 MSDN 中的多个位置,但始终带有密码复杂性不足的文本。

【讨论】:

  • 这是针对特定版本的,当我添加它时,它显示为“Sign and Seal”的无效设置
【解决方案2】:

好吧,给您带来的不便,我们深表歉意……

问题在于 Active Directory 管理员已设置您可以在更改密码之前等待一天。

所以,如果我们创建一个用户... USER 必须等待 1 天才能更改他的密码。 管理员可以在没有此限制的情况下重置密码。

感谢您的 cmets。

【讨论】:

  • 谢谢 - 同样的问题,同样的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2011-02-12
  • 2016-09-04
  • 2012-07-10
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多