2009-07-01 12 views
1

.net 2.0でPasswordRecoveryコントロールを使用すると助けが必要です。私の状況は、アプリケーションがハッシュドにパスワード形式を保存することからクリアに変更されたことです。MembershipProviderとPasswordRecoveryコントロール

問題は、新しく作成されたユーザーにクリアパスワードが保存されており、まだハッシュパスワードを持つユーザーがいることです。まだパスワードがハッシュされているユーザーに対して、以下のようなpasswordRecoveryコントロールを使用すると、 'PasswordFormat'フィールドは、ハッシュされたパスワードを持つ以前のユーザーに対して 'クリア'に変更されません。

<asp:PasswordRecovery MailDefinition-BodyFileName="/mailTemplates/changePassword.htm" MailDefinition-From="[email protected]" MailDefinition-Subject="Test" CssClass="noLines" ID="PasswordRecovery1" UserNameTitleText="" UserNameInstructionText="Enter User name and a new passord will be generated and mailed to the user" runat="server" SuccessText="Your password has been sent to your registered email address." SubmitButtonStyle-CssClass="button" 
    onsendingmail="PasswordRecovery1_SendingMail" MembershipProvider="AspNetSqlMembershipProviderF0005600"> 
    </asp:PasswordRecovery> 

<membership> 
    <providers> 
    <remove name="AspNetSqlMembershipProviderF0005600"/> 
    <add name="AspNetSqlMembershipProviderF0005600" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordFormat="Clear" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> 
    </providers> 
</membership> 

答えて

2

MembershipProviderで複数のパスワード記憶方式を使用することはできません。 hasehdパスワードを持つすべてのユーザーにパスワードをリセットして、ユーザー名で電子メールに新しく自動生成されたパスワードを送信する必要があります。

すべてのユーザーのパスワードをhasehdに設定するか、消去する必要があります。

MemberShipProvidersため パスワード保存のための均一straegyがなければなりません。

+0

お返事ありがとうございました。すべてのパスワードがハッシュ、クリア、または暗号化されていなければならないというあなたの主張も述べているMicrosoftの文書はありますか? –

+0

私はまだ1つに出くわしていないと私はそれが存在するかもしれないと思ういけない。プロバイダは、パスワードを読み書きする独自のメカニズムを持ちます。したがって、ハッシュモードで実行するように設定されている場合は、クリアモードと一致しません。それは、それができるかどうかではなく、単にdbから読み書きできるだけで、フォーマットが分からないために目的を果たさないということではありません。 –

1

this .__ curious_geekは正しいです。彼の主張を検証するためにMicrosoftのドキュメントは必要ありません。ハッシュされたパスワードの性質上、固有のものです。パスワードがハッシュされると、は回復することができません。これは単純にハッシングの性質です。これは片方向操作です。それが双方向の場合、ハッシングではなく暗号化になります。

したがって、ハッシュされたパスワードからプレーンテキストに切り替えると、はパスワードをハッシュしたすべてのパスワードをリセットする必要があります。パスワードを元に戻す方法はありません。新しいパスワードを割り当てる必要があります。

関連する問題