Windows用户帐户,只执行IIS7条款
我有一个Web应用程序执行IIS 7规定(使用Microsoft.Web.Administration.dll)来创建我们的网站和FTP站点。当我使用管理员帐户运行它时,它工作正常。Windows用户帐户,只执行IIS7条款
我想为模拟创建一个Windows用户帐户,仅执行这些Web供应过程而不与服务器的管理员角色相同。
我该如何做到这一点?
您应该将应用程序分为三个部分:
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中得到了很好的说明。我彻底推荐获得一份副本。
感谢您的Kev ...这解决了我的问题! – mallows98 2009-11-11 20:10:07
忘了说,我还建议使用Named Pipes进行Trusted Wrapper程序集和WCF/Remoting应用程序之间的任何通信。它通过没有TCP/IP端口侦听来减少攻击面。我还会在服务应用程序中附加一些额外的认证,例如为每个特权操作传递一个用户名/密码,并拥有某种自定义身份验证机制,例如针对数据库。 – Kev 2009-11-11 21:25:49