我有一个Web应用程序,它执行IIS 7规定(使用Microsoft.Web.Administration.dll)来创建我们的Web和ftp站点。当我使用管理员帐户运行它时,它可以正常工作。
我想创建一个用于模拟的Windows用户帐户,该帐户只执行这些Web配置过程,而不必与服务器的管理员角色相同。
我怎样才能做到这一点?
答案 0 :(得分:2)
您应该将应用程序分为三个部分:
Windows服务
这将托管WCF或Remoting应用程序。您希望在此处将需要特权访问权限的代码放入您的系统。例如,创建和删除网站。在具有足够权限的帐户下运行此服务,以使用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中得到了很好的阐述。我完全建议你复印一份。