我正在尝试使用基本身份验证保护 IIS7.5 上的 MVC.NET 站点。我不想为此设置整个 Windows 帐户,因为我不希望用户拥有那么多特权。我也不想实施数据驱动的身份验证解决方案。我只想快速创建一个只能访问网站而不能访问其他内容的用户。
有没有办法通过将凭据存储在 web.config 文件中来实现这一点?或者使用 IIS 托管用户?托管用户似乎有点过分,因为我不希望用户真正能够管理网站,而只是获得查看网站的权限。
答案1
如果我没记错的话,您可以将用户凭据直接存储在 web.config 文件中,但只能与表单身份验证提供程序结合使用。
确实不建议存储这样的凭据,尤其是当您可以轻松设置默认的 ASP.NET 成员资格提供程序以使用本地 SQLCE 实例时。
<authentication mode="Forms">
<forms name=".ASPNETAUTH">
<credentials passwordFormat="Clear">
<user name="test" password="test"/>
</credentials>
</forms>
</authentication>
答案2
大多数内置的 IIS 身份验证方法都以某种方式使用 Windows 帐户,因此如果您不想为此做任何重大工作,您将不得不使用这些 - 您将需要创建合理锁定的帐户。
通常以下做法就足够了:
- 创建一个组(例如 Web 用户)
- 将个人账户添加到该组
- 从用户中删除账户(这实际上会摆脱许多默认权限)
- 授予 Web 用户组对网站文件夹的读取权限(并选择性地授予任何所需的修改权限 - 例如上传目录)
- 将该组添加到本地安全策略/用户权限分配中的相关“拒绝...”条目
或者,您可能希望向磁盘、注册表配置单元和任何其他 DACL 驱动的资源添加该组的递归拒绝完全控制 ACE——SetACL 应该能够完成其中的大部分工作(请参阅http://helgeklein.com/)。
如果你真的必须使用自定义用户列表,那么(正如@BrentPabst所说)表单身份验证是唯一真正的方法(请参阅http://msdn.microsoft.com/en-us/library/da0adyye.aspx),但您需要创建 ASP.NET 登录页面。
我还没有尝试过 IIS 管理器身份验证,但据我所知,它仅适用于 FTP 站点,而不适用于网站。
J.