C# 用于多个项目的单点登录工具栏,MVC4

C# 用于多个项目的单点登录工具栏,MVC4,c#,entity-framework,asp.net-mvc-4,single-sign-on,C#,Entity Framework,Asp.net Mvc 4,Single Sign On,我正在基于MVC4构建一组服务。它们都应该是同一认证系统的一部分。目前,我有一个单独的项目来处理所有模型,包括制作新的MVC4应用程序时默认获得的表单验证 现在,我想制作一个用于登录到我们的云服务的工具栏,这个工具栏的制作方式必须能够将它导入到我们的其他服务中。使用此工具栏登录应使您登录到我们的所有服务,这些服务分为不同的MVC应用程序。因此,在浏览“service1”然后转到“service2”时登录,您仍应使用同一用户登录 有人能给我指一下正确的方向吗?我应该为这个工具栏制作一个单独的MVC

我正在基于MVC4构建一组服务。它们都应该是同一认证系统的一部分。目前,我有一个单独的项目来处理所有模型,包括制作新的MVC4应用程序时默认获得的表单验证

现在,我想制作一个用于登录到我们的云服务的工具栏,这个工具栏的制作方式必须能够将它导入到我们的其他服务中。使用此工具栏登录应使您登录到我们的所有服务,这些服务分为不同的MVC应用程序。因此,在浏览“service1”然后转到“service2”时登录,您仍应使用同一用户登录


有人能给我指一下正确的方向吗?我应该为这个工具栏制作一个单独的MVC应用程序,并在我所有的其他项目中引用它吗?我应该将控制器导出到单独的项目中并使用它们吗?我不知道这里的最佳实践是什么,也不知道在哪里可以找到我需要的关于这个问题的信息。

因为您将在不同的域上托管您的应用程序,您可以通过堆栈交换网络实现某种单点登录机制:

不同的域意味着您将无法共享表单cookie。您应该学习如何使用一种企业单点登录协议—使用公认的协议意味着您可以轻松集成其他应用程序,即使它们是用不同的技术开发的(大多数开发环境都支持标准化协议)

可能的候选人包括:

  • OAuth2协议。这是一个受人尊敬的协议,因为谷歌、LiveID、Facebook、Twitter和其他人都支持它。要构建OAuth2服务器,您需要一个类似DotNetOpenAuth的框架

  • WS-Federation。在.Net Word中得到了很多关注,因为我们获得了Windows身份基础框架,它允许您创建WS联邦服务器和客户端。


无论如何,我的建议是现在就投入你的时间,因为这将在将来得到很好的回报。

这些服务/应用程序是托管在同一根域上(即
service1.foo.com
service2.foo.com
,…)还是在不同的域上(
service1.com
service2.com
,…)?它们将使用相同的数据库,但具有不同的域。