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中注册认证服务,但他们给每个注册提供了一个方案(认证 ...
随机推荐
- J2EE学习从菜鸟变大鸟之四 JNDI(Java Naming and Directory Interface)
掌握 J2EE 是件不是很轻松的事哈,但是很有意思,抽象抽象哈哈,因为它包含的技术和缩略语在不断地增长.Java 命名和目录接口(Java Naming and Directory Interface ...
- pig的内置函数小总结(不全)
piggybank里面有很多函数,可以用register和define调用.也可以用java仿照piggybank自行开发. 比如读sequence二进制文件,可以用piggybank里面函数Sequ ...
- java 的序列化和反序列化的问题
引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口, ...
- Mysql中limit的用法详解
Mysql中limit的用法详解 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,为我们提供了limit这样一个功能. SELECT * FROM table LIMIT [offset ...
- Objective-C中的instancetype和id…
作者:韩俊强 原文地址:http://control.blog.sina.com.cn/admin/article/article_add.php 转载请注明出处 一.什么是instancetype ...
- Dynamics CRM2013 Lookup Filtering using addCustomFilter
dynamics crm中对lookup视图的过滤是一个很平常性的需求,在2011的时候都是用添加自定义视图的方式例如下面这段示例代码 <span style="font-size: ...
- python的IndentationError: unexpected indent python
都知道python是对格式要求很严格的,写了一些python但是也没发现他严格在哪里,今天遇到了IndentationError: unexpected indent错误我才知道他是多么的严格. ...
- java,http的post和get
使用Java发送GET.POST请求 --节选自<疯狂Java讲义> URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 UR ...
- R-- Dplyr包
Dplyr 包应用 1. 筛选 filter() 按照给定的逻辑判断选择出合适的数据子集 fliter(data,year==2015,month==1) 支持对同一对象的任意条件组合 fliter( ...
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
1 案例场景,通过C语言回调Java的代码,案例的最终界面: 2 案例的代码结构如下: 3 编写DataProvider的代码: package com.example.ndkcallbac ...