Вызовите веб-службу в соответствии с текущими учетными данными пользователя

53
5

У меня есть пользовательский веб-сервис WCF, запущенный с проверкой подлинности Windows и клиентским приложением WPF, которое нужно вызвать первым. Служба проверяет имя пользователя и извлекает определенные данные из базы данных. Поэтому я должен вызвать службу, используя учетные данные пользователя, запускающего приложение.


Проблема заключается в том, что моя служба размещается на другом сайте с проверкой подлинности Windows, и пользователи могут аутентифицироваться там с другими учетными записями. Windows (или IE?) Кэширует последний атрибут, а затем мое клиентское приложение также использует его!


Пример:


Я вхожу на веб-сайт в разделе "MYDOMAIN\AdminUser"


Я запускаю следующий код (из клиентского приложения, это не веб-код)


var client = new TestServiceClient();
var currentUser = WindowsIdentity.GetCurrent(); // just informative field nothing more, i don't use it anyhow
// currentUser.Name = "MYDOMAIN\\MyUserName" - it current value, i'm not trying to set it
client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var data = client.GetTestData();

Служба вызывается "MYDOMAIN\AdminUser"..


Я знаю, что могу создать NetworkCredential с именем и паролем, но потом мне придется его где-то его хранить, encript и т.д.


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

спросил(а) 2011-03-01T20:08:00+03:00 9 лет, 3 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема