Ocelot中文文档-管理
Ocelot支持在运行时通过一个认证的Http API修改配置。有两种方式对其验证, 使用Ocelot的内置IdentityServer(仅用于向管理API验证请求)或将管理API验证挂接到您自己的IdentityServer中。
提供你自己的 IdentityServer
挂接到你自己的IdentityServer,你只需要添加一下代码到你的ConfigureServices 方法中。
public virtual void ConfigureServices(IServiceCollection services)
{
Action<IdentityServerAuthenticationOptions> options = o => {
// o.Authority = ;
// o.ApiName = ;
// etc....
};
services
.AddOcelot()
.AddAdministration("/administration", options);
}
您现在需要从你的IdentityServer获取令牌,并在后续请求Ocelot的管理API时使用。
这个功能是对问题 228 的实现。这个功能很有用,因为IdentityServer认证中间件需要IdentityServer的URL。 如果您使用内置IdentityServer,则可能无法获得Ocelot URL。
内置 IdentityServer
管理API使用您从Ocelot请求的持票人令牌进行身份验证。这是由我已经使用了几年的非常了不起的Identity Server项目提供的。 您可以去看一下。
为了启用管理部分,您需要做一些操作。 首先将此添加到您的初始化文件Startup.cs中。
管理路径可以是任何值,显然不能使用将要通过Ocelot路由的url,因为这是行不通的。管理功能使用asp.net core的MapWhen功能,并且所有到{root} /administration的请求将被发送到那里,而不是Ocelot中间件。
secret是Ocelot内置IdentityServer用于验证对管理API请求的客户端密钥。你可以随意填写!
public virtual void ConfigureServices(IServiceCollection services)
{
services
.AddOcelot()
.AddAdministration("/administration", "secret");
}
现在,如果您使用上述配置选项并想要访问API,可以使用解决方案中名为ocelot.postman_collection.json的postman脚本来更改Ocelot配置。 显然,如果Ocelot运行在不同与http://localhost:5000的URL上,则需要改一下。
这些脚本向您展示了如何从ocelot请求bearer令牌,然后使用它来获取现有配置和修改配置。
如果您在群集中运行多个Ocelot,则需要使用证书对用于访问管理API的bearer令牌签名。
为了做到这一点,您需要为集群中的每个Ocelot再添加两个的环境变量。
OCELOT_CERTIFICATE
用于签名令牌的证书路径。 证书必须是X509类型,显然Ocelot要能够访问它。
OCELOT_CERTIFICATE_PASSWORD
证书的密码。
通常Ocelot只使用临时签名凭证,但如果您设置了这些环境变量,那么它将使用设置的证书。 如果集群中的所有其他Ocelot都具有相同的证书,那很棒,这样就对了!
管理 API
POST {adminPath}/connect/token
这会使用我们上面讨论的客户端证书得到一个用于管理区域的令牌。 在这种情况下,这将调用Ocelot中托管的IdentityServer。
请求体是from-data,允许一下数据:
client_id 设置为admin
client_secret 设置为您在设置管理服务时使用的内容
scope 设置为admin
grant_type 设置为client_credentials
GET {adminPath}/configuration
获得当前的Ocelot配置。 这与我们先前设置Ocelot的JSON完全相同。
POST {adminPath}/configuration
这会覆盖现有的配置(可能应该是put更合适!)。 我建议用GET获取您的配置,进行更改后使用此api发回...。
这个请求体的JSON,格式和我们使用文件系统设置Ocelot的 FileConfiguration.cs格式相同
DELETE {adminPath}/outputcache/{region}
这将清空特定区域的缓存。如果您使用空白region,它将清除缓存的所有实例!赋予您运行Ocelots集群,并将其全部缓存在内存中,并同时清除所有缓存(仅使用分布式缓存)的能力。
region是您在Ocelot配置的FileCacheOptions部分中针对region字段设置的内容。
Ocelot中文文档-管理的更多相关文章
- Ocelot中文文档-Route
路由(Routing) Ocelot主要功能是接收即将发来的请求并转发它们至下游服务.与此同时,以另一个http请求的形式(在将来这可能是任何传输的机制) Ocelot将一个请求的路由描述为另一个路由 ...
- Ocelot中文文档入门
入门 Ocelot仅适用于.NET Core,目前是根据netstandard2.0构建的,如果Ocelot适合您,这个文档可能会有用. .NET Core 2.1 安装NuGet包 使用nuget安 ...
- Ocelot中文文档-不支持
Ocelot不支持一下几点... 分块编码 - Ocelot将始终获取body大小并返回Content-Length头. 如果这不适合你的场景,只能表示抱歉! 转发host头 - 您发给Ocelot的 ...
- Ocelot中文文档-跟踪
Ocelot使用一个杰出的项目Butterfly 提供了跟踪功能. 为了使用跟踪,请阅读Butterfly的文档. 在Ocelot中如果你想跟踪一个ReRoute,你需要做如下事情: 在Configu ...
- Ocelot中文文档-路由
Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务.目前是以另一个http请求的形式(将来可能是任何传输机制). Ocelot将路由一个请求到另一个请求描述为ReRoute.为了在O ...
- Ocelot中文文档-Raft(实验功能不能用于生产环境)
Ocelot最近整合了Rafty,这是我在去年一直研究的Raft的一个实现. 这个项目实验性非常强,所以在我认为它没问题之前,请不要在生产环境中使用Ocelot的这个功能. Raft是一种分布式一致性 ...
- Ocelot中文文档-入门
Ocelot只能用于.NET Core,目前是为netcoreapp2.0构建的,这个文档可能会帮你了解Ocelot是否适合你. .NET Core 2.0 安装NuGet包 使用nuget安装Oce ...
- Ocelot中文文档-配置
这里有一个配置的列子.其中有两个配置块.一个ReRoutes数组和一个GlobalConfiguration.ReRoutes配置块是一些告诉Ocelot如何处理上游请求的对象.Globalconfi ...
- Ocelot中文文档-认证
为了验证ReRoutes并随后使用Ocelot的任何基于声明的功能,如授权或使用令牌中的值修改请求. 用户必须像往常一样在他们的Startup.cs中注册认证服务,但他们给每个注册提供了一个方案(认证 ...
随机推荐
- iOS中 UITabBarController中自定义UITabBar
1.创建多个视图控制器,放如UITabBarController中 AViewController *aa = [[AViewController alloc] init]; UINavigation ...
- 【OpenCV文档】用于角点检测的Fast算法
原文地址:http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast-algorithm- ...
- JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较
JAVA之旅(十六)--String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较 过节耽误了几天,我们继续JAVA之旅 一.String概述 String时 ...
- 用过的一些Android设备调试特性注意点(挖坑帖)
华为3C Activity切换动画偏快. 显示大图时不容易出现OOM(应用最大内容要比其他手机大一点),所以调试OOM问题时不要用此手机,否则难以发现问题. 小米3 不要调用系统的裁图功能.因为返回的 ...
- python类定义
在我的收藏中有一篇特别详细的类讲解 此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html class myclass: 'this ...
- 【shell脚本练习】批量添加用户和设置密码
题目 添加9个用户,user101-user109:密码同用户名: 思路 for循环来添加就好了,用户名和密码都可以拼字符串来完成 user10+数字 要判断是否能添加成功,注意非交互模式下修改用户密 ...
- android:background="@color/white" [create file color.xml at res/values/]
<resources><color name="white">#FFFFFF</color><!--白色 --><col ...
- [RDLC]一步一步教你使用RDLC(一)
一:加数据集,并且命名为Quotation,如下图所示: 二: 添加一张报表,命名为Quotation,如下图所示: 向报表中添加"表"这一项,如下图所示: 这时就弹出一个选择数据 ...
- Html.java 存储页面信息类
Html.java 存储页面信息类 package com.iteye.injavawetrust.miner; /** * 存储页面信息类 * @author InJavaWeTrust * */ ...
- (六十一)Xcode的git版本控制
打开终端 1.为项目添加git: 首先到达项目的根目录内部,输入git init,初始化一个空的代码仓库(隐藏文件.get). 接下来使用git add . --all .表达把当前目录及子目录中的文 ...