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就是没有访问权限。
接下来我们把这个密钥放入到这个Ocelot中进行验证:
密钥验证正确就能正常进行访问。
这个时候我们的服务端就能查看到调用的记录。
这样我们的Api真实的地址别人无法看见 只能通过Ocelot进行验证该服务器才能访问 不用把验证信息全部放在微服务上 就减轻服务器的压力。
这样就很完美的 能进行全美的控制 可以做限流 可以做百度网盘的vip不限速等等功能 很棒的.
最近都没有更新 ,过年嘛 比较忙
最后祝大家新年快乐 。
在新的一年技术越来越好 感谢在2020里对CYBLOG技术的支持与理解 感谢各位 。
源码地址:https://cyimt.net/Download/Download?Down=142015313152