Проверка подлинности на основе форм WCF через веб-приложение - передача учетных данных - PullRequest
0 голосов
/ 19 мая 2009

У меня есть простой веб-сервис, в котором безопасность обрабатывается с помощью аутентификации на основе форм.

WCFTestService.ServiceClient myService = new
          WCFTestService.ServiceClient();
myService.ClientCredentials.UserName.UserName = "user";
myService.ClientCredentials.UserName.Password = "secret";
lblResult.Text = myService.GetData(1231);
myService.Close();  

Я обращаюсь к этому через веб-приложение. Поэтому я хочу сделать это один раз, но для безопасности / производительности не нужно делать это снова. Я думал что-то вроде ниже, но, поскольку я использую FormsAuthentication, это не будет работать ...

//Obtain the authenticated user's Identity and impersonate the original caller
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
{
  WCFTestService.ServiceClient myService2 = new WCFTestService.ServiceClient();
  lblResult.Text = "From Logged On Credentials"+myService2.GetData(1231);
  myService2.Close();
}

1 Ответ

1 голос
/ 21 мая 2009

То, что вы пытаетесь сделать, - это установить «безопасный сеанс» между вашим клиентом и вашим сервисом. Это концепция, которая будет работать только с wsHttpBinding, поэтому, если вы не используете эту конкретную привязку, она не будет работать.

Чтобы установить безопасный сеанс, вам нужно установить ряд определенных свойств конфигурации в файлах конфигурации клиента и сервера - вы, безусловно, можете найти эти настройки, прочитав документы (ищите "InstallSecurityContext") или ознакомившись с документами Мишеля Леру Бустуманте. превосходный показ WCF по основам безопасности на MSDN.

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

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...