子域中的表单身份验证覆盖主域中的身份验证

时间:2013-12-06 01:02:12

标签: asp.net forms authentication

我是ASP.NET的新手。我有一个关于表单身份验证的问题,我有一个带有表单身份验证的Web应用程序(HPE),它已部署到IIS中,

Web服务器中有一个Eligibility网站,它是用经典ASP开发的,它使用表单身份验证。该主网站链接到Web应用程序,如HPE,CHDP,BCCDP等。当我单击HPE链接时,我将重定向到HPE应用程序,我将HPE票证超时设置为20分钟(与主站点相同)。

当我在HPE中停留超过20分钟(做一些事情以保持HPE票证有效)时,我点击侧栏CHDP链接(指向CHDP应用程序),它将直接进入超时页面而不是CHDP应用程序。当我在HPE应用程序中停留20分钟时,有什么办法可以转到主站点的其他页面吗?

以下是web.config中的HPE身份验证部分

<system.web>
    <authentication mode="Forms">
        <forms name=".HPEAUTH" loginUrl="Logout.aspx?go=login" timeout="20" defaultUrl="/Eligibility/Cookiemonster.asp" requireSSL="false" protection="All" path="/" slidingExpiration="true"/>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
</system.web>

很抱歉,我在资格(主站点)目录中找不到任何web.config文件。任何想法或者会非常感激。

1 个答案:

答案 0 :(得分:0)

要在多个应用程序中使用相同的身份验证Cookie,您必须确保machineKey文件的web.config部分在所有应用上设置为相同的内容。

来自MSDN

  

以下示例显示了Web.config的“身份验证”部分   文件。除非另有说明,否则名称,保护,路径,   validationKey,validation,decryptionKey和decryption属性   所有应用程序必须相同。同样,加密   和验证密钥值以及加密方案和验证   用于身份验证票证(cookie数据)的方案必须相同。   如果设置不匹配,则无法共享身份验证票证。   有关如何为validationKey和。生成值的信息   decryptionKey属性,请参见如何:在ASP.NET中配置MachineKey   2.0。 (本主题适用于ASP.NET 2.0及更高版本。)

<configuration>
  <system.web>
    <authentication mode="Forms" >
      <!-- The name, protection, and path attributes must match 
           exactly in each Web.config file. -->
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" 
        protection="All"  
        path="/" 
        domain="contoso.com" 
        timeout="30" />
    </authentication>

    <!-- Validation and decryption keys must exactly match and cannot
         be set to "AutoGenerate". The validation and decryption
         algorithms must also be the same. -->
    <machineKey
      validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
      decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
      validation="SHA1" />
  </system.web>
</configuration>