[Mono-bugs] [Bug 601727] New: Cannot use Web Forms MD5 authentications

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat May 1 16:29:34 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=601727

http://bugzilla.novell.com/show_bug.cgi?id=601727#c0


           Summary: Cannot use Web Forms MD5 authentications
    Classification: Mono
           Product: Mono: Class Libraries
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Web
        AssignedTo: mhabersack at novell.com
        ReportedBy: djechelon at fastwebnet.it
         QAContact: mono-bugs at lists.ximian.com
          Found By: Customer
           Blocker: No


Description of Problem:
I currently use Web Forms authentication in my ASP.NET app. Web.config like the
following

    <authentication mode="Forms" >
      <forms loginUrl="Login.aspx" protection="All" slidingExpiration="true"
timeout="10">
        <credentials passwordFormat="MD5">
          <user name="admin" password="[md5 hash]" />
        </credentials>
      </forms>
    </authentication>

Under Windows it works fine and I get authenticated.
When using Mono, my login gets refused.

Could't test the same MD5 credentials with other authentication techniques


Steps to reproduce the problem:
1. Configure Web.config like above
2. Create Login.aspx page with at least the following control:

<asp:Login ID="loginControl" runat="server" LoginButtonType="Button"
Orientation="Vertical" CssClass="fieldlabel"
            RememberMeSet="false" TitleText="Login"
OnAuthenticate="loginControl_Authenticate">

and correspondant code-behind method:

        protected void loginControl_Authenticate(object sender,
AuthenticateEventArgs e)
        {
            e.Authenticated =
FormsAuthentication.Authenticate(loginControl.UserName, loginControl.Password);
        }

3. Test with proper credentials

Actual Results:
Your password is always refused

Expected Results:
Your password, matching MD5 hash, should be accepted

How often does this happen? 
Always

Additional Information:
The problem is in the FormsAuthentication.Authenticate(string,string) static
method, that should return true but returns false.
I looked into Mono code, its implementation seems correct (input password is
MD5-hashed if configuration requires hashing, then compared to stored password)
but... "return (password == stored);" statement might be the problem.
It COULD be a casing problem. If the password is stored as lowercase hex but
GetHexString returns uppercase hex or vice versa it could be causing the
problem.

I looked at GetHexString, and, as I remember, its return value is uppercase
judging by ASCII codes involved. My MD5 string in my example is lowercase.

Suggested solutions:
1. When comparing passwords, use case insensitive comparison when password is
hashed, else use case sensitive (passwords are plaintext)
2. Explicitly uppercase the stored password before comparison with hash

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list