ActiveDirectoryMembershipProvider.ChangePasswordQuestionAndAnswer 方法

定义

更新 Active Directory 存储区中的用户密码提示问题和答案。

public:
 override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean

参数

username
String

要为其更改密码提示问题和答案的用户。

password
String

指定的用户的密码。

newPasswordQuestion
String

指定的用户的新密码提示问题。

newPasswordAnswer
String

指定的用户的新密码提示问题答案。

返回

如果更新操作成功,则为 true;否则为 false。 如果密码不正确、用户已锁定或用户不在 Active Directory 数据存储区中,也会返回一个 false 值。

例外

管理员尚未将密码提示问题和答案字段映射到 Active Directory 架构的特性。

username 为空,或超过用户名的最大长度(通常为 256 个字符)。

- 或 -

username 包含逗号。

- 或 -

用户名映射到 userPrincipalName 特性,并且 username 参数包含反斜杠。

- 或 -

password 是一个长度为零的字符串。

- 或 -

password 超过最大密码长度(通常为 128 个字符)。

- 或 -

newPasswordQuestion 为空,并且 RequiresQuestionAndAnswer 属性值为 true

- 或 -

newPasswordQuestion 的长度超过 256 个字符。

- 或 -

newPasswordAnswer 加密后的长度超过 128 个字符。

usernamenull

passwordnull

- 或 -

newPasswordQuestionnull,但 RequiresQuestionAndAnswer 属性为 true

- 或 -

newPasswordAnswernull,但 RequiresQuestionAndAnswer 属性为 true

machineKey 元素(ASP.NET 设置框架)配置元素指示自动生成的计算机加密密钥。 必须将 machineKey 元素(ASP.NET 设置框架)元素的 decryptionKey 属性显式设置为使用 ActiveDirectoryMembershipProvider 存储密码提示问题答案。

注解

方法由 ActiveDirectoryMembershipUser 类调用,以更新 Active Directory 成员资格存储中用户的密码问题和答案。

要求密码问题和答案在重置用户密码时提供额外的安全层。 创建用户名时,用户可以提供稍后可用于重置忘记密码的问题和答案。 方法 ChangePasswordQuestionAndAnswer 将成员身份用户的密码问题和答案更新为新值。

若要使用 ChangePasswordQuestionAndAnswer 方法,必须在应用程序的配置文件中设置以下附加属性:

  • requiresQuestionAndAnswer 必须为 true

  • attributeMapPasswordQuestionattributeMapPasswordAnswer 必须映射到 Active Directory 架构中的属性。

如果未满足上述条件, ProviderException 则会在初始化时引发 。

实例ActiveDirectoryMembershipProvider使用 和 password 参数中username提供的凭据连接到 Active Directory 数据存储,以验证用户名/密码组合。 问题和答案的实际更新是使用提供程序的配置连接凭据执行的。

如果向 ChangePasswordQuestionAndAnswer 方法提供了不正确的密码,目录服务器将递增跟踪无效密码尝试的计数器。 这可能会导致用户被锁定,并且无法在通过调用 UnlockUser 方法或目录中指定的锁定持续时间清除锁定状态之前登录。

如果对问题和答案的更新成功,并且 EnablePasswordReset 属性为 true,则会重置用户错误的密码答案跟踪计数器。

密码答案在存储在 Active Directory 数据存储中之前,使用 EncryptPassword 方法进行加密。 加密密钥和算法由 machineKey 元素 (ASP.NET 设置架构) 配置元素指定。 必须指定 machineKey Element (ASP.NET Settings 架构) 元素的解密属性, ActiveDirectoryMembershipProvider 类不支持自动生成的加密密钥。

密码问题的最大长度为 256 个字符。 密码答案的最大长度为 128 个字符。

从除 之外 password的所有参数值中剪裁前导空格和尾随空格。

提供程序通过从连接字符串中指定的搜索点开始对用户名执行子树搜索来查找要更新的用户实例。 有关连接字符串的详细信息, ActiveDirectoryMembershipProvider 请参阅类主题。

适用于

另请参阅