【问题标题】:Sharing authentication cookie between DNN Site and ASP.NET Site在 DNN 站点和 ASP.NET 站点之间共享身份验证 cookie
【发布时间】:2016-07-27 12:08:27
【问题描述】:

我在 example.com 上有一个 DNN 站点,在 subdomain.example.com 上有一个 MVC 站点。我根据这篇文章设置了MembershipProvider 和RoleProvider:SharePoint-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>

【问题讨论】:

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


【解决方案1】:

当您看到此行为时,通常是由于不同应用程序之间的加密 MachineKey 值不同。当其他应用程序尝试读取 cookie 时,它​​无法将其解密然后将其删除,从而允许您登录。

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

【讨论】:

  • 是的,我已经检查过了,因为当机器密钥不一样时,出现错误“无法解密防伪令牌”。我已经更新了我的网站.config 在答案中。
猜你喜欢
  • 2011-11-23
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多