Я пытаюсь вызвать старую VB6 dll (без исходного кода) из проекта ASP.NET. DLL подключается к серверу с использованием проверки подлинности Windows, поэтому мне нужно вызывать функции как определенный пользователь, а не NETWORKSERVICE, как сейчас.Вызывать функции COM DLL из проекта ASP.NET как конкретного пользователя
Это было бы желательно определить во время разговора, а не при загрузке, потому что я выдаю себя за удаленного пользователя и хотел бы, чтобы это было пользователем, вызывающим функции, а не пользователем приложения, а не NETWORKSERVICE, как сейчас.
Итак, браузер работает под управлением USER, подключившись к приложению, выдающему себя за пользователя USER, вызывая DLL как USER, но DLL пытается подключиться к удаленному серверу как NETWORKSERVICE, а не USER.
Возможно ли подключить эту DLL к удаленному серверу в качестве ПОЛЬЗОВАТЕЛЯ? Или, если ничего другого, подключиться как пользователь приложения?
Edit:
Заимствование осуществляется в коде вызова Impersonate()
на пульте дистанционного управления пользователя WindowsIdentity
. У компании, в которой я работаю, есть таможня SecurityPrincipal
10 и SecurityIdentity
, поэтому это странно, как мне нужно получить WindowsIdentity
(это немного больше, чем у User.Identity
), но я использовал этот метод до того, как успешно и подтвердил, что System.Security.Principal.WindowsIdentity.GetCurrent().Name
является правильным пользователем во время олицетворения.
@rkosegi Читать все сообщение, я олицетворяю себя. –
Если все происходит в процессе между приложением и DLL, но DLL все еще использует другие учетные данные, это, вероятно, означает, что проблема связана с DLL-кодом. –
Возможно, было бы полезно разместить какой-то код точно, как ** вы выдаете себя за себя. Пулы приложений ASP.NET запускаются под NETWORK SERVICE по умолчанию и, если вы не правильно переключаете контексты пользователей, он будет продолжать использовать этого пользователя для доступа к сетевым ресурсам. – Sumo