asp.net – WCF,WebAPI和OWIN IIS集成管道.根据路线跳过OWIN
情况
我有一个使用WCF后端的Silverlight应用程序.展望未来,我们已经转向使用WebAPI的JS客户端. 我想从Silverlight客户端使用几个WebAPI控制器,因此将它们加载到承载WCF服务的ASP.Net应用程序中. 从“所有服务都可用”的角度来看,这样可以正常工作,但是WCF调用会多次调用授权;来自OWIN并通过WCF ServiceAuthorizationManager 在WCF端,我的ServiceAuthorizationManager实现验证AuthHeader中的令牌,然后转换该令牌(在System.IdentityModel声明转换意义上).在WebAPI方面,我使用的是Thinktecture.IdentityModel,它提供了OWIN中间件来进行令牌验证和声明转换. 问题是,为所有请求(包括WCF请求)调用OWIN中间件.所以在WCF请求的情况下,我得到两次验证和转换.我不能只删除ServiceAuthorizationManager并让中间件处理它,因为WCF不知道OWIN,ServiceAuthorizationManager的最后一步是设置操作上下文主体(与ClaimsPrincipal.Current不同). 题 在WCF和WebAPI并排坐着之前,有没有人遇到这样的问题?最好的方法是在WCF调用的早期以某种方式退出OWIN管道,如果是这样,如何通过OMC完成?或者我可以以某种方式使用IAppBuilder.Map方法仅注册API路由的令牌验证和转换组件(在这种情况下,任何启动/ api)? 解决方法
我已经设法通过
Branched Pipeline让它工作.
app.MapWhen(c => c.Request.Path.Value.Contains("/api"),subApp => { subApp.UseJsonWebToken( issuer: clientDetails.Issuer,audience: clientDetails.Audience,signingKey: clientDetails.SigningKey); subApp.UseClaimsTransformation(transformer.Transform); var webApiConfig = WebApiConfig.Configure(); webApiConfig.DependencyResolver = StructureMapConfig.HttpDependencyResolver(); subApp.UseWebApi(webApiConfig); }); 我唯一想知道的是为什么IAppBuilder.Map如上所述,但是当我使用IAppBuilder.Map它似乎不起作用… app.Map("/api",subApp => ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Azure网站和Azure云服务之间的区别
- 设计模式中的那些工厂
- asp.net-mvc-3 – DropDownListFor中的ViewBag属性值,而不是
- 非常非常简单的asp.net页面需要永远加载
- asp.net – 尝试通过IP地址保护文件夹中的所有aspx文件
- 如果您已实施ASP.NET路由,则ASP.NET中的PageMethods无法正常
- Ajax请求过程中显示“进度”的简单实现
- asp.net-web-api – 如何在IdentityServer4中在运行时添加/
- asp.net-web-api – ASP.NET Web API:如何在Web API控制器
- asp.net-mvc – MVC Tag助手无法正常工作
- asp.net-mvc – 为什么我的Html帮助者没有智能感
- asp.net – 在usercontrols之间共享数据
- 如何自定义ASP.NET Web API AuthorizeAttribute的
- asp.net – 为本地化设置TemplateField HeaderTe
- asp.net – IIS 7错误请求响应时 存在于URL中
- asp.net-mvc-3 – 实体框架乐观并发异常未发生
- 使用ASP.Net MVC将图像上传到SQL Server 2005?
- asp.net-mvc-4 – 使用信号器一对一,包括离线模式
- 设置ASP.NET页面不被缓存(客户端/服务器端取消缓
- asp.net-mvc – ASP.NET MVC中的所有内置ActionR