本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。
開源地址://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 微服務框架 入門開發教程:運行示例://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來控制,也可以通過自定義程式碼機制自行判斷。