【问题标题】:How can I run a command line process that requires AD authentication from a .NET web service?如何运行需要从 .NET Web 服务进行 AD 身份验证的命令行进程?
【发布时间】:2010-12-24 16:40:59
【问题描述】:

这与另一个用户询问的question 几乎相同,是我之前询问的question 的续集。

基本上,我的公司最近购买了 Tidal Scheduler。我们需要从其他进程临时启动作业,例如:BizTalk、.NET Web 应用程序等。我们的计划是围绕 C++ API 包装一个 .net Web 服务。这显然会消失 version.next,因此我们尝试在其命令行界面周围包装一个 .net Web 服务。

客户端需要 Active Directory 身份验证。使用以下几乎所有模拟方法,我们都无法从我们的 .net Web 服务成功调用 CLI。从我在上面链接的问题中读到的内容,我们试图模拟一个比 ASPNET 帐户拥有更多权限的用户,这会导致安全漏洞。

有没有更好的方法来做到这一点?有没有办法让它与我们已经走过的路一起工作?感谢您提供任何帮助,我们为此投入了大量时间。

旁注:我们确实使用 PsExec 实现了这一点,但在这一点上,它是一个巨大的 hack-around(它是一个足够大的 hack-around),我们非常不想在我们的环境。

【问题讨论】:

    标签: c# .net active-directory web-services impersonation


    【解决方案1】:

    一种可能的方法是在具有您需要模拟的用户凭据的应用程序池中运行 Web 服务。 (这是假设身份验证是尝试操作的结果,并且作为运行当前 Web 服务的帐户失败......如果即使在以您模拟的用户身份运行时它也需要身份验证,那么您就不走运了。)

    模拟用户需要是运行 Web 服务的机器上的 IIS_WPG 组的成员。它可能还需要一些本地权限。只需确保您冒充的用户对盒子本身的权限非常有限。

    【讨论】:

    • 您先生,是我的英雄。在努力模仿各种类型之后,这个简单的改变解决了一切。谢谢你。
    • 啊,我很高兴它对你有用。我以前用这种方法进行 SSPI 数据库连接,你的问题似乎很相似。
    【解决方案2】:

    也许您需要的是具有您的凭据的 Windows 服务。然后,您的 Web 服务可以调用您的 WIndows 服务来执行您想要执行的任何操作。 Windows 服务是 Visual Studio 中的项目模板,MSDN 上的文档非常简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-08
      • 2021-10-05
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多