我对自己的情况感到困惑。我在不同的机器(和域)中部署了单独的应用程序(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 app将验证此数据。积极验证后,mvc app将为此登录名和密码启动FORMS身份验证。
我不确定我的概念是否可行且安全。
您是否同意这两个概念中的任何一个或对解决我的问题有任何其他建议?我将非常感谢你的帮助。
已编辑 - 解释需要
我们的客户要求 - 网络表单应用程序已经过时,它目前适用于生产环境。它有自己的自定义memebrship提供程序连接到用户和角色MSSQL数据库表。新的应用程序将用asp.mvc 4编写,并拥有自己的用户注册页面和用户结构等。 它必须部署在不同的机器上。
旧应用程序的某些用户将在新应用程序中复制(启动时),因为他们必须看到一些功能 登录旧应用程序后的新应用程序。从他们的观点来看,新应用程序必须是旧Web表单应用程序的一部分(新模块)。另一方面,新应用程序必须是独立的,并且将成为他们将仅使用新应用程序的一些用户池。两个应用程序仅在一个业务流程的情况下集成(通过wcf或休息服务进行订单同步)。
答案 0 :(得分:0)
我们处理了与您的问题相似的事情。但在我的情况下,这两个域都在同一个AD服务器的控制之下。通过跨域使用Cookie共享,我们正在交叉检查SSO。Follow this Link
答案 1 :(得分:0)
您可以使用IdentityServer3之类的东西实现Idp(也称为STS或OpenID提供程序),并选择一个数据库用户作为内部身份验证提供程序,将其他数据库用户选为外部身份验证提供程序。