我已经使用了面向使用匿名访问的经典ASP应用程序(托管在Windows-Server-2012 / IIS8上)的Internet,我想转到表单身份验证。虽然它不是直接的,因为它目前(使用Anon.Access设置)未经身份验证的用户(即尚未登录的用户)可以查看.pdf,.doc等文件,如果他们输入确切的URL文件的路径(即通过默默无闻的安全性)。
问题
我的设置和我尝试过的内容
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>
其他注意事项
非常感谢任何帮助
答案 0 :(得分:0)
我最终从HttpModule中的cookie创建了一个真正的FormsAuthentication cookie(模块的配置是模块部分)。然后,这适应了允许/拒绝规则。