从WCF服务如何调用第三方dll中的方法作为当前用户而不是IIS \ DefaultApppool

时间:2012-10-10 18:48:54

标签: wcf impersonation cyber-ark

我需要编写一个WCF服务,该服务将使用VBA代码中的Service Moniker从MS Excel调用。到目前为止,我已经想到了这一部分。

我也有模拟工作,所以如果我从Web方法返回当前用户,它将返回我的用户名而不是IIS \ DefaultAppPool或任何IIS正在运行...

所以这是我的问题。我有第三方dll“Cyber​​Ark密码管理,如果有人有兴趣”我在哪里创建一个PWD对象,设置一些参数,然后调用一个名为Getpassword的方法。现在我可以调用该方法,但我总是会遇到验证失败。如果我深入研究我运行的Cyber​​Ark代理的日志,似乎即使我使用模拟,dll方法仍被称为IIS \ DefaultAppPool

以下是几个片段......

模拟方法

启用模拟
[OperationBehavior(Impersonation = ImpersonationOption.Required)]

对此方法的调用会返回我期望的域名和用户名

WindowsIdentity.GetCurrent().Name

但是这一行被称为IIS \ DefaultAppPool

password = PasswordSDK.GetPassword(passRequest);

我尝试在代码中进行模拟,而不是使用Annotaion,我也尝试过使用bolck的模拟对象,似乎没有任何工作,所以这就是我的想法。

  1. dll不知何故不允许我出于安全原因冒充来电者

  2. 出于安全原因,可能是.NET框架不再允许这样做

  3. 我不知道并希望得到一些帮助: - )

1 个答案:

答案 0 :(得分:0)

您可以self-host应用程序而不是使用IIS来托管。然后,该服务将在已作为当前用户运行的进程中运行。

(如果这是一个选项)