У меня есть веб-приложение с приложением silverlight на одной из страниц.Сайт защищен с помощью WIF.Я пытаюсь сделать вызов WCF из silverlight в службу, размещенную на том же домене приложения, что и мой веб-сайт.
Если у меня включен AspNetCompatibilityMode, это работает нормально.Браузер уже прошел проверку подлинности, поэтому при вызове WCF файлы cookie FedAuth отправляются клиентом silverlight, и WIF правильно устанавливает HttpContext.Current.User из файлов cookie сеанса (FedAuth / FedAuth1).
К сожалению,Мне нужно отключить AspNetCompatibilityMode.В этом случае я вижу, что вызов silverlight WCF по-прежнему передает куки-файлы FedAuth на сервер, а SessionAuthenticationModule правильно устанавливает Thread.CurrentPrincipal.К сожалению, модуль сеанса аутентификации, похоже, работает в потоке, отличном от реального метода WCF, который я пытаюсь вызвать, поэтому я потерял идентичность где-то вдоль конвейера WCF / WIF.
Есть ли способ обойти это?Я попытался создать пользовательскую реализацию SessionAuthenticationModule и переопределить SetPrincipalFromSessionToken (внутри которого я могу получить доступ к своим заявкам и т. Д.), Но я не уверен, где я могу сохранить принципал, чтобы у меня был доступ к нему после того, как обработчик канала отправит вызов моемуслужба в другом потоке.