歡迎光臨
每天分享高質量文章

.Netcore 2.0 Ocelot Api閘道器教程(6)- 配置管理

本文介紹Ocelot中的配置管理,配置管理允許在Api閘道器執行時動態透過Http Api檢視/修改當前配置。由於該功能許可權很高,所以需要授權才能進行相關操作。有兩種方式來認證,外部Identity Server或內部Identity Server。

1、外部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    void options(IdentityServerAuthenticationOptions o)
    {
        o.Authority = "http://localhost:6000";
        o.RequireHttpsMetadata = false;
        o.ApiName = "api1";
    }

    services
        .AddOcelot(new ConfigurationBuilder()
            .AddJsonFile("configuration.json")
            .Build())
        .AddAdministration("/administration", options);

    services             
      .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
      .AddIdentityServerAuthentication("TestKey", options);
}

其中復用了Identity Server的配置。

2、內部Identity Server

修改 Startup 中的 ConfigureServices 方法如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddOcelot(new ConfigurationBuilder()
        .AddJsonFile("configuration.json")
        .Build())
        .AddAdministration("/administration", "secret");

    services
        .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddIdentityServerAuthentication("TestKey", options =>
        {
            options.Authority = "http://localhost:6000";
            options.RequireHttpsMetadata = false;
            options.ApiName = "api1";
        });
}

其中為secret值為”secret”,後邊會用得到。

其上為新增配置管理的兩種方式,本例中以內部Identity Server為例。

Administration一共提供了3組Api

  • Token獲取
  • 配置管理
  • 快取管理
    其中Token獲取Api只在使用內部Identity Server時有效。由於快取的教程還沒更新,所以快取管理的Api在後邊的文章介紹。

1、Token獲取

使用Postman請求http://localhost:5000/administration/connect/token如下所示,可以獲得一個token

token from internal id server.png

註意Body的資料型別要選擇 form-data,並且 client_secret 要填寫程式碼中配置的secret,當前教程為secret。

 

2、配置管理

使用Postman請求http://localhost:5000/administration/configuration如下所示,獲取配置

get configuration.png

使用上次獲取的token。

 

以http://localhost:5000/GetUserInfo?name=Jonathan為例請求資料如下

GetUserInfo.png

可以成功請求並且獲取資料。

 

然後修改配置如下

change configuration.png

註意此次請求為Post請求,並且不要忘記新增認證頭token,此次請求的body引數為之前獲取的配置並且修改了/GetUserInfo連結為/GetUserInfochanged。
再次使用Postman請求http://localhost:5000/GetUserInfo?name=Jonathan如下

GetUserInfo 404.png

得到了404,修改連結為http://localhost:5000/GetUserInfochanged?name=Jonathan再次請求如下

GetUserInfochanged.png

此次配置修改成功,開啟到路徑/OcelotTutorial/OcelotGetway/bin/Debug/netcoreapp2.0下有一個 configuration.Development.json 檔案開啟檢視如下

configuration.Development.json.png

配置檔案也已經修改。
可能在開發時會遇到修改完配置之後,下次除錯時配置又回到了原來,是因為 configuration.json 選擇成了總是複製,所以每次開始除錯的時候都會替換 configuration.development.json 中的內容。
如果Ocelot Api閘道器程式沒有讀寫檔案的許可權也會遇到修改配置失敗的情況。

原文地址:https://www.jianshu.com/p/9e2fa5783211

贊(0)

分享創造快樂