asp.net-mvc – 将HttpContext.Current.User.Identity传递给WCF
寻找一些建议(或者甚至是直接回答).
我有一个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”可能足以使这个工作正常.但那不是我所看到的.所以要么我不理解一切(非常好的可能性),要么我搞砸了(另一种可能性很大). 所以我的问题.这是否可能,如果是这样的话 – 想想我错过了什么?我注意到其他一些人发布了类似的东西,但从来没有得到明确的答案(见here和here). 任何建议都非常感谢. 解决方法
我不能直接回答你的问题,但希望能帮助你找到明确的答案.
您有2个服务层,似乎您的要求是在所有层之间共享身份验证身份. 因此,原则上,您需要(至少)相同的身份验证机制或算法或技术来实现此目的.但此时你并没有使用相同的(当你看到FormsIdentity和WindowsIdentity时,你注意到了). 事实: >您将需要相同的身份验证机制. 问题: >如果您继续使用Forms身份验证,则需要使用WCF服务重新进行身份验证(当然还提供身份凭据,this可能会有所帮助).除非你保留用户用来验证他/她自己的密码,否则我觉得很难做到这一点,这通常是一个坏主意. 所以……如果不知道你的要求,我会建议你: >忘记WCF层上的身份验证 我现在已经看过很多次.没有私有服务的身份验证是一个很好的性能协议,但是你需要采取预防措施,因为一般来说,大多数IT攻击来自内部局域网. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- 实体框架 – 等同于.HasOptional在实体框架核心1(EF7)
- asp.net-mvc – 获取文件夹中的文件
- ASP.NET – 使用AJAX加载用户控件?
- asp.net – 数据源不支持服务器端数据分页
- asp.net – 最后修改标头在MVC
- ASP.Net Session_Start事件未触发
- asp.net-mvc – StructureMap / NHibernate Session Per Re
- asp.net-mvc – 使用作为集合的模型进行Visual Studio Razo
- ap.net发布资源文件不能被编译
- asp.net MVC 权限设计(续)
- 开始使用asp.net / c #web apps
- asp.net-mvc – ASP.NET MVC中的WebApi [FromUri
- asp.net-mvc – 如何使用ASP.NET MVC将某些HTML元
- 如何将ASP.NET用户和路由数据传递给JavaScript?
- azure – 获取#error = unsupported_response_ty
- ASP.NET Core中的OWASP Top 10 十大风险-失效的访
- asp.net-mvc – 依赖注入框架的重点是什么?
- 什么是最小的方式来缩小ASP.NET生成的Javascript
- ASP.NET:压缩ViewState