C# ASP.Net Webforms和MVC(不同的数据库和域)中的单点登录

C# ASP.Net Webforms和MVC(不同的数据库和域)中的单点登录,c#,asp.net,asp.net-mvc,wcf,single-sign-on,C#,Asp.net,Asp.net Mvc,Wcf,Single Sign On,我对自己的处境感到困惑。我在不同的机器(和域)上部署了不同的应用程序(ASP.NET 4.0 Web窗体和ASP.MVC),每个应用程序都有自己的用户和角色结构(单独的MS SQL数据库)。MVC应用程序目前处于早期实施阶段。Web表单应用程序在生产环境中工作 我需要做的是在这些应用程序之间实现SSO。我想进行自动身份验证-登录到asp.net web窗体应用程序后,我需要通过asp.mvc应用程序端的身份验证 我知道,通过auth cookie实现SSO的要求是让应用程序同时在公共数据库和域(

我对自己的处境感到困惑。我在不同的机器(和域)上部署了不同的应用程序(ASP.NET 4.0 Web窗体和ASP.MVC),每个应用程序都有自己的用户和角色结构(单独的MS SQL数据库)。MVC应用程序目前处于早期实施阶段。Web表单应用程序在生产环境中工作

我需要做的是在这些应用程序之间实现SSO。我想进行自动身份验证-登录到asp.net web窗体应用程序后,我需要通过asp.mvc应用程序端的身份验证

我知道,通过auth cookie实现SSO的要求是让应用程序同时在公共数据库和域(或子域)上工作,但在我的情况下,真的不可能以最小的工作量实现SSO吗

目前我有两个想法:

1) 使用第三方工具(OAuth?)-但我还没有读到它

2) 在Mvc端创建一些WCF服务来验证用户:Web表单应用程序将通过WCF服务(加密数据)发送登录名和密码(哈希?),Mvc应用程序将验证这些数据。积极验证后,mvc应用程序将为此登录名和密码启动表单身份验证

我不确定我的任何概念是否可行和安全

您是否同意这两个概念中的任何一个,或者对解决我的问题有任何其他建议?我将感谢你的帮助


已编辑-说明需要

它是我们的客户需求-web表单应用程序很旧,目前可以在生产环境中使用。它有自己的自定义memebrship提供程序连接到MSSQL数据库表的用户和角色。新的应用程序将用asp.MVC4编写,并将拥有自己的用户注册页面和用户结构等。 它必须部署在不同的计算机上

旧应用程序的一些用户将(在启动时)复制到新应用程序中,因为他们必须看到一些功能 登录到旧应用程序后新应用程序的。从他们的角度来看,新应用程序一定是旧web表单应用程序的一部分(新模块)。另一方面,新应用程序必须是独立的,并且将是一些用户池,他们将只使用新应用程序。如果只有一个业务流程(通过wcf或rest服务进行订单同步),则这两个应用程序将被集成



我们处理了一些与您的问题类似的问题。但在我的情况下,这两个域受同一个AD服务器的控制。通过跨域共享Cookie,我们正在交叉检查SSO。

您可以实现Idp(也称为STS或OpenID提供程序)使用类似的方法,选择一个数据库用户作为内部身份验证提供程序,选择其他数据库用户作为外部身份验证提供程序。

是的,这是一种跨子域SSO。但是您是如何处理不同数据库上的不同用户表的?在我们的例子中,表单身份验证是针对AD的。为什么您计划使用单一身份验证针对不同的用户表进行身份验证?我编辑了原始帖子,因为答案太长。我添加了“解释需求”部分