How to implement Multi-tenant User Login using ASP.NET Identity

I've now got a working solution that I've shared in a GitHub repository:

https://github.com/JSkimming/AspNet.Identity.EntityFramework.Multitenant

The extensibility required to support multi-tenancy is not possible with the 1.0.0 release of Microsoft.AspNet.Identity.EntityFramework (at least not without a lot of custom work), but is available in the 1.1 alpha release currently available through the Nightly ASP.NET Web Stack NuGet Packages.

I've decided to release what I've produced as a NuGet package AspNet.Identity.EntityFramework.Multitenant, as stated it currently requires the Nightly ASP.NET Web Stack NuGet Packages.

I've provided two simple sites that make use the package to allow for multi-tenancy:

  1. Vanilla Implementation which is the standard MVC5 template project that uses a string primary keys.
    • The changes necessary to provide multi-tenancy have been isolated to this commit.
  2. Integer Primary Key Implementation which is making a few more customisations to use integer primary keys
    • The changes necessary to provide multi-tenancy have been isolated to this commit.

I plan to update the solution as the 1.1 version of ASP.NET Identity is released.

I hope others find some use in the nuget package I've released, any feedback is more than welcome and please raise any issues you find.


Update

The solution has now been updated to use the 2.0 release of Microsoft.AspNet.Identity.EntityFramework.


Yeah we explicitly left this as an extensibility scenario. You should be able to do this via overriding UserManager properties and implementing your own custom IUserStore. Although you might be able to extend the EF UserStore potentially as well and just add a tenantId to your user.