1

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

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

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

目前我有2个想法:

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

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

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

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


已编辑 - 解释需要

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

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


4

2 回答 2

0

我们处理了与您的问题类似的事情。但在我的情况下,这两个域都在同一个 AD 服务器的控制之下。通过使用跨域的 Cookie 共享,我们正在交叉检查 SSO。按照这个链接

于 2013-10-30T09:02:20.507 回答
0

您可以使用诸如IdentityServer3之类的东西来实现 Idp(又名 STS 或 OpenID 提供程序),并选择一个数据库用户作为内部身份验证提供程序,并选择其他数据库用户作为外部身份验证提供程序。

于 2016-07-13T17:42:11.037 回答