经典 ASP - web.config 拒绝规则未检测到 cookie
Classic ASP - web.config deny rule not detecting cookie
我使用了一个面向 Internet 的经典 ASP 应用程序(托管在 Windows-Server-2012 / IIS8 上),该应用程序使用匿名访问,我想转移到表单身份验证。虽然它不是直截了当的,但就目前而言(设置 Anon.Access ),未经身份验证的用户(即尚未登录的用户)可以查看 .pdf、.doc 等文件,如果他们输入文件的确切 URL 路径(即通过默默无闻的安全性)。
问题
- 我希望当我未登录时,我应该不在输入绝对[时能够看到.pdf =70=](这没问题)
- 然而我也期待当我登录时我应该能够在输入绝对 URL 时看到 .pdf(这 不会 发生 - 什么发生的是当我输入 pdf 的绝对值 URL 时,我被重定向回主页 - 我仍然登录但 cookie 必须 not 被检测到授权 - 即上面的 "deny" 规则以拒绝响应并将我发送回主页 - 请注意 cookie 存在且尚未过期)
我的设置和尝试过的方法
通过以下代码设置Cookie
Response.Cookies("MyAuthCookie") = myGuid
Response.Cookies("MyAuthCookie").Expires = DateAdd("h", 6, Now())
Response.Cookies("MyAuthCookie").Path = "/"
我已尝试通过 web.config 授权 allow/deny 规则限制对 .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)。
- 我已将网站 folder/sub-folders read/execute 提供给 AppPool 身份用户和 "Authenticated Users"
- 我已将 AppPool 标记为 .Net 2(也尝试过 .Net 4)和集成管道(也尝试过 Classic)
如有任何帮助,我们将不胜感激
我完成了从 HttpModule 中的 cookie 创建一个真正的 FormsAuthentication cookie(模块的配置是模块部分)。这符合 allow/deny 规则。
我使用了一个面向 Internet 的经典 ASP 应用程序(托管在 Windows-Server-2012 / IIS8 上),该应用程序使用匿名访问,我想转移到表单身份验证。虽然它不是直截了当的,但就目前而言(设置 Anon.Access ),未经身份验证的用户(即尚未登录的用户)可以查看 .pdf、.doc 等文件,如果他们输入文件的确切 URL 路径(即通过默默无闻的安全性)。
问题
- 我希望当我未登录时,我应该不在输入绝对[时能够看到.pdf =70=](这没问题)
- 然而我也期待当我登录时我应该能够在输入绝对 URL 时看到 .pdf(这 不会 发生 - 什么发生的是当我输入 pdf 的绝对值 URL 时,我被重定向回主页 - 我仍然登录但 cookie 必须 not 被检测到授权 - 即上面的 "deny" 规则以拒绝响应并将我发送回主页 - 请注意 cookie 存在且尚未过期)
我的设置和尝试过的方法
通过以下代码设置Cookie
Response.Cookies("MyAuthCookie") = myGuid
Response.Cookies("MyAuthCookie").Expires = DateAdd("h", 6, Now())
Response.Cookies("MyAuthCookie").Path = "/"
我已尝试通过 web.config 授权 allow/deny 规则限制对 .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)。
- 我已将网站 folder/sub-folders read/execute 提供给 AppPool 身份用户和 "Authenticated Users"
- 我已将 AppPool 标记为 .Net 2(也尝试过 .Net 4)和集成管道(也尝试过 Classic)
如有任何帮助,我们将不胜感激
我完成了从 HttpModule 中的 cookie 创建一个真正的 FormsAuthentication cookie(模块的配置是模块部分)。这符合 allow/deny 规则。