【发布时间】:2012-03-10 20:53:28
【问题描述】:
寻求一点建议(或者甚至是直接的答案)。
我有一个 MVC3 网站。我还运行了一组 WCF 服务(现在一切都在同一个盒子上)。
我正在尝试做的是对客户端进行身份验证(该部分工作正常),然后将该经过身份验证的用户传递给各种 WCF 调用。
目前我已经在Global.Asax 中连接了Application_AuthenticateRequest() 方法,归结为创建一个新的GenericIdentity & GenericPrincipal,然后将该主体分配给HttpContext.Current.User:
...
GenericIdentity identity = new GenericIdentity(userName);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
...
这部分似乎也运行良好。
但是当我点击我的服务时,我已经完全失去了我设置的用户。值为空或 false。
我注意到的一件主要事情是,在客户端,HttpContext.Current.User.Identity 对象的类型为 {System.Web.Security.FormsIdentity},但在服务中它的类型为 {System.Security.Principal.WindowsIdentity}。
根据我读过的一些内容,这听起来像是简单地修改我的web.config 使其包含aspNetCompatibilityEnabled="true" 可能足以使其正常工作。但这不是我所看到的。所以要么我不了解所有内容(一个很好的可能性),要么我搞砸了(另一个很好的可能性)。
所以我的问题。这甚至可能吗,如果是这样的话 - 对我所缺少的东西的想法?我注意到其他一些人发布了类似的内容,但从未收到过明确的答复(请参阅here 和 here)。
非常感谢任何建议。
【问题讨论】:
-
当您在当前用户上下文中专门设置
GenericIdentity时,您说看到FormsIdentity很奇怪。你是不是搞混了?
标签: asp.net-mvc wcf authentication cookies httpcontext