寻求一点建议(或者甚至是直接答案)。
我有一个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;
...
看起来这部分也是正常工作的。
但是当我访问我的服务时,我完全失去了我设置的用户。值为空或为假。
我注意到的一个主要问题是,在客户端上,HttpContext.Current.User.Identity
对象的类型为 {System.Web.Security.FormsIdentity}
,但在服务中它的类型为 {System.Security.Principal.WindowsIdentity}
。
根据我所读的一些内容,似乎简单地修改我的 web.config
以包含 aspNetCompatibilityEnabled="true"
可能足以使其正常工作。但这不是我看到的。所以,要么我没有完全理解一切(这是一个很好的可能性),要么我搞砸了什么(另一个很好的可能性)。
所以我的问题是,这种情况是否可能发生,如果可能的话,你认为我错过了什么?我注意到有一些人发布了类似的问题,但从来没有得到明确的答案(请参见这里和这里)。
非常感谢您的任何建议。
FormsIdentity
,因为你明确在当前用户上下文中设置了一个GenericIdentity
。你是不是搞混了? - Mauricio Morales