问题标签 [ocelot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1597 浏览

docker - 如何使 Identityserver 重定向到我的网络应用程序?

我正在尝试将 Identity Server 4 与 Ocelot 集成并验证 WebApp(asp.net core 3.1),然后在请求通过验证时访问 api。

为此,我创建了一个解决方案

  • Gateway-Ocelot(最新)
  • IdentityService - 身份服务器 4(最新)
  • 示例 API(asp.net core 3.1 web api)
  • WebApp(asp.net core 3.1 网络应用)

我已将 [Authorize] 属性添加到 webapp 的 homecontroller 中的一种操作方法。

以上所有内容都在使用 docker compose 的 docker 中运行。

我能做什么

  • 通过网关打api
  • 运行 web APP 并查看 UI
  • WellKnown 端点及其来自 IdentityService 的响应
  • IdentityService 正在重定向浏览器登录页面

我不能做什么

  • 在登录页面上,当我使用 bob/bob 登录时,它仍然是相同的登录页面。
  • 我调试了登录方法,发现用户已成功验证,最后它创建了一个重定向 URL,如下所示

IdentityService Cofig.cs

启动.cs

MS.UI - Web 应用程序客户端

启动.cs

修改后的视图

在上面的文件中我刚刚添加

家庭控制器.cs

在上面的文件中我添加了

网关 启动.cs

豹猫.json

码头工人撰写

Docker 撰写覆盖

请帮我 。这个完整的源代码也可以在@https ://github.com/Dheerajmentor/Microservice.git Branch - Add-IDS4 获得

0 投票
1 回答
837 浏览

c# - Ocelot RouteClaimsRequirement 无法识别我的声明并返回 403 Forbidden

我已经在具有多个微服务的 Linux 容器中配置了 ocelot。为了限制我正在使用的一些微服务RouteClaimsRequirement。我有管理员角色作为声明,但是当我使用角色管理员发送令牌时,Ocelot 返回 403 Forbidden,这是符合RouteClaimsRequirement. RouteClaimsRequirment如果我从ocelot.json一切工作中删除。

ocelot 项目启动类如下所示:

令牌生成如下所示:

解密令牌:

0 投票
0 回答
168 浏览

c# - asp.net core web api 不接受额外的标头

我有一个调用其他微服务的 Web API 网关。网关和微服务之间的通信工作正常。

我无法使用 "AddClaimsToRequest" 但能够使用 "UpstreamHeaderTransform" 。

Ocelot 16.xx 是否支持 AddClaimsToRequest ?它给了我 403 错误。

并且全局配置中的值也被忽略。

0 投票
1 回答
1052 浏览

asp.net-core-3.1 - .net core Ocelot 找不到名为“ConfigureDevelopment”或“Configure”的公共方法

下面的代码属于.net core web api,我称之为OcelotApiGateway。

我通过 OcelotApiGateway 上的 nuget 包管理器安装了 Ocelot 16.0.1。

这是我的Program.cs

这是Startup.cs

但在 ' CreateHostBuilder(args).Build().Run();' in行Program.cs,出现此错误

System.InvalidOperationException:“在“OcelotApiGateway.Startup”类型中找不到名为“ConfigureDevelopment”或“Configure”的公共方法。

0 投票
1 回答
2337 浏览

.net-core - ocelot 配置文件中的环境变量

我有多个微服务可供客户端通过Ocelot网关访问。在配置文件中,有一些属性可以指定下游主机和端口。这必须为每条路线完成。

问题是,如果服务的主机名或端口发生变化,我将不得不修改与该特定服务关联的每条路由。

所以,问题是,是否可以在ocelot.json配置文件中引入 ENV 变量?在这种情况下,我只需要修改一个 ENV 变量,所有相关的路由都会受到影响。

这是我当前的配置文件(我正在使用docker-compose服务名称作为主机):

我想要的是:

0 投票
1 回答
1834 浏览

c# - Ocelot 没有将 websockets 传递给微服务

我正在尝试使用 Ocelot 作为代理连接到 SignalR 集线器。SignalR 被插入到网关通过 websockets 流量的微服务中。通过 HTTP 请求的协商成功执行,但通过 websockets 的进一步通信似乎丢失了。我不知道发生了什么,尤其是当使用另一个环境中的 Azure SignalR 时,具有相同配置的通信可以完美运行。下面我介绍我的网关配置:

豹猫.json

网关 Program.cs 的一部分

特定的微服务集合扩展:

IApplicationBuilder 扩展的一部分,特别是微服务:

如何将 websockets 与 Ocelot 和 SignalR 一起使用?网关目前能够与 SignalR 通信的唯一传输方法是长轮询,但对我来说并不完全令人满意。预先感谢您的任何帮助!

0 投票
0 回答
257 浏览

.net - Ocelot 和 .Net 框架 web api

由于依赖旧库,我最近创建了一个 .net 框架 web api 而不是 .net 核心。此外,我们需要有一个 api 网关,为此我们使用了 ocelot,但它在启动过程中不断失败,并出现以下错误。

无法启动Ocelot,错误是:不使用服务发现时DownstreamHostAndPorts必须设置且不能为空否则Ocelot找不到你的服务!

如果在 ocelot Routes 中只配置了 .net core web apis,网关可以工作,但是当添加 .net framework api 设置时,它会抛出此错误。

我应该做些什么特定于.net framework apis来完成这项工作?

0 投票
2 回答
5205 浏览

nginx - 使用 API 网关 Ocelot 与 Nginx 的微服务

我有一个基于 .net 核心的微服务架构。我选择了ocelot作为api网关。我的前端应用程序基于 vue js 并托管在 nginx 容器上。在今天的讨论中,得知nginx已经可以作为网关使用了,有人建议“你应该使用nginx作为网关,因为你已经使用了服务前端,nginx也可以部署为网关”我搜索了互联网比较这两个网关(我知道 nginx 的主要目的不是网关),但找不到任何关于它们的优缺点的信息,比如性能、可扩展性可用性等......

使用这两种技术的人可以与我分享我应该选择哪一种的信息吗?

0 投票
2 回答
261 浏览

ocelot - 未找到上下文的下游上下文

我正在尝试添加自定义中间件以向查询添加参数。

根据一些在线搜索,您可以执行以下操作:

看到这个答案

但对我来说,它说 HttpContext 不包含 DownstreamReRoute 的定义。
有什么我遗漏或改变了吗?

0 投票
1 回答
1561 浏览

.net-core - Ocelot、Identity、IdentityServer4 和 API Resource,如何基于角色授予访问权限

我正在尝试学习使用 net core 的微服务方法应该如何。因此,经过大量教程之后,这就是我到目前为止所得到的:

  1. 我创建了两个 api 项目:Company 和 Package。端口 5002 和 5010

  2. 我需要一个网关,Ocelot 就是一个。我有这个配置:

  1. 我有一个配置了身份和 mongoDB 的 identityServer4。奇迹般有效。

我已经在 Angular 10 中配置了一个客户端。我可以登录,我得到了令牌,一切都按预期工作。

现在我最大的问题是,如何基于 API / 角色授予用户访问权限?那么可以说角色 A 可以访问公司/读取,而角色 B 可以访问公司/读取和公司/写入?

如何实际实现这一目标?

非常感谢。