Идентифицируются ли запросы к службе WCF, размещенной в WAS, конвейером обработки IIS или ...? - PullRequest
10 голосов
/ 19 июля 2011

Следующие вопросы предполагают, что мы размещаем в WAS службу WCF рядом с Asp.Net:

"При размещении WCF рядом с Asp.Net - инфраструктура размещения WCF перехватывает WCFзапрашивает, когда возникает событие PostAuthenticateRequest, и не возвращает обработку в конвейер HTTP ASP.NET. Модули, закодированные для перехвата запросов на более поздних стадиях конвейера, не перехватывают запросы WCF. "

" С side-При параллельной настройке инфраструктура размещения WCF перехватывает сообщения WCF и направляет их из конвейера HTTP "

a) Предполагая, что WAS получит запрос на службу WCF, будет ли механизм аутентификации WCF (Windows , MembershipProvider или Настраиваемая аутентификация) будет вызываться при возникновении события PostAuthenticateRequest, или будет WCF аутентифицировать запрос только после того, как он направит запрос из HTTP-конвейера?Другими словами, работает ли механизм аутентификации WCF вне конвейера обработки IIS?

b) Если механизм аутентификации WCF работает вне конвейера обработки IIS, то я предполагаю, что FormsAuthenticationModule не связан спроверка подлинности клиента WCF (при условии, что служба использует проверку подлинности с помощью форм)?

c) Кроме того, если механизм проверки подлинности WCF работает вне конвейера обработки IIS, то я предполагаю, что IIS / WAS должен быть настроен для анонимной проверки подлинности, даже еслислужба выполняет проверку подлинности клиентов с использованием проверки подлинности Windows?

d) Будут ли отличаться ответы на мой вышеупомянутый вопрос, если служба WCF была размещена на IIS7 (кроме того факта, что служба должна использовать только конечные точки, которые взаимодействуют по протоколу HTTP)?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Я могу ответить только на часть D и часть B, но этого может быть достаточно для решения проблемы, которую вы пытаетесь решить: если вы размещаете службу WCF в приложении ASP.Net, тогда аутентификация с помощью форм поддерживается, если вы включитеСовместимость ASP.Net в службе WCF.Мы широко используем этот метод с нашими апплетами Silverlight.

Это двухэтапный процесс:

1) Украсьте класс реализации службы WCF атрибутом AspNetCompatibilityRequirements (код vb.net ниже):

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _

2) Добавьте следующую запись в ваш раздел <system.servicemodel> в web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
1 голос
/ 08 ноября 2011

Я бы порекомендовал реализовать проект технического пика.

В основе вы всегда можете реализовать атрибут кода доступа для защиты ваших рабочих контрактов.

Вы можете начать с применения PrincipalPermission (встроенного), где вы устанавливаете IPrincipal для Thread.CurrentPrincipal (конструктор вашей службы wcf). при размещении в IIS вы можете установить HttpContext.Current.User, однако HttpContext будет нулевым в вашем случае. Чтобы использовать PrincipalPermission, у вас должна быть возможность создавать / реализовывать IPrincipal.

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