标签: api-gateway

Spring Cloud Gateway转发客户端证书

我正在尝试将 spring-cloud-gateway 用于基于 spring-boot 的服务,该服务使用 ssl 和客户端身份验证。

问题是,通过 api 网关从客户端调用服务总是失败,并显示“certificate_unknown”(没有网关也可以正常工作)。

spring-cloud-gateway 似乎没有将客户端证书转发到后端服务。

有什么想法如何实现这一目标?这是缺少的功能吗?

谢谢

ssl client-certificates spring-cloud ssl-client-authentication api-gateway

5
推荐指数
0
解决办法
2017
查看次数

API 网关代理到 VPC 链接

我正在尝试使用 API Gateway 将流量路由到内部网络负载平衡器。

到基本路径 (/) 的所有路由都正常工作,所以我知道 VPC 链接已启动并可访问。

我使用任何 http 方法添加了一个代理资源 (/{proxy+})。在我选择的任何“集成请求”中:

  • 集成类型:VPC 链接
  • 使用代理集成
  • 方法:任意
  • VPC 链接:我的 VPC 链接 (abcdefg)
  • 端点 URL:(即http://abcd1234.cloudfront.net/ {proxy})

我可以看到我的 Web 服务器响应重定向:

(b9d0c629-31ec-11e8-b452-0f13c3c62b81) Endpoint response body before 
transformations: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="http://abcd1234.cloudfront.net/api/">http://abcd1234.cloudfront.net/api/</a>. If not click the link.
(b9d0c629-31ec-11e8-b452-0f13c3c62b81) Method completed with status: 301
Run Code Online (Sandbox Code Playgroud)

网页显示:

{"message":"Forbidden"}
Run Code Online (Sandbox Code Playgroud)

此外,如果我尝试直接链接到 CloudFront URL,我会收到同样的错误。

除了 CloudFront URL,我还尝试了以下内容:

  1. 自定义域名

    403 禁地

  2. 我部署的阶段的 URL

    {"message": "内部服务器错误"} …

amazon-vpc aws-api-gateway elastic-load-balancer api-gateway

5
推荐指数
1
解决办法
3545
查看次数

考虑 Tyk API Gateway - 开源版本

项目背景:构建API驱动的学习管理系统。后端系统将从多个系统和接口接收数据:Web、移动、VR。

将 API 网关视为我们 API 的前端。最好是开源 API 网关,但需要确保支持和服务可用。尝试了 Tyk.io,感觉它可能是要走的路。一直在阅读其他 StackOverflow 线程,看起来 TYK 的网关交易会与 Kong 和 WSO2 之类的相比相当不错。

我们主要考虑的领域是:

  1. 限速
  2. 打开 ID Connect 身份验证
  3. 分析
  4. 可扩展性
  5. 托管的混合模型 - 根据教育机构的合规性要求(可能是 AWS 网关的规则),本地和云的组合

如果任何正在使用或曾经使用 TYK.io 进行生产项目的人都可以分享他们的经验,特别是对于企业客户/项目,那将非常有帮助。

open-source tyk api-gateway

5
推荐指数
1
解决办法
732
查看次数

支持 Azure 开发人员门户中的 multipart/form-data

在 Azure 订阅中,我创建了一个 API 网关,在其中注册了一个 API,该 API 公开了一个方法,该方法在输入中接受多部分/表单数据请求。

如下图所示,API 网关开发人员门户显示了正确的内容类型,但正文是一个简单的 texbox。 在此处输入图片说明

相反,API 自动生成的 swagger 正确显示了输入配置,如下图所示。 在此处输入图片说明

有什么方法可以强制 API Gateway 开发人员门户正确显示输入参数?

azure api-gateway

5
推荐指数
0
解决办法
652
查看次数

AWS API 网关访问私有子网

我的 VPC 中有公共和 Pvt 子网。我有一些服务在 Pvt 子网中的 EC2 上运行,需要通过外部/移动资源访问。我该怎么做 - VPCLink 和 NLB 是这样做的方式,还是其他方式,在公共子网 (??) 中创建一些访问点。Lambda 似乎是答案(现在几乎适用于 AWS 中的所有内容)——甚至不确定该访问如何对 Pvt 子网中的资源起作用。

同样的 Pvt 子网也可以访问外部资源(AWS 之外) - 如何使用 API 网关执行此操作?

不太了解 API 网关(和 Lambda)是如何相对于 VPC 和子网定位的,以及网络访问控制功能如何——它们是否可以直接访问 Pvt 子网。文档对此有些沉默,只谈论 IAM -如果有人可以解释这一点。在 Lambda 上找到了这个:AWS Lambda:如何为具有 VPC 访问权限的 lambda 函数设置 NAT 网关

文档说“API 网关允许您安全地连接……托管在 AWS 内部或外部的可公开寻址的Web 服务”。我在 Pvt 子网中的资源不可公开寻址 - 我想。

谢谢

amazon-web-services aws-vpc api-gateway

5
推荐指数
1
解决办法
8250
查看次数

Identityserver 4 和 Ocelot

我正在尝试按照https://ocelot.readthedocs.io/en/latest/features/authentication.html使用 Ocelot 和 IS4

使用时

public void ConfigureServices(IServiceCollection services)
{
    var authenticationProviderKey = "TestKey";

    services.AddAuthentication()
        .AddJwtBearer(authenticationProviderKey, x =>
        {
        });
}
Run Code Online (Sandbox Code Playgroud)

并在 ocelot.json 中使用“TestKey”,它在启动应用程序时抛出错误

无法启动 Ocelot,错误是:TestKey,AllowedScopes:[] is unsupported authentication provider

知道出了什么问题吗?我需要在我的 IdentityServer 应用程序中特别设置一些东西吗?

c# .net-core identityserver4 api-gateway ocelot

5
推荐指数
1
解决办法
2641
查看次数

如何使用 aws API Gateway 从具有多个定义的另一个模型中引用一个模型

我正在尝试使用以下方法引用模型:

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-step-by-step.html#getting-started-models-add-models

"deets": {
"$ref":"https://apigateway.amazonaws.com/restapis/<rest_api_id>/models/stuff
}
Run Code Online (Sandbox Code Playgroud)

问题是东西有多个定义。我如何只引用一个?

例如:stuff -box -jar -cup

我尝试添加 /box,但随后收到“指定的模型无效:验证结果:警告:[],错误:[模型参考必须采用规范形式]”

我已经阅读了如何使用 aws API Gateway 从另一个模型引用一个模型,它解决了一半的问题,即实际引用,但没有说明如何引用特定定义。

amazon-web-services api-gateway

5
推荐指数
0
解决办法
928
查看次数

Krakend 与 Kong 相比有多好?

我一直在从下面提到的三个 API 网关中选择一个 API 网关:

  1. KrakenD ( https://www.krakend.io/ )
  2. 孔 ( https://konghq.com/kong/ )
  3. Spring Cloud Gateway ( https://cloud.spring.io/spring-cloud-gateway/reference/html/ )

我的要求是:

  1. 良好的性能并且必须具有大部分 API 网关功能。
  2. 支持从两个不同的微服务 API 聚合数据。

所有这三个,从功能列表和性能方面看起来都不错。我正在考虑放宽第二个要求,因为我不确定这是否是一个好的做法。

microservices kong api-gateway spring-cloud-gateway krakend

5
推荐指数
1
解决办法
6657
查看次数

Spring Cloud Gateway 中每个备用请求的 404 错误

我在 spring 云网关中遇到了一个非常奇特的问题。每个备用请求都会返回 404。这发生在我在 api-gateway 中配置的所有服务中,无一例外。我什至不知道从哪里开始调试这个问题。

这是我用于通用配置的 application.yml 文件。

server:
  port: 8080
  ssl:
    enabled: true
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: pkcs12
    key-alias: tomcat

security:
  require-ssl=true:
logging:
  level:
    org:
      springframework:
        cloud.gateway: DEBUG
        http.server.reactive: DEBUG
        web.reactive: DEBUG

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true
Run Code Online (Sandbox Code Playgroud)

这是我的java配置文件


@EnableWebFluxSecurity
public class SecurityConfig {

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http,
                                                            ReactiveClientRegistrationRepository clientRegistrationRepository) {
        // Authenticate through configured OpenID Provider
        http.oauth2Login();
        // Also logout at the OpenID Connect provider
        http.logout(logout -> logout.logoutSuccessHandler(new OidcClientInitiatedServerLogoutSuccessHandler(
                clientRegistrationRepository)));
        // …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-cloud api-gateway spring-cloud-gateway

5
推荐指数
1
解决办法
3074
查看次数

微服务、API 网关和前端

我最近开始探索微服务和 API 网关的概念,并且对如何托管前端端点特别困惑。

如果我有一个 API 网关充当对我的所有服务的请求之间的中间人,那么前端究竟应该托管在哪里?如果我请求 /api/example,我知道我的 API 网关应该将其路由到适当的服务并转发该服务响应。但是,我不明白 API 网关应该如何在微服务上下文中处理 /home/。在这种情况下,我们希望将 /home/ 对应的 html/css/javascript 传递给发出 GET 请求的客户端。这是否意味着我们应该有某种前端服务?创建一个只返回 HTML/CSS/JS 的服务会不会是多余的并增加延迟,因为我们真正需要做的只是立即返回与我们的前端关联的 HTML/CSS/JS?

我正在考虑的另一种方法是让 API 网关本身提供端点,这些端点返回客户端呈现前端所需的 HTML/CSS/JS。换句话说,API 网关可以在接收到 /home/ 的 GET 请求时立即响应 /home/ 对应的 HTML,而不是调用服务。但是,我在网上读到 API 网关实际上不应该为端点提供服务,而只是将它们代理到服务。

这是我的主要问题:当您的后端使用微服务架构构建时,前端代码应该放在哪里?

http nginx node.js microservices api-gateway

5
推荐指数
1
解决办法
1348
查看次数