Windows用户帐户,只执行IIS7条款

问题描述:

我有一个Web应用程序执行IIS 7规定(使用Microsoft.Web.Administration.dll)来创建我们的网站和FTP站点。当我使用管理员帐户运行它时,它工作正常。Windows用户帐户,只执行IIS7条款

我想为模拟创建一个Windows用户帐户,仅执行这些Web供应过程而不与服务器的管理员角色相同。

我该如何做到这一点?

+0

忘了说,我还建议使用Named Pipes进行Trusted Wrapper程序集和WCF/Remoting应用程序之间的任何通信。它通过没有TCP/IP端口侦听来减少攻击面。我还会在服务应用程序中附加一些额外的认证,例如为每个特权操作传递一个用户名/密码,并拥有某种自定义身份验证机制,例如针对数据库。 – Kev 2009-11-11 21:25:49

您应该将应用程序分为三个部分:

Windows服务

这将举办一个WCF或远程处理的应用程序。你想把需要特权访问你的系统的代码放在这里。例如创建和删除网站。在有足够权利使用Microsoft.Web.Administration执行操作的帐户下运行此服务。

可信包装或代理大会

这是安装在GAC刚刚签署的包装程序集。它的作用是传递来自低信任Web应用程序的调用,以在上述服务中运行的代码中执行特权操作。使用AllowPartiallyTrustedCallers属性标记程序集(如果您的服务器配置为部分信任),并标记需要使用[PermissionSet(SecurityAction.Assert, Unrestricted=true)]访问远程服务的任何类。

前端应用程序(或Web服务)

这是接口,您的应用程序(无论是使用GUI或Web服务的Web应用程序)。在其自己的应用程序池中运行该程序,只需执行足够的权限,例如IUSR或类似的帐户。理想情况下,你也应该在部分信任下运行。

您的Web应用程序/服务引用了GAC中的Trusted Wrapper程序集,该程序集依次引用了在Windows服务中运行的远程处理或WCF应用程序。

使用这种分层的方法意味着你通过对只在你的Windows服务中运行的特定特权操作的访问进行门控锁定。

这种方法在Dominick Baier的'Developing More-Secure Microsoft ASP.NET 2.0 Applications'的附录C中得到了很好的说明。我彻底推荐获得一份副本。

+0

感谢您的Kev ...这解决了我的问题! – mallows98 2009-11-11 20:10:07