Из службы WCF, как я могу вызвать метод в DLL третьей стороны, поскольку текущий пользователь не IIS\DefaultApppool

У меня есть требование написать службу WCF, которая будет вызываться из MS Excel с использованием Service Moniker из кода VBA. Пока что эту часть я разобрался.

У меня также есть олицетворение, работающее так, чтобы, если бы я должен был вернуть текущего пользователя из веб-метода, он вернет мое имя пользователя, а не IIS\DefaultAppPool или любой другой IIS, запущенный как...

Так вот моя проблема. У меня есть сторонний dll "Управление паролями CyberArk, если кому-то интересно", где я создаю объект PWD, устанавливаю некоторые параметры и затем вызываю метод с именем Getpassword. Теперь я могу вызвать метод, но всегда получаю ошибку аутентификации. Если я копаюсь в журналах агента CyberArk, который у меня работает, кажется, что, хотя я использую Олицетворение, метод dll по-прежнему вызывается как IIS\DefaultAppPool

Вот несколько фрагментов...

Олицетворение включено на уровне метода

[OperationBehavior(Impersonation = ImpersonationOption.Required)]

Вызов этого метода возвращает мой домен и имя пользователя, как я и ожидал

WindowsIdentity.GetCurrent().Name

Но эта строка называется IIS\DefaultAppPool

password = PasswordSDK.GetPassword(passRequest);

Я попытался выполнить олицетворение в коде, а не использовать Annotaion, я также попытался использовать объект олицетворения с использованием bolck, и, похоже, ничего не работает, поэтому я думаю именно об этом.

  1. DLL как-то не позволяет мне выдавать себя за вызывающего по соображениям безопасности

  2. Это может быть.NET Framework не позволяет это снова по соображениям безопасности

  3. Я понятия не имею и хотел бы помочь:-)

1 ответ

Вы можете самостоятельно разместить приложение вместо использования IIS для размещения. Тогда служба будет запущена в процессе, который уже запущен как текущий пользователь.

(Если это вариант)

Другие вопросы по тегам