会话状态中的Asp.Net身份验证?

时间:2014-12-27 19:55:53

标签: asp.net authentication cookies cross-application

我试图在我维护的三个网站之间进行跨应用程序SSO。其中两个在.NET 4.0下运行,而另一个在2.0下运行。主站点是4.0,而剩下的4.0和2.0站点是在主要站点下运行的子站点。用于4.0和2.0站点的web.configs都具有如下所示的身份验证设置:

<machineKey decryption="AES" validation="SHA1" decryptionKey="<decryptkey>" validationKey="<validationkey>"/>
<authentication mode="Forms">
  <forms name=".MyAuthenticationTicket" domain=".MyDomain-Org" loginUrl="/Login.aspx" path="/" enableCrossAppRedirects="true" protection="All" timeout="43200" cookieless="UseCookies" />
</authentication>

要明确:现在网站正在运行我的本地框,因此上面的域是正确的,它指向-Org而不是.Org。

问题是,我可以登录到任一站点,但只有在我登录4.0站点而不是2.0站点时才会创建.MyAuthenticationTicket。当我登录那个时,没有创建票证。但是,我确实发现当我登录它时,会创建一个ASP.NET_SessionId cookie,当我删除它时,我将退出2.0站点。无论如何,我仍然无法为我的网站实现SSO。

那么......我在这里做错了什么?有人有主意吗?我在这里缺少一个环境吗?

1 个答案:

答案 0 :(得分:0)

如果您希望您的票证在不同版本之间兼容,则需要在4.0应用程序中设置表单身份验证票证的兼容版本。

<forms ... ticketCompatibilityMode="Framework20" .../>