本文介绍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

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.Netcore 2.0 Ocelot Api网关教程(6)- 配置管理相关推荐

  1. .Netcore 2.0 Ocelot Api网关教程(8)- 缓存

    Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具. 以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelo ...

  2. .Netcore 2.0 Ocelot Api网关教程(7)- 限流

    本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数. 限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对 ...

  3. .Netcore 2.0 Ocelot Api网关教程(番外篇)- Ocelot v13.x升级

    由于Ocelot系列博客好久没更新(差不多有10个月的时间了),在此先说声抱歉,Ocelot系列会继续更新下去. 在写上一篇配置管理的时候发现官方文档已经和以前的不一样,而Ocelot也从5.0版本更 ...

  4. Ocelot Api网关教程(9)- QoS

    本文介绍Ocelot中的QoS(Quality of Service),其使用了Polly对超时等请求下游失败等情况进行熔断. 1.添加Nuget包 添加 Ocelot.Provider.Polly  ...

  5. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权

    在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...

  6. ASP.NET Core on K8s学习之旅(13)Ocelot API网关接入

    [云原生]| 作者/Edison Zhou 这是恰童鞋骚年的第232篇原创文章 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使用,考虑到很多团队都在使用Ocelot作为 ...

  7. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)

    在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...

  8. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)

    好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名<Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Iden ...

  9. .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门--Ocelot API网关接入(二) 我们先接入Consul,实现服务发现 服务发现 1.引入 Ocelot.Provider.Consul 包 2.修改ocelot.js ...

最新文章

  1. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
  2. Spring MVC 概述
  3. 【Solidity】3.类型 - 深入理解Solidity
  4. cam350怎么看顶层_厉害的人是怎么分析问题的?(实操干货)
  5. 楷体任务用Ant来构建你的项目
  6. hive 日期函数_数据分析面试必备——SQL窗口函数你会了吗?
  7. Webpack笔记(三)——一款破产版脚手架的开发
  8. yarn临时目录 没有jar包_Yarn(Haoop组件之一)介绍
  9. 三次hermite插值多项式例题_数值分析实验六(分段三次Hermite插值)
  10. Vue创建项目的详细步骤
  11. manacher魔板
  12. 川的第一份博客——内容定义
  13. matlab 两个视频同时播放视频,视频画面合并教程:两个或多个视频合并在同一屏幕上同时播放...
  14. 汇编——从一道题目浅谈分支结构
  15. Canvas实现放大镜效果
  16. 王道学习笔记,计算机网络
  17. 18春计算机基础在线作业,东大18春《计算机基础》在线作业二.doc
  18. 两种电子配线架的原理比较
  19. 关于学术期刊,你应该知道这些
  20. 不知道照片上怎么文字翻译成英文?来看看这篇文章

热门文章

  1. 网页背景平铺_在大约十秒钟内为网页创建无缝平铺背景
  2. linux guard什么进程,使用linux系统性能监控工具KSysguard监控远端主机介绍
  3. python实现异步的几种方式_终于搞明白了,异步Python比同步Python究竟快在哪里?...
  4. 缩点(有向图的强连通分量)学习笔记
  5. Oracle数据库IP访问限制(IP白名单黑名单)
  6. 抽象工厂模式(Absraact Factory)介绍与实现
  7. 指针变量的定义与引用
  8. MFC多语言实现方法
  9. 用PHP实现POP3邮件的收取(一)
  10. 典型用户信息管理系统