Question

I love StackExhchange / StackOverflow's approach to integrating OpenID.

As I understand it, the process goes something like this:

  • If a user signs up with an OpenID provider (i.e. Google), StackOverflow (or similar site) creates an account for the user and associates the OpenID with that account.
  • An existing user can associate multiple OpenID accounts with his/her StackExchange account.

I would love to emulate this behavior because I haven't seen it nearly as user-friendly on other sites.

I know StackExchange is built on ASP.NET MVC, but am not sure whether it uses the standard ASP.NET credentialing model and then adds the OpenID provider in a separate DB table or what.

So, my questions are:

  • How does StackExchange create these accounts? Do they Create a user in the standard ASP.NET MVC provider and then associate the ID, or is there a separate process?
  • how does StackExchange allow additional OpenID provider accounts to be associated with an existing account?

Thanks in advance for any help you can give!

Was it helpful?

Solution

The StackExchange sites use the DotNetOpenAuth library (previously known as DotNetOpenId library).

You basically need a User table and a User_OpenID table with a one-to-many relationship. Scot Hanselman has a good basic article or try a more in depth overview

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top