Taurus.MVC 微服務框架 入門開發教程:項目集成:4、默認安全認證與自定義安全認證。

系列目錄:

本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。

開源地址://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來控制,也可以通過自定義程式碼機制自行判斷。