Получение NetworkCredential для текущего пользователя (C #) - PullRequest
38 голосов
/ 04 июня 2009

Я пытаюсь вызвать веб-сервис из консольного приложения, и мне нужно предоставить клиенту объект System.Net.NetworkCredential.
Можно ли создать объект NetworkCredential для пользователя, запустившего приложение, без запроса имени пользователя / пароля?

Ответы [ 2 ]

46 голосов
/ 04 июня 2009

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

Редактировать: чтобы получить учетные данные для текущего удостоверения, используйте следующее:

Uri uri = new Uri("http://tempuri.org/");
ICredentials credentials = CredentialCache.DefaultCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");
3 голосов
/ 04 июня 2009

Вы можете получить имя пользователя, используя System.Security.Principal.WindowsIdentity.GetCurrent () , но нет способа получить текущий пароль пользователя!

...