Модуль IIS и WCF - PullRequest
       47

Модуль IIS и WCF

2 голосов
/ 04 августа 2010

Я написал модуль IIS (базовый IHttpModule), который выполняет некоторую пользовательскую (OpenAuth) аутентификацию перед тем, как перейти к моей службе REST WCF. Я расширил GenericPrincipal для отслеживания моего пользователя с помощью IIdentity и установил поле context.User для моего нового принципала: application.context.User = principal

Однако, когда я получаю контекст в WCF (следующий шаг по конвейеру), пользователь обнаруживается как не прошедший проверку подлинности WindowsPrincipal «по умолчанию» (а не GenericPrincipal, который я установил).

Я вижу много вещей в сети о том, как сделать эту работу (включая aspNetCompatibilityEnabled = "true" для serviceHostingEnvironment, игры с OperationContext и т. Д ...) Но ничего из того, что я пробовал, похоже, не работает.

Два вопроса:

  1. Есть ли способ заставить это работать (или я просто лаю не туда)?
  2. Каков будет канонический способ сделать это, или, может быть, более "WCF" способ обработать эту пользовательскую аутентификацию.

Спасибо

1 Ответ

1 голос
/ 04 августа 2010

Вы должны установить свою главную личность на этапе авторизации в WCF.Это требует специальной политики авторизации.Я предлагаю вам прочитать эту статью для получения дополнительной информации.Я не пытался сделать это с помощью настраиваемого модуля HttpModule и REST, но я успешно справился со схемами аутентификации по умолчанию.

...