经典ASP - web.config拒绝规则未检测到cookie

时间:2015-05-25 07:37:27

标签: cookies asp-classic forms-authentication

我已经使用了面向使用匿名访问的经典ASP应用程序(托管在Windows-Server-2012 / IIS8上)的Internet,我想转到表单身份验证。虽然它不是直接的,因为它目前(使用Anon.Access设置)未经身份验证的用户(即尚未登录的用户)可以查看.pdf,.doc等文件,如果他们输入确切的URL文件的路径(即通过默默无闻的安全性)。

问题

  • 我希望当我登录时,我能够在输入绝对URL时看到.pdf' s )
  • 但是我也期待当我登录时,我应该能够在输入绝对URL时看到.pdf(这不会发生 - 当我进入时会发生什么pdf的绝对URL,我被重新定向回主页 - 我仍然登录但是cookie必须在授权内 被检测到 - 即" deny&#34 ;以上规则以拒绝回复并将我发回主页 - 请注意该Cookie存在并且尚未过期)

我的设置和我尝试过的内容

Cookie通过以下代码设置

Response.Cookies("MyAuthCookie") = myGuid
Response.Cookies("MyAuthCookie").Expires = DateAdd("h", 6, Now())
Response.Cookies("MyAuthCookie").Path = "/"

我试图通过web.config授权允许/拒绝规则来限制对.pdf,.doc文件的访问,如下所示

<location path="myProtectedFolder">
  <system.web>
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>
  </system.web>
</location>
<system.web>
  <machineKey decryptionKey="XXXXXXXX99999999XXXXXXXX" validationKey="XXXXXXXX99999999XXXXXXXX" />
    <authentication mode="Forms">
      <forms name="MyAuthCookie" loginUrl="/index.asp" path="/" />
    </authentication>
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>

模块配置如下

<modules>
  <remove name="FormsAuthentication" /> 
  <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />    
  <remove name="UrlAuthorization" />    
  <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />    
  <remove name="DefaultAuthentication" />    
  <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
</modules>

...和处理程序如下(由ISAPI处理)

<handlers>
  <add name="pdfs64" path="*.pdf" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="File" requireAccess="Read" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
  <add name="pdfs" path="*.pdf" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="File" requireAccess="Read" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
</handlers>

其他注意事项

  • 我将网站设置为Anon.Access和Forms Auth(我自己尝试了Forms Auth)。
  • 我已将网站文件夹/子文件夹读取/执行给AppPool身份用户和&#34;经过身份验证的用户&#34;
  • 我已将AppPool标记为.Net 2(也尝试过.Net 4),内置集成管道(也尝试过Classic)

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我最终从HttpModule中的cookie创建了一个真正的FormsAuthentication cookie(模块的配置是模块部分)。然后,这适应了允许/拒绝规则。