>
consul 微服务-Ocelot配置使用案例
2021-02-14 20:10
微服务
  • 1764
  • 527
  • 64
  • 51

Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。这些功能只都只需要简单的配置即可完成,下面我们会对这些功能的配置一一进行说明。

首先来个案例:

1.当我们访问一个API接口时 需要调用接口即可 不方便管理:

案例调用API接口

Html = HttpPost(url,token);

调用完成以后 我们使用简单的验证可以让别人无法进行调用;

但是使用微服务了如果把权限全部控制在服务中  那么多个服务器运行的都是API这样就让服务器造成压力。

那么使用Ocelot网关这个进行处理转发这样就好很多。

如何使用Ocelot呢?

首先我们来搭建以下Ocelot

代码如下:

 首先创建一个配置文件进行操作:

{
  //全局配置
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:5000/" //网关暴露的的地址。
  },
  //路由配置
  "ReRoutes": [
    // 第一个api
    {
      "UpstreamPathTemplate": "/first/{controller}/{action}", //上游Api请求路由规则
      "DownstreamPathTemplate": "/api/{controller}/{action}", //网关转发到下游路由规则
      "UpstreamHttpMethod": [ "GET", "POST", "DELETE", "PUT" ], //上下游支持请求方法
      "DownstreamScheme": "http", //下游服务配置
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost", //下游地址
          "Port": 5005 //下游端口号
        }
      ],
      //授权信息
      "AuthenticationOptions": {
        "AuthenticationProviderKey": "firstApiKey", //这个key就是在startup中注册的key,不要写错了
        "AllowedScopes": []
      }
    },

ConfigureServices 中加载这个配置文件:

//注册认证方案
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                    .AddIdentityServerAuthentication("firstApiKey", x =>
                    {
                        x.ApiName = "FirstApi"; // 这个是认证服务中配置的api名称
                        x.Authority = "http://localhost:9500";  // 这个是认证服务的地址
                        x.RequireHttpsMetadata = false;
                        x.ApiSecret = "123456";//进行认证密钥的配置
                    })
            //添加Ocelot,注意路径,
            services.AddOcelot(new ConfigurationBuilder()
                .AddJsonFile("configuration.json", true, true).Build())
            services.AddControllers();

Configure中进行配置Ocelot 和认证服务器:

//配置使用Ocelot
app.UseOcelot();
 //配置认证服务
app.UseAuthorization();

这样Ocelot就配置完成啦

别人访问Api就首先访问Ocelot的地址 经过Ocelot拿到密钥 然后去认证服务器验证该密钥是否合法 合法再去进行转到正确的地址。

我们来访问以下这个Ocelot服务:

401就是没有访问权限。

image.png

接下来我们把这个密钥放入到这个Ocelot中进行验证:

image.png

密钥验证正确就能正常进行访问。

这个时候我们的服务端就能查看到调用的记录。

image.png

这样我们的Api真实的地址别人无法看见 只能通过Ocelot进行验证该服务器才能访问 不用把验证信息全部放在微服务上 就减轻服务器的压力。

这样就很完美的 能进行全美的控制 可以做限流 可以做百度网盘的vip不限速等等功能 很棒的.

最近都没有更新 ,过年嘛 比较忙 

最后祝大家新年快乐 。

在新的一年技术越来越好 感谢在2020里对CYBLOG技术的支持与理解 感谢各位 。

源码地址:https://cyimt.net/Download/Download?Down=142015313152


全部留言 ()
返回
顶部