我有一个正在开发的 .NET (MVC2) 网站。我已将其部署到一些生产基础架构,并通过互联网以匿名访问对其进行了测试(一旦上线就会如此),并且运行良好。从现在到上线日期,我希望将访问权限限制为一小群测试人员。
但是,当我关闭匿名访问(我在 Windows 2008 R2 64 位上使用 IIS 7)并启用基本身份验证时,出现了两件事情:首先,它会干扰站点身份验证,并重定向到配置的站点登录页面;其次,由于某种原因,样式表停止“工作”。也就是说,即使样式表被正确下载(如在 Fiddler/Firebug 中看到的那样),站点看起来好像没有样式表。
我想要的是确保对服务器的访问安全 - 我不想使用基本身份验证作为 MVC 网站的身份验证机制 - 该机制由标准表单身份验证处理。我只是想阻止人们在网站上线之前窥探网站。
我以前也遇到过这种情况,并且一直在努力解决缺少简单/明显的“用密码保护此服务器”功能的问题。
一定有一个简单的答案。(我正在考虑一个功能等同于 .htaccess 文件,但适用于 IIS)?
[更新] 继我险些失败之后(见下面的答案),我想要的是 Windows 身份验证来控制对网站的访问,以及 ASP.NET 身份验证来控制用户与网站的交互(他们的身份、是否显示登录/退出等)
答案1
您可以通过为站点设置 IP 地址和域限制来执行所需的操作。这是 IIS 管理器中的一个选项。
答案2
好的 - 所以这可能是我的错误。为了让 IIS/ASP.NET 正常运行,您不能仅仅依赖 IIS 身份验证模块。当我忙于启用/禁用 IIS 管理器管理单元中的选项时,我遇到的问题(重定向)是由 web.config 设置引起的:
<authentication mode="Forms">
<forms loginUrl="~/logon" protection="All" path="/" />
</authentication>
无论您在 IIS 中选择哪个选项(匿名、基本、Windows、表单等),web.config 似乎都会覆盖/干扰该选择。
因此,答案是将 web.config 中的身份验证元素替换为声明 Windows 身份验证的元素:
<authentication mode="Windows"></authentication>
然后通过 IIS 模块删除匿名访问,并选择 Basic。