ASP.NET Core 实现带认证功能的Web代理服务器
引言
最近在公司开发了一个项目,项目部署架构图如下:
思路
如图中文本所述,公司大数据集群不允许直接访问外网,需要一个网关服务器代理请求,本处服务器A就是边缘代理服务器的作用。
通常技术人员最快捷的思路是在服务器A上部署IIS+Application Request Routing Module组件,或者配置由Nginx代理请求完成此次边缘代理服务器的功能。
但是由于本处代理服务器A 还需要完成额外的功能:
服务器A需要定时访问外网云服务器将数据请求并保存到本地
代理服务器A集中管理云服务器B的基本身份认证凭据, 所以该代理服务器A在代理请求的时候需要发送认证凭据
关于web服务器定时任务功能实践,请参照技术博客;
关于基本身份认证的编程实践,请参照技术博客。
所以本处我们考虑利用ASP.NET Core实现一个带认证功能的代理服务器。
任务集中在2点:
实现代理请求
代理请求的时候携带 基本身份认证凭据
编程实现
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));...... }
That's All. 以上程序部署到服务器A之后, 这样访问服务器A的部署网站, 等同于访问云服务器B的资源,服务器B对于内网来说是透明的。
本文期待以一种轻松、优雅的方式快速实现一个具备自定义消息处理能力的Web代理服务器。
感谢您的认真阅读,如有问题请大胆斧正;觉得有用,请下方或加关注。
本文欢迎转载,但请保留此段声明,且在文章页面明显位置注明本文的作者及原文链接。
转载于:https://www.cnblogs.com/JulianHuang/p/10503600.html
ASP.NET Core 实现带认证功能的Web代理服务器相关推荐
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释 原文:ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释 IdentityS ...
- ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
原文:ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范 IdentityServer实现以下规范: OpenID Connect OpenID Connect ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
Asp.Net Core基于JWT认证的数据接口网关Demo 近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求 ...
- django python3会员中心_python3开发进阶-Django框架的自带认证功能auth模块和User对象的基本操作...
阅读目录 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate( ...
- WTM(ASP.NET Core)使用ASP.NET Core自带TagHelper显示模型验证消息
WTM框架使用TagHelper提供了丰富的前端控件,目前框架只支持LayUI,后期会增加更多框架整体的运转并不依赖于LayUI,开发人员可以使用最普通的Html来编写页面,框架提供的控件只是简化编写 ...
- asp.net core 自带cookie验证authorize
asp.core自带的身份验证中cookie是一个比较方便的身份验证工具,在单独的服务器中,该功能比较好用,但是自己在使用的过程中遇到较多问题,在对访问的aciton中添加[authorize]特性之 ...
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期.这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 正文 今 ...
- ASP.NET Core的身份认证框架IdentityServer4--入门【转】
原文地址 Identity Server 4是IdentityServer的最新版本,它是流行的OpenID Connect和OAuth Framework for .NET,为ASP.NET Cor ...
- 如何在 Asp.Net Core 实现 Excel 导出功能
在web应用程序开发时,或许你会遇到这样的需求,如何在 Asp.Net Core 中实现 excel 或者 word 的导入导出,在 NuGet 上有大量的工具包可以实现这样的功能,本篇就讨论下如何使 ...
最新文章
- ShareEntryActivity java.lang.ClassNotFoundException | Android类找不到问题
- Toolbar中menu菜单文字颜色的修改
- OpenGL编程指南5:学习绘制不同风格的曲线
- 用Delphi实现Windows的鼠标钩子函数
- 无障碍开发(七)之实例讲解
- Oracle学习计划
- char类型和Unicode编码
- 怎么清理句柄_JAR文件句柄:混乱后清理!
- xml中的Document和Attribute
- kafka 分组消费topic_关于kafka更改消费者对应分组下的offset值
- DRBD安装编译后: modprobe drdb FATAL: Module drdb not found
- 网站api自己怎么写_网站建设及推广网站关键词优化自己怎么做网站推广
- SAP中质检检验计划导出实例
- mysql 字符串有有乱码 转码_mysql字符转化以及乱码原因
- 微信公众号群发接口和原创校验
- css3-pie,CSS3PIE
- Pandas---条件筛选与组合筛选
- 汉语与asc码互转最快的办法
- 密码算法测试向量——HMAC-SM3
- Java学习笔记----File类与IO流