I’m new to web security so I don’t want to implement my own. I plan to use SimpleMembership via the VS2012 template for an ASP.NET MVC Internet Application. The problem is that I need to pass the data via a Web API.
I plan to use basic authentication for my Web API, so I just need to pass username/pass in the http headers. I can intercept the message using Thinktecure.IdentityModel. Here’s an example that uses ASP.NET Membership:
authConfig.AddBasicAuthentication((userName, password) =>
Membership.ValidateUser(userName, password));
I can replace Membership.ValidateUser with my own bool function. I’ve successfully queried my custom database with username/password and everything worked fine. However, I’m using the template’s user database because I DON’T want to store string (or even encoded) passwords.
I am unclear on how to manually validate the credentials using the SimpleMembership’s database. I can grab a UserProfile, but can’t figure out how to check the profile’s password.
UserProfile user = context.UserProfiles.Find(1);
==OUTPUT==
user
UserId: 1
UserName: "bob"
Do you know how I can check if an inputted password matches that of an existing user?
Thanks for your help!
Why you are not using
Membership.ValidateUser? This is not restricted to just ASP.NET Membership assuming you have your[InitializeSimpleMembership](here) attribute in the correct places or have executed the logic inside it yourself elsewhere, and you have the correct references to WebMatrix etc you can still just callMembership.ValidateUserand it will use SimpleMemberships Validate user.If you wanted to go to the database yourself, and assuming you are using hashed password etc then this article is probably going to help as you are going to need to hash your inputed password before selecting it out, the rest of which is just writing some EF or (any other db access method) to select from the User table where the username and hashed passwords match. But I can think of no obvious reason to do this as Membership.ValidateUser will do all this for you.