问题标签 [api-gateway]
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.
api - 使用公共微服务对 API 网关 (Kong) 进行身份验证
我们有一个可通过 Internet 公开访问的 Web 应用程序。此应用程序在包含应用程序可以调用的单片 API 集(包括用户身份验证)的 Web 服务器上运行。我们希望为用户公开一个“API”(例如//收集数据),以便从他们自己的代码中查询有关其帐户的一组有限数据。这将允许他们使用我们为他们收集的数据编写自定义仪表板。
有了这个新的 API,API 调用现在可以来自我们的 web-ap 以外的其他地方。所以我们要设置一个 API 网关来管理请求“负载”。例如,网关可以将用户的请求限制为每十分钟一次。
最终用户将获得一个 API 密钥以通过 Kong 发出请求,然后 Kong 将使用 HTTP GET/POST 对 Web 服务器执行 API 查询。由于我们的网络服务器是公开可用的,我们需要一种方法来验证对 API(收集数据)的请求是否仅来自 Kong。我对 JWT 进行了一些研究,似乎是一种可能的方法。简单地为 Kong 服务器提供由 Web 服务器发布的自己的 JWT 是否有意义?然后任何对没有 Kong JWT 的 Web 服务器的 GET/POST 都会被拒绝。
我知道这可能不是 API 网关最合乎逻辑的设置,通常你会在与 Kong 相同的私有网络上拥有微服务,并且不需要像 Kong 那样验证传入请求的真实性处理那个。但是,鉴于我们当前的设置,JWT 方法最有意义吗?
amazon-web-services - API 网关缓存与 CloudFront
API Gateway 和 CloudFront 如何协同工作让我有些困惑。最终,我希望能够将自定义标头和值视为我的缓存键的一部分。我知道这可以通过白名单来完成(如果我使用的是 CloudFront)。
所以当我提出以下要求时:
例如,这将返回“ 29 页”
然后有一个帖子将id 4 更新为 '45 pages'
如果我提出这个要求
它现在将返回“45 页”
但我使用的是 API Gateway,它显然在幕后拥有自己的 CloudFront。有没有办法可以将 API Gateway 配置为使用其“幕后”CloudFront 将我的自定义标头列入白名单?这甚至需要做吗?
根据此文档:AWS-API-Gatway,似乎我可以在 API Gateway 中启用 API 缓存,它会将我的标头视为缓存键的一部分。
我是否正确理解这一点?如果我只想让我的标头成为缓存键的一部分,那么API Gateway 中的“启用 API 缓存”与在API Gateway之上添加 CloudFront 实例和 CloudFront中的白名单之间有什么区别?
更新:
但是在 GET 上,我从缓存中获取过时的数据。
rest - Api 网关和共享服务模型
我的问题的简短版本是,我正试图围绕模型如何在 API 网关和内部微服务之间“共享”。我假设网关可以负责转换对多个服务的调用并返回数据的新聚合表示。网关如何知道微服务的可用模型?
在我的简单示例中。我有:
- API 网关
- 用户服务
- 餐厅服务
用户服务
这个休息服务会暴露一个/api/users
端点
模型
餐厅服务
这个休息服务会暴露一个/api/dishes
端点
模型
API 网关
API 网关可以允许某人打电话/api/user/12345/dishes
,或者/api/dishes
它会为厨师返回菜肴。以及一些基本的用户详细信息。
模型
在此刻。我已经确定了 3 个模型(即 C# 类)。2 来自内部服务,1 用于从 API 网关返回的数据的新表示。我不确定 API 网关如何知道用户和餐厅服务模型,而无需将这些模型直接耦合到 API 网关。本质上是在网关和微服务之间共享代码,我认为这是不可取的。
authentication - 将解码的 JWT 有效负载传递给微服务
我们正在更改我们的应用程序身份验证架构以切换到 Json Web Token。
实际上,传入的请求首先通过一个 API 网关,该网关将请求分发到我们堆栈的各种微服务。
每个请求中传递的 JWT 的认证和验证都是在 Gateway 中完成的。
认证后你会用 JWT 做什么?
- 将其“原样”传递给后续的微服务?
- 在网关中对其进行解码并仅将解码后的有效负载传递给服务?
我在这两种解决方案中都看到了优缺点:
优点:我们一直保留一个标准的 Authentification http 标头。 缺点:我们必须在每个服务中解码令牌。
优点:令牌已经被解码并可以直接在服务中使用。 缺点:我们必须使用非标准的 http 标头来传递解码的有效负载。
在这种情况下是否有任何“标准”方式?
你怎么看 ?
谢谢 !
asynchronous - Spring-Cloud-Gateway 支持异步/nio 转发
我有兴趣使用 spring-cloud-gateway 作为实现 api-gateway/edge 服务的框架,以过滤和转发我们所有的客户端 API 请求到后端服务。其中一些 API 调用需要较慢的响应,而另一些则需要快速响应。我们希望此实现支持异步/NIO 转发,以减少大容量、混合流量(即快速和慢速 API 调用)场景中的线程池争用,同时仍然通过相同的 API 网关路由所有流量。
spring-cloud-gateway 是否/将支持异步/nio 请求转发?如果是这样,是否有一个我可以使用 spring-cloud-gateway 框架的示例?
java - 是否有 Amazon 客户端允许调用 API Gateway 而无需手动创建标头,例如:X-Amz-Date,Authorization?
是否有适用于 java 的 Amazon 客户端允许调用 API Gateway 而无需手动创建标头,例如: X-Amz-Date,Authorization ?
我正在寻找类似的东西:apigatewayClient.sendRequest(" https://my_gateway_api service")
kong - Tyk 与 Kong 之间是否有全面的比较?
我一直在开发微服务(Spring Cloud)一段时间(大约 2 年)并大量使用 Netflix Zuul。虽然它提供了许多功能和出色的特性,但我的开发人员的思想却转向了解替代方案并开始了解 Tyk 和 Kong。
从各个文档和博客中阅读,我了解到或多或少都提供了相似的功能。我想知道两者之间的全面比较以及您实施的任何实际示例将有助于理解。
authentication - HaProxy 是否支持像 NGINX 一样的“API 网关”功能
我们正在评估支持 API 网关功能的反向代理。我们使用自定义身份验证应用程序测试了 NGINX 中的 API 网关功能。NGINX 中的请求流程是,当请求到达 NGINX 时,它将认证请求转发给自定义认证应用程序。如果 auth 应用程序返回 HTTP 200,NGINX 会将请求转发到下游服务器。
HaProxy:对于 HAP 代理,我无法弄清楚如何将自定义身份验证应用程序集成到 HAProxy 配置中。
请指导我正确的配置/资源以便我继续。
amazon-cloudfront - 使用 AWS API Gateway 和 CloudFront 时如何避免同源策略异常
我有一个 SPA(前面是 CloundFront),它调用我在 APIGateway 上设置的 GET 端点。spa 的域与 API 网关的域不同。当我的 SPA 尝试对资源执行 GET 操作时,我得到了如下所示的同源策略异常
这是我在 API Gateway 上的设置。我有一个 Options 资源,它返回以下内容
我有一个获取资源,它反过来调用我的后端服务(我的服务的代理)。我已设置资源以将这些标头作为响应的一部分返回
浏览器的选项调用返回 200,包含所有必要的访问控制内容。但是当浏览器进行 GET 调用时,我得到了相同的源策略异常。有什么想法吗?是因为我的 GET 响应没有明确设置 Access-Control-Origin 的值吗?
谢谢凯