Нужен небольшой совет (или, может быть, даже прямой ответ).
У меня есть веб-сайт MVC3. У меня также есть набор запущенных служб WCF (сейчас все в одной коробке).
То, что я пытаюсь сделать, - это аутентифицировать клиента (эта часть работает нормально), а затем передать этого аутентифицированного пользователя различным вызовам WCF.
На данный момент я подключил метод Application_AuthenticateRequest()
в Global.Asax
, который сводится к созданию нового GenericIdentity & GenericPrincipal
, а затем присвоению этого принципала HttpContext.Current.User
:
...
GenericIdentity identity = new GenericIdentity(userName);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
...
И эта часть, кажется, тоже работает нормально.
Но когда я нажал на свой сервис, я полностью потерял установленного мной пользователя. Значения пустые или ложные.
Единственное, что я заметил, это то, что на стороне клиента объект HttpContext.Current.User.Identity
имеет тип {System.Web.Security.FormsIdentity}
, но в службе он имеет тип {System.Security.Principal.WindowsIdentity}
.
Исходя из того, что я прочитал, звучит как простая модификация моего web.config
, поэтому он может содержать aspNetCompatibilityEnabled="true"
, чтобы этого было достаточно. Но это не то, что я вижу. Так что либо я не все понимаю (очень хорошая возможность), либо я что-то напортачил (еще одна хорошая возможность).
Итак, мой вопрос. Возможно ли это вообще, и если да - мысли о том, чего мне не хватает? Я заметил, что некоторые другие опубликовали нечто подобное, но так и не получили определенного ответа (см. здесь и здесь ).
Любые предложения очень приветствуются.