【发布时间】:2015-08-10 14:25:05
【问题描述】:
情况:
负载平衡环境,其中 SSL 在 LB 上终止,其下的所有流量都是 HTTP。我们有要求用户进行身份验证的页面,并且我们还要求身份验证 cookie 带有“安全”标志。整个网站必须在 SSL 下运行。
我想在我的本地机器上模拟实时环境,即我想在 HTTP 连接下配置“安全”cookie。到目前为止,我设法达到了以下目的:
Request.IsSecureConnection == true;
Request.ServerVariables["HTTPS"] == "on";
我通过在 IIS 中手动添加 https 变量来做到这一点:
<rewrite>
<rules>
<rule name="HTTPS_Always_ON" patternSyntax="Wildcard">
<match url="*" negate="false" />
<serverVariables>
<set name="HTTPS" value="on" />
</serverVariables>
<action type="None" />
</rule>
</rules>
</rewrite>
问题是我仍然无法在 HTTP 下读取身份验证 cookie。我必须明确切换到 https 连接。
是否可以欺骗 asp.net 在 http 连接下读取安全 cookie?如果是这样,那我需要做什么?
更新:我的帖子描述了问题,但并不完全正确。浏览器不会通过 HTTP 发送标记为“安全”的 cookie,因此无法直接测试我的代码。我需要模拟负载均衡器,它终止 SSL 并将所有流量通过 HTTP 转发到实际的 Web 服务器。看来您可以在一台机器上执行此操作而不会遇到重大困难。
【问题讨论】:
标签: asp.net ssl forms-authentication httpcookie