Использовать пользователя службы Windows «Вход в систему» ​​в качестве NetworkCredentials для веб-запроса - PullRequest
0 голосов
/ 26 сентября 2018

Я разработал службу Windows, на которой выполняется вход в систему как: определенный пользователь Windows.Я использую этого пользователя, потому что у него есть разрешение на веб-сайт, который мне нужно запросить в этой службе Windows.

Проблема заключается в том, что при запросе в Интернете с помощью CredentialsCache.DefaultNetworkCredentials я использую учетные данные текущего пользователя, вошедшего в систему.(WindowsIdentity.GetCurrent ()) для окон, которые не имеют доступа к этой сети.I

Мне нужно каким-то образом передать учетные данные пользователя службы «Вход в систему» ​​службы Windows:

WebRequest request = WebRequest.Create("some url");
// the user running the service can be get from here:
// WindowsIdentity.GetCurrent(), but not the password
request.Credentials = "some code tobtain the user from the service user"

Если я использую:

request.Credentials = CredentialCache.DefaultNetworkCredentials;

, то этоиспользует пользователя из учетной записи Windows, а не из учетной записи службы Windows.

Есть идеи?

1 Ответ

0 голосов
/ 26 сентября 2018

пользователь, запустивший службу, может быть получен здесь: WindowsIdentity.GetCurrent (), но не пароль

Если вы можете получить текущий WindowsIdentity, вы должны иметь возможность выдавать себя за это:

WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
using (WindowsImpersonationContext impersonatedUser = currentIdentity.Impersonate())
{
    // Check the identity.
    Console.WriteLine("After impersonation: " + WindowsIdentity.GetCurrent().Name);
    // Make the request
    WebRequest request = WebRequest.Create("https://google.com");
    // etc
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...