在DNN站点和ASP.NET站点之间共享身份验证cookie

时间:2016-04-06 20:54:32

标签: asp.net-mvc cookies forms-authentication dotnetnuke

我在example.com上有一个DNN网站,在subdomain.example.com上有一个MVC网站。我根据这篇文章设置了MembershipProviderRoleProviderSharePoint-Forms-Based-Authentication-Using-DotNet。现在我想在两个站点之间共享auth cookie。我在web.config这两个domain=".example.com"文件中设置了域密钥。 Fiddler说在请求任何网站时使用相同的cookie。并且有以下效果:当我登录其中一个站点时,我正在从另一个站点注销。我能错过什么?

以下是MVC网站web.config的一部分:

<machineKey
  validationKey="DEE8F9D31F46D663FA0BCF9A6A9701B0796777C5"
  decryptionKey="E75FBCF55F6BB0B2A352036B965725FD739B2EB21B790659"
  decryption="3DES"
  validation="SHA1" />
<authentication mode="Forms">
  <forms 
    name=".DOTNETNUKE"
    protection="All" 
    timeout="60" 
    cookieless="UseCookies" 
    loginUrl="~/Account/Login" 
    domain=".example.com" 
    path="/" />
</authentication>
<httpCookies httpOnlyCookies="true" requireSSL="false" domain=".example.com" />
<!-- Configure the Sql Membership Provider -->
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add
      name="SqlMembershipProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="DnnSqlServer"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      minRequiredPasswordLength="7"
      minRequiredNonalphanumericCharacters="0"
      requiresUniqueEmail="false"
      passwordFormat="Hashed"
      applicationName="DotNetNuke" />
  </providers>
</membership>
<!-- Configure the Sql Role Provider -->
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
  <providers>
    <clear/>
    <add
      name="SqlRoleProvider"
      connectionStringName="DnnSqlServer"
      applicationName="DotNetNuke"
      type="System.Web.Security.SqlRoleProvider,System.Web,
            Version=2.0.0.0,Culture=neutral,
            PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

1 个答案:

答案 0 :(得分:0)

当您看到此行为时,通常来自加密的MachineKey值在不同的应用程序之间是不同的。当另一个应用程序尝试读取cookie时,它无法对其进行解密,然后删除它,允许您登录。<​​/ p>

我会在web.config中验证这些项目。 (它们离节点不太远。