I am in process of creating a movie review website to cater a large user base. To start it off, I got to get the authentication system working.
Below are the features I would like to see functional
1: Authentication system should be pretty much similar to Stackoverflow login system, with a small change which I will come to in a minute.
2: There are 3 kinds of users in my system: WebUsers, Feeders and WebAdmin
WebUsers should be authenticated via OpenID or OAuth to post a review and to share link on social neworks.
Feeders and WebAdmin should be authenticated by this website.
3: Provision to create Feeders and WebAdmin users for this website and to be authenticated by this website
4: Provision to direct WebUsers to create new user account on myOpenID.
5: As a minor feature, WebUsers should be able to add more than one login id into single account i.e. if a user logs into the website using google ID and then logs in with Facebook ID and if he wishes to add those 2 accounts under one account, he should be able to do so (as done in Stackoverflow.com) .
6: When a WebUser tries to post a review, if not logged in, they should be redirected to login page which is similar to http://stackoverflow.com/users/login (observe there is a Facebook login option too) which uses a modified version of https://code.google.com/p/openid-selector/
7: All user accounts should belong to one table irrespective of their type. When different logins are combined, one record should be flagged as main account.
8: The whole Authentication system should be developed on windows stack: Asp.Net MVC 4 or higher, Linq-to-Entities(DB first preferably), SQL Server 2008 or higher
9: API should be simple to use, well documented at method and class level. Please keep in mind that you are delivering code to another developer so the code should be well readable and maintainable. Use meaningful and well described names for identifiers.
I should see a demo of completely functional authentication system to mark the project completed.
Be warned, I will give top rating only if the code submitted adheres to the highest standards of readability and maintainability.
This project is for developers who already got a working application of similar sort and not for newbies to this concept who would like to give it a shot as it is time consuming and difficult to grasp how different authentication systems fit together.
Thank you for reading through. Bid fair and clear minded.