ActiveDirectoryMembershipProvider.ChangePasswordQuestionAndAnswer 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
為 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 個字元。
username
為 null
。
-或-
password
為 null
。
-或-
newPasswordQuestion
為 null
,且 RequiresQuestionAndAnswer 屬性為 true
。
-或-
newPasswordAnswer
為 null
,且 RequiresQuestionAndAnswer 屬性為 true
。
machineKey 元素 (ASP.NET 設定結構描述) 組態元素表示自動產生的機器加密金鑰。 您必須明確設定 machineKey 元素 (ASP.NET 設定結構描述) 元素的 decryptionKey
屬性,以與 ActiveDirectoryMembershipProvider 一起儲存密碼回應。
ChangePasswordQuestionAndAnswer(String, String, String, String) 方法的呼叫,會在初始化 ActiveDirectoryMembershipProvider 執行個體之前進行。
備註
類別會 ActiveDirectoryMembershipUser 呼叫 方法,以更新 Active Directory 成員資格存放區中使用者的密碼問題和答案。
重設用戶的密碼時,需要密碼問題和解答可提供額外的安全性層。 建立用戶名稱時,使用者可以提供問題與解答,以供稍後用來重設忘記的密碼。 方法會將 ChangePasswordQuestionAndAnswer 成員資格使用者的密碼問題和答案更新為新的值。
若要使用 ChangePasswordQuestionAndAnswer 方法,您必須在應用程式的組態檔中設定這些額外的屬性:
requiresQuestionAndAnswer
必須是true
。attributeMapPasswordQuestion
和attributeMapPasswordAnswer
必須對應至 Active Directory 架構中的屬性。
如果不符合上述準則, ProviderException 則會在初始化時擲回 。
實例ActiveDirectoryMembershipProvider會使用 和 password
參數中username
提供的認證來連線到 Active Directory 資料存放區,以驗證使用者名稱/密碼組合。 問題和答案的實際更新會使用提供者的已設定連線認證來執行。
如果提供不正確的密碼給 ChangePasswordQuestionAndAnswer 方法,目錄伺服器將會遞增追蹤無效密碼嘗試的計數器。 這可能會導致使用者被鎖定且無法登入,直到呼叫 UnlockUser 方法或目錄中指定的鎖定持續時間通過為止。
如果問題和答案的更新成功,且 EnablePasswordReset 屬性為 true
,則會重設使用者的不正確密碼答案追蹤計數器。
密碼答案會先使用 EncryptPassword 方法加密,再儲存在 Active Directory 資料存放區中。 加密金鑰和演算法是由 machineKey元素 (ASP.NET 設定架構) 組態專案所指定。 必須指定 machineKey元素上的解密屬性 (ASP.NET 設定架構) 元素,類別 ActiveDirectoryMembershipProvider 不支援自動產生的加密密鑰。
密碼問題的最大長度為 256 個字元。 密碼答案的最大長度為 128 個字元。
除了 之外 password
,所有參數值都會修剪前置和尾端空格。
提供者會執行使用者名稱的子樹搜尋,從連接字串中指定的搜尋點開始,尋找要更新的用戶實例。 ActiveDirectoryMembershipProvider如需連接字串的詳細資訊,請參閱 類別主題。