asp.net - IIS6 SSL 配置 - 必须登录两次(一次用于 :80, 一次用于:443)

标签 asp.net ssl asp-classic iis-6

我有一个包含管理应用程序的虚拟文件夹,例如

https://www.mysite.com/alpha

这需要 SSL。在该文件夹的 IIS 管理器属性中,在“身份验证和访问控制”下,禁用匿名访问并将“经过身份验证的访问”设置为“集成 Windows 身份验证”。

当我在 Chrome 中连接到站点时,我收到两个登录框。第一个来自 mysite.com/alpha:443,第二个来自 mysite.com/alpha:80。 Firefox 似乎重新发送了我的第二个框的凭据,因此它永远不会显示。

知道为什么我需要登录两次吗?

最佳答案

如果您需要为网站上经过身份验证的用户使用 SSL(出于任何原因),那么最好的解决方案是始终将您的“登录”页面置于 https:// 上。这样,当他们登录时,他们会立即获得安全。这是因为 SSL 的 native 设计。它通过不在 httphttps 之间传递身份验证状态来将自身与非安全版本分开/保护。

您还必须编写一些逻辑来将返回的经过身份验证的访问者重定向到安全页面(即:可以从 cookie 返回经过身份验证的访问者)。

编辑:

由于您使用的是 Windows 身份验证,将 ALL 传入 http 流量重定向到 https 可能是最简单的方法。这意味着您的整个网站将通过 SSL 访问,并且无法通过 http 访问(除了重定向到 https)

我写了一个Blog Post关于强制网站在网址中使用 WWW,但也可以移植到强制 https。

关于asp.net - IIS6 SSL 配置 - 必须登录两次(一次用于 :80, 一次用于:443),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205746/

相关文章:

c# - 将 Excel 读取到数据表而不会丢失货币类型的精度

javascript - 从代码隐藏中禁用 RadioButtonList 并使用 javascript 启用它

jquery - 在 Firefox 中通过 SSL 使用 jQuery 和 jquery.fileupload.js 上传文件失败

asp-classic - 将单个单词拆分为组成字母的数组

mysql - ADODB.Recordset 无法获取 MySQL 数据库中最后插入的 ID

.net - SMS - 传入消息处理

c# - 是否建议在不使用反向代理的情况下在 Linux 上运行 Kestrel?

.htaccess - htaccess 从 https 中排除 sitemap.xml 和 robots.txt

ruby - bundle 安装的 ssl 证书失败

asp-classic - 如何从 ASP 中的字符串中查找特定值