3

我们正在尝试通过 Web 管理控制台在服务器上运行一组管理任务。控制台以当前登录用户身份运行,并且仅允许本地计算机上的管理员登录。现在它适用于大多数情况,但我们在 UAC 下运行时遇到问题。

第一个问题是一个阻止程序:管理员似乎没有获得“BUILTIN\Administrators”角色,即使他们是本地机器上的管理员。这甚至可以阻止他们进入管理控制台,因为我们使用 web.config<allow roles="BUILTIN\Administrators">符号来指定安全性。我怀疑这里唯一的解决方案是将 ASP.NET 应用程序作为 SYSTEM 运行,或者允许更多用户并在代码中进行更精细的权限检查。还有其他想法吗?有没有办法将提升请求注入内置的 ASP.NET 权限检查?

另一个问题是我们想要运行一些需要管理员权限的命令。访问该站点的用户是管理员,并且被正确模拟,但是当我们生成一个进程时,由于缺乏管理员权限而失败。明确的答案是在该命令的持续时间内提升。有一些解决方案可以让我通过模拟特定的用户名和密码来临时提升权限,但我不希望不必向已经验证的用户询问他的密码。提升当前用户有什么技巧吗?

(我可以理解为什么 ASP.NET 团队可能会试图让这变得困难,这样网页就不能利用管理员访问网站的隐形优势......但肯定必须有某种方式以编程方式声明您的代码需要完整的管理员权限,适当地警告 IIS 管理员其意图?)

Windows Forms 应用有一系列答案,例如: 如何仅在需要时提升权限?File.Exists 从网络共享返回 false 但我希望找到一个可以与 ASP.NET 一起使用的...

谢谢史蒂夫

4

1 回答 1

1

通过在 Active Directory 中启用服务器进行委派,我们能够从当前访问网站的用户中获得“更高”的模拟级别。根据 Microsoft,You can think of delegation as a more powerful form of impersonation, as it enables impersonation across a network. 您可能不需要通过网络,但它可能会解决您的安全问题。

这里有一些关于设置委托的资源,希望对您有所帮助。

于 2011-06-03T23:20:14.697 回答