Из службы 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, и, похоже, ничего не работает, поэтому я думаю именно об этом.
DLL как-то не позволяет мне выдавать себя за вызывающего по соображениям безопасности
Это может быть.NET Framework не позволяет это снова по соображениям безопасности
Я понятия не имею и хотел бы помочь:-)
1 ответ
Вы можете самостоятельно разместить приложение вместо использования IIS для размещения. Тогда служба будет запущена в процессе, который уже запущен как текущий пользователь.
(Если это вариант)