以特权用户身份运行代码 - 管理密码更改

时间:2014-03-04 15:58:57

标签: c# windows deployment service

我的任务是创建一个小型C#(。Net 4.0)控制台应用程序,该应用程序将在客户的Windows 2008R2服务器上运行。应用程序必须“作为”特定域用户运行,并且还需要尽可能接近24x7运行。

我可以创建双控制台应用程序/ Windows服务,或者我可以使用优秀的FireDaemon将控制台应用程序作为服务运行,这涵盖了“必须始终运行”的方面。

但是,客户的域策略是每120天更改一次密码 - 包括此应用程序将运行的帐户。不可能从此政策中排除该帐户。

因此,看起来我们将安装应用程序(作为服务或通过FireDaemon),帐户上的密码将过期,下次服务器重新启动或应用程序重新启动时,身份验证将失败。

我习惯完全控制部署环境,因此我对如何解决这个问题感到有点困惑。我们如何确保应用程序始终以特权用户身份运行?

(我知道这至少有一脚在ServerFault的职权范围内)

2 个答案:

答案 0 :(得分:3)

  

...帐户上的密码将过期,下次服务器重新启动或应用重启时,身份验证将失败

这是Managed Service Accounts and Virtual Accounts的用途。由于您的目标是Windows Server 2008R2及更高版本,因此 可供您使用

  Windows Server 2008 R2和Windows 7中的

托管服务帐户是托管域帐户,提供以下功能以简化服务管理:

     
      
  • 自动密码管理。
  •   
  • 简化SPN管理,包括将管理委派给其他管理员。 Windows Server 2008 R2域功能级别提供了其他自动SPN管理。有关详细信息,请参阅本文档中的“使用托管服务帐户和虚拟帐户的要求”。
  •   
     Windows Server 2008 R2和Windows 7中的

虚拟帐户是“托管本地帐户”,提供以下功能以简化服务管理:

     
      
  • 无需密码管理。
  •   
  • 在域环境中使用计算机标识访问网络的能力。
  •   

答案 1 :(得分:0)

我认为named pipes可以在这里使用。

您可以创建一个服务合同,其中包含更新程序用于进行身份验证的密码的方法。让外部程序以您选择的任何形式接受新密码作为输入,然后将其传递给服务。从服务合同在服务器上定义的方法可以接受它,将其存储在某个地方,然后您可以强制它使用新密码重新进行身份验证。