本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。
开源地址:https://github.com/cyq1162/Taurus.MVC
本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。
Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。
Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。
Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:应用中心。
Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务的二次开发。
Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。
Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。
Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。
Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
Taurus.MVC 微服务框架 入门开发教程:架构演进:1、从单应用程序简单过渡到负载均衡。
Taurus.MVC 微服务框架 入门开发教程:架构演进:2、负载均到模块拆分负载。
Taurus.MVC 微服务框架 入门开发教程:架构演进:3、模块拆分负载到多级负载均衡。
Taurus.MVC 微服务框架 入门开发教程:运行示例:https://github.com/cyq1162/Taurus.MVC.MicroService.Demo
前言:
对于Taurus.MVC 的微服务的注册中心而言:
什么样的应用中心,有权利注册服务?
什么样的网关中心,有权利调取服务列表?
在默认没有进行相关配置时,只要引用Taurus.MVC的框架,都拥有该权限。
如果注册中心程序仅在内网部署,那么不配置也是可以的。
如果注册中心允许外网访问,那么,就需要进一步提高安全权限,避免外部恶意注册了。
下面就介绍两种安全处理方式:
1、默认安全认证:自定义授权Key:
A、注册中心设置安全Key:配置项:MicroService.Server.Key
配置示例如下:
{ "AppSettings": { "MicroService.Server.Name": "RegCenter", "MicroService.Server.Key": "随机Key" } }
B、对其它服务端如:网关、注册中心(从):配置项:MicroService.Server.Key
配置示例如下:
{
"AppSettings": {
"MicroService.Server.Name": "Gateway",
"MicroService.Server.Key": "随机Key"
}
}
C、对客户端:Web应用中心:配置项:MicroService.Client.Key
配置示例如下:
{ "AppSettings": { "MicroService.Client.Name": "www.a.com", "MicroService.Client.Key": "随机Key" } }
总结如下:
1、注册中心定好一个Key:如:abc123。 2、需要对注册中心访问的,也配置对应的Key:abc123。
默认的处理方式,是Key的直接比对。
使用也简单,简单配置也可使得在外网环境也提高了安全性。
2、 自定义安全认证:编码自定义行为的验证代码
代码流程:
1、新建:DefaultController全局控制器,继承自Taurus.Core.Controller 2、新增:CheckMicroService方法,重写该方法的实现即可。
3、配置:DefaultController所在的程序集。
代码:
/// <summary> /// 全局控制器(适全全局事件处理) /// </summary> public class DefaultController : Taurus.Core.Controller { /// <summary> /// 用于校验微服务的内部身份验证,配合[MicroService]属性 /// 启用时:全局仅此一个生效,局部的失效。 /// </summary> public static bool CheckMicroService(IController controller, string methodName) {
string configKey=controller.Query<string>(MicroService.Const.HeaderKey);//获取配置的Key值
return MicroService.Config.ServerKey == configKey;//这里可以改成自定义机制,返回true则通过,false则失败。
}
}
有关全局控制器的更详细文章:Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件
配置:
{ "AppSettings": { "Taurus.Controllers": "程序集dll名称", } }
或:
<?xml version="1.0"?> <configuration> <appSettings> <add key="Taurus.Controllers" value="程序集dll名称"/> </appSettings> </configuration>
总结:
本篇介绍,在外网环境部署注册中心时,如何加强安全性的问题。
即可以通过简单指定随机Key来控制,也可以通过自定义代码机制自行判断。