ASP.NET Core 实现带认证功能的Web代理服务器
原文:
ASP.NET Core 实现带认证功能的Web代理服务器
引言最近在公司开发了一个项目,项目部署架构图如下: 思路如图中文本所述,公司大数据集群不允许直接访问外网,需要一个网关服务器代理请求,本处服务器A就是边缘代理服务器的作用。 通常技术人员最快捷的思路是在服务器A上部署IIS+Application Request Routing Module组件,或者配置由Nginx代理请求完成此次边缘代理服务器的功能。
所以本处我们考虑利用ASP.NET Core实现一个带认证功能的代理服务器。
? 编程实现
ASP.NET Core 提供了实现请求代理功能的功能库 ,通过nuget安装:
Install-Package Microsoft.AspNetCore.Proxy -Version 0.2.0 该中间件目前只有2个扩展方法,主要关注如下扩展方法: // // 摘要: // Sends request to remote server as specified in options // // 参数: // app: // // options: // Options for setting port,host,and scheme public static IApplicationBuilder RunProxy(this IApplicationBuilder app,ProxyOptions options); 本次代理请求需要携带BA凭据,所以可在ProxyOptions参数设定基本身份认证Handler: public void ConfigureServices(IServiceCollection services) { _remoteAccount = services.ConfigureOption<RemoteBasicAuth>(Configuration.GetSection("RemoteBasicAuth")); _proxyOption = services.ConfigureOption<ProxyOptions>(Configuration.GetSection("ProxyOptions")); // 从本地配置文件读取云服务器B的认证凭据,并设置基本身份认证Handler _proxyOption.BackChannelMessageHandler = new BasicAuthenticationClientHandler(_remoteAccount); ...... } 该云服务器B在部分页面【url以/eqids开头、api以/api/v1/eqids/】配置了BA认证, 所以本次我们使用了MapWhen条件中间件: public void Configure(IApplicationBuilder app,Microsoft.AspNetCore.Hosting.IHostingEnvironment env,Microsoft.Extensions.Hosting.IApplicationLifetime appLifetime,ILoggerFactory loggerFactory) { ...... app.MapWhen(x=> x.Request.Path.Value.StartsWith(@"/eqids",StringComparison.OrdinalIgnoreCase) || x.Request.Path.Value.StartsWith(@"/api/v1/eqids",StringComparison.OrdinalIgnoreCase),builder => builder.RunProxy(_proxyOption)); ...... }
时间:2019-04-03 09:03:03
阅读(19)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net core 日志
- asp.net-mvc – 存储库模式:好还是坏?
- 如何获得干净的ASP.Net错误页面?
- asp.net-mvc – Asp.net MVC控制器Action字符串参
- asp-classic – 旧ASP中的“on error goto 0”和
- asp.net – .net MVC将MP4流式传输到iDevice问题
- asp.net – 无法将’System.Web.Profile.Default
- asp.net-mvc – T4MVC:如何使用说Url.Action?
- asp.net-mvc-3 – 如何调试AutoMapper“缺少类型
- asp.net-mvc – 更新用户声明不起作用.为什么?