Asp.net共享由同一域中的两个应用程序进行身份验证

时间:2015-03-03 11:20:36

标签: asp.net authentication cookies subdomain forms-authentication

我在同一个域中有两个应用程序:mydomain / app1和mydomain / app2,我需要在它们之间共享身份验证。一个应用程序在Asp.Net WebForms中,第二个是使用WebApi2。

我配置了web.config,如下所示:

App1的:

<authentication mode="Forms">
  <forms loginUrl="/Login.aspx" defaultUrl="/Default.aspx" name=".ASPXFORMSAUTH" protection="All" cookieless="UseDeviceProfile" slidingExpiration="true" path="/" domain="mydomain" requireSSL="false" timeout="60" enableCrossAppRedirects="false">
  </forms>
</authentication>
<authorization>
  <deny users="?" />
  <allow users="*"/>
</authorization>
<machineKey validationKey="generated key1" decryptionKey="generated key2" validation="SHA1"/>

App2的:

<authentication mode="Forms">
  <forms loginUrl="/index.html" defaultUrl="/index.html" name=".ASPXFORMSAUTH" protection="All" cookieless="UseDeviceProfile" slidingExpiration="true" path="/" domain="mydomain" requireSSL="false" timeout="60" enableCrossAppRedirects="false">
  </forms>
</authentication>
<authorization>
  <deny users="?" />
  <allow users="*"/>
</authorization>
<machineKey validationKey="generated key1" decryptionKey="generated key2" validation="SHA1"/>

我正在登录app1并观察cookie内容。 然后我在另一个浏览器选项卡中请求来自app2的URL。第二个选项卡中的cookie(名称和内容)与第一个选项卡中的cookie相同。 我希望第二个选项卡中的请求由app2进行身份验证,因为cookie已经由app1进行了身份验证。 然而,这没有发生,我被重定向到app2的登录页面。

1 个答案:

答案 0 :(得分:3)

正如OP所建议的那样,这个答案适用于那种情况。

他们已经将Cookie加密更改为4到4.5之间。您可以在同一个.net下运行,也可以通过向计算机密钥配置节点添加属性来启用4.5站点上的兼容性。

https://social.microsoft.com/Forums/en-US/1791c5e3-4087-4e92-a460-51c5c4221f49/any-forms-auth-changes-in-45?forum=Offtopic