无需 Windows 帐户的 IIS7 基本身份验证

无需 Windows 帐户的 IIS7 基本身份验证

我正在尝试使用基本身份验证保护 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 帐户,因此如果您不想为此做任何重大工作,您将不得不使用这些 - 您将需要创建合理锁定的帐户。

通常以下做法就足够了:

  1. 创建一个组(例如 Web 用户)
  2. 将个人账户添加到该组
  3. 从用户中删除账户(这实际上会摆脱许多默认权限)
  4. 授予 Web 用户组对网站文件夹的读取权限(并选择性地授予任何所需的修改权限 - 例如上传目录)
  5. 将该组添加到本地安全策略/用户权限分配中的相关“拒绝...”条目

或者,您可能希望向磁盘、注册表配置单元和任何其他 DACL 驱动的资源添加该组的递归拒绝完全控制 ACE——SetACL 应该能够完成其中的大部分工作(请参阅http://helgeklein.com/)。

如果你真的必须使用自定义用户列表,那么(正如@BrentPabst所说)表单身份验证是唯一真正的方法(请参阅http://msdn.microsoft.com/en-us/library/da0adyye.aspx),但您需要创建 ASP.NET 登录页面。

我还没有尝试过 IIS 管理器身份验证,但据我所知,它仅适用于 FTP 站点,而不适用于网站。

J.

相关内容