1

我需要编写一个 WCF 服务,该服务将使用 VBA 代码中的服务名字对象从 MS Excel 中调用。到目前为止,我已经弄清楚了那部分。

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

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

这里有一些片段......

在方法级别打开模拟

[OperationBehavior(Impersonation = ImpersonationOption.Required)]

如我所料,调用此方法会返回我的域和用户名

WindowsIdentity.GetCurrent().Name

但是这条线被称为 IIS\DefaultAppPool

password = PasswordSDK.GetPassword(passRequest);

我尝试过在代码中进行模拟而不是使用注释,我还尝试了一个使用 bolck 的模拟对象,但似乎没有任何效果,所以这就是我的想法。

  1. 出于安全原因,该 dll 不允许我冒充调用者

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

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

4

1 回答 1

0

您可以自行托管应用程序,而不是使用 IIS 来托管。然后该服务将在已经以当前用户身份运行的进程中运行。

(如果这是一个选项)

于 2012-10-10T18:54:29.713 回答