我们正在尝试通过Web管理控制台在服务器上运行一组管理任务。控制台以模拟身份作为当前登录用户运行,并且只允许本地计算机上的管理员登录。现在它适用于大多数情况,但我们在UAC下运行时遇到了麻烦。
第一个问题是阻止程序:管理员似乎没有获得“BUILTIN \ Administrators”角色,即使他们是本地方框的管理员。这可以防止他们甚至进入管理控制台,因为我们使用web.config <allow roles="BUILTIN\Administrators">
表示法来指定安全性。我怀疑这里唯一的解决方案是将ASP.NET应用程序作为SYSTEM运行,或者允许更多用户并在代码中执行更细粒度的权限检查。还有其他想法吗?有没有办法将提升请求注入内置的ASP.NET权限检查?
另一个问题是我们想要运行一些需要管理员访问权限的命令。访问该站点的用户是管理员,并且被正确模拟,但是当我们生成进程时,由于缺少管理员权限而失败。明确的答案是提升该命令的持续时间。有一些解决方案可以让我通过冒充特定的用户名和密码暂时提升,但我不想向已经验证的用户询问他的密码。是否有提升当前用户的技巧?
(我可以理解为什么ASP.NET团队可能会努力做到这一点,因此网页无法获得访问网站的管理员的无形优势......但肯定必须有一些方法来进行编程声明您的代码需要完全的管理员权限,并适当地警告IIS管理员其意图?)
Windows Forms应用程序有一系列答案,例如: How to elevate privileges only when required? 和File.Exists returning false from a network share 但我希望找到一个适用于ASP.NET的工具......
由于 史蒂夫
答案 0 :(得分:1)
通过在Active Directory中启用服务器进行委派,我们能够从当前访问网站的用户获得“更高”的模拟级别。根据Microsoft,You can think of delegation as a more powerful form of impersonation, as it enables impersonation across a network.
您可能不需要通过网络,但它可能会解决您的安全问题。
以下是设置授权的一些资源,希望这对您有所帮助。