表单身份验证单点登录为Asp.Net和MVC站点混合

时间:2013-04-16 01:49:19

标签: asp.net asp.net-mvc forms-authentication single-sign-on

我有一个使用旧学校asp.net(v2.0)编写的旧应用程序,我需要将其与使用MVC3,.Net 4.0编写的新站点集成。 (如有必要,旧网站可以升级到4.0)

这可能吗?我已经阅读过在多个站点中使用表单auth的SSO,但所有帖子都是关于多个asp.net或多个MVC站点 - 我还没有看到任何关于混合两者的内容。

如果两个站点位于同一个域下,并且具有相同的机器密钥,那么这应该有效吗?

编辑:此问题的另一部分,如果可以使用表单身份验证使SSO工作,是否也可以允许这两个应用程序使用相同的会话状态服务,从而在应用程序之间共享会话状态?我知道sessionid存储在cookie中,所以两个应用程序都能够为单个用户访问相同的会话信息吗?

1 个答案:

答案 0 :(得分:0)

表单身份验证受域限制(因为默认情况下,Cookie仅限于域(或子域,如果已配置)。如果在同一域内,则为是。

虽然可以解决跨域共享身份验证的问题。

一项解决方法涉及使用Web服务进行远程身份验证。所涉及的每个站点都将使用相同的服务进行身份验证,即使身份验证仍然是特定于域的,也可以创建一种解决方法,包括将标识值传递给另一个域中的请求。该标识符将用于根据一些公共标识符(用户ID,电子邮件等)自动验证用户。由于我们正在讨论http通信,因此它并不一定“具有”特定的.net,但它会更简单。

还需要考虑OAuth开放式身份验证协议。几乎所有主要平台都支持OAuth,因此它应该与平台无关。但是,我不知道“重定向到您的其他应用程序时自动身份验证的想法,可能违反了OAuth。如果是这样的话,用户需要点击按钮来确认某些内容。

OAuth的好例子就在于Stack Overflow和整个Stack Exchange系列网站。