G
Guest
Can anyone please comment on this ASP.NET 2.0 Membership error & how to get
the following code to run?
ERROR:
The Membership database seems to be encrypting randomly & it's causing our
web app to keep throwing errors & keeping our users from logging in. (See
below for greater detail.)
How do we get this line to run?
In ASP.NET 2.0 Membership (aspnet_Membership table) can anyone tell me
whether the web.config machineKey tag (with validationKey & decryptionKey)
actually controls how the aspnet_Membership.passwordAnswer column is
encrypted?
NOTE: In our situation, ALL users have the same static value for
passwordQuestion & passwordAnswer because we only reset/generate passwords
programmatically. The passwordAnswer column gets encrypted and it USED TO
be
the same value for everyone:
/BDizKy0FRtHQJxjTO3SnI/H/4g=
.... but now, it generates completely different values for every user:
sUmS0wDxiGK52o8r37dZDxbeCjI=
OdLx8wXO/cgRfvqKHlXV+I12HAg=
THE ISSUE:
The other day, we started getting an error when the user clicks the Change
Password button which calls:
public void ChangePassword()
{
Password = RandomPassword.Generate(8);
MembershipUser mu = Membership.GetUser(this.UserName);
//CANNOT RUN:
string genPassword = mu.ResetPassword("[REMOVEDasswordAnswer]");
mu.ChangePasswordQuestionAndAnswer(genPassword,
"[REMOVEDasswordQuestion]", "[REMOVEDasswordAnswer]");
mu.ChangePassword(genPassword, Password);
}
ERROR:
"The password-answer supplied is wrong."
(This SEEMS to be an encryption issue, since all passwordAnswers are exactly
the same.)
Please help me better understand the process & how to control it.
Thoughts:
We do not yet have a machineKey tag in web.config, so it should default to
AutoGenerate, which may create different values on different machines,
right?
So, since I now want to control it (same encryption) across both Development
and Production machines, I want to add the keys I've generated.
But, with the machineKey tag, it still generates different keys for users...
Is this normal?
Is it perhaps using values from the userid, username, or Salt to create the
encrypted
passwordAnswer?
PROVIDER:
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlConn" applicationName="[REMOVED]"
passwordStrengthRegularExpression="[REMOVED]" minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="1" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="true"
requiresUniqueEmail="false" passwordFormat="Hashed"
maxInvalidPasswordAttempts="5" passwordAttemptWindow="10"/>
the following code to run?
ERROR:
The Membership database seems to be encrypting randomly & it's causing our
web app to keep throwing errors & keeping our users from logging in. (See
below for greater detail.)
How do we get this line to run?
//CANNOT RUN:
string genPassword = mu.ResetPassword("[REMOVEDasswordAnswer]");
In ASP.NET 2.0 Membership (aspnet_Membership table) can anyone tell me
whether the web.config machineKey tag (with validationKey & decryptionKey)
actually controls how the aspnet_Membership.passwordAnswer column is
encrypted?
NOTE: In our situation, ALL users have the same static value for
passwordQuestion & passwordAnswer because we only reset/generate passwords
programmatically. The passwordAnswer column gets encrypted and it USED TO
be
the same value for everyone:
/BDizKy0FRtHQJxjTO3SnI/H/4g=
.... but now, it generates completely different values for every user:
sUmS0wDxiGK52o8r37dZDxbeCjI=
OdLx8wXO/cgRfvqKHlXV+I12HAg=
THE ISSUE:
The other day, we started getting an error when the user clicks the Change
Password button which calls:
public void ChangePassword()
{
Password = RandomPassword.Generate(8);
MembershipUser mu = Membership.GetUser(this.UserName);
//CANNOT RUN:
string genPassword = mu.ResetPassword("[REMOVEDasswordAnswer]");
mu.ChangePasswordQuestionAndAnswer(genPassword,
"[REMOVEDasswordQuestion]", "[REMOVEDasswordAnswer]");
mu.ChangePassword(genPassword, Password);
}
ERROR:
"The password-answer supplied is wrong."
(This SEEMS to be an encryption issue, since all passwordAnswers are exactly
the same.)
Please help me better understand the process & how to control it.
Thoughts:
We do not yet have a machineKey tag in web.config, so it should default to
AutoGenerate, which may create different values on different machines,
right?
So, since I now want to control it (same encryption) across both Development
and Production machines, I want to add the keys I've generated.
But, with the machineKey tag, it still generates different keys for users...
Is this normal?
Is it perhaps using values from the userid, username, or Salt to create the
encrypted
passwordAnswer?
PROVIDER:
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlConn" applicationName="[REMOVED]"
passwordStrengthRegularExpression="[REMOVED]" minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="1" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="true"
requiresUniqueEmail="false" passwordFormat="Hashed"
maxInvalidPasswordAttempts="5" passwordAttemptWindow="10"/>