Ищете небольшой совет (или, может быть, даже прямой ответ).Передача HttpContext.Current.User.Identity в WCF
У меня есть сайт 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"
может быть достаточно, чтобы сделать эту работу должным образом. Но это не то, что я вижу. Поэтому либо я не понимаю все (очень хорошая возможность), либо у меня что-то испортилось (еще одна хорошая возможность).
Так что мой вопрос. Возможно ли это, и если да - мысли о том, что мне не хватает? Я заметил, что некоторые другие опубликовали что-то подобное, но не получили окончательного ответа (см. here и here).
Любые предложения очень ценятся.
Странно, что вы говорите, что видите «FormsIdentity», когда вы специально устанавливаете «GenericIdentity» в контексте текущего пользователя. Вы там перепутали? –