首页 技术 正文
技术 2022年11月16日
0 收藏 903 点赞 4,456 浏览 2045 个字

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字段设置的内容。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,557
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898