标签: api-gateway

使用 AWS_IAM 授权对 AWS WebSocket API Gateway 的请求

我已经使用 WebSocket 协议设置了 API 网关。在“$connect”路由请求设置中,我选择“AWS_IAM”作为授权方法。用户通过 Cognito 登录后,Web 应用程序需要与此 WebSocket API 建立连接。然后,我如何授权来自 Web 应用程序上的 JavaScript 的 WebSocket API 请求?使用 HTTP API 网关,我可以根据访问密钥和会话令牌生成签名,并将其传递到请求标头。但我无法在 WebSocket 请求中传递标头。

amazon-web-services websocket amazon-iam aws-api-gateway api-gateway

11
推荐指数
2
解决办法
4441
查看次数

授权标头需要“Credential”参数。授权标头需要“Signature”参数

我已经交付了 aws serverless(LAmbda、API GW 和 DynamoDB),但在开发人员测试期间,他们的“Postman”实用程序遇到了以下错误:

{

    "message": "Authorization header requires 'Credential' parameter. 
               Authorization header requires 'Signature' parameter. 
               Authorization header requires 'SignedHeaders' parameter. 
               Authorization header requires existence of either a 'X-Amz-Date' or a 'Date'          
               header. 
               Authorization=xxxxxxxxxxxxxxxxxxxx"
} 
Run Code Online (Sandbox Code Playgroud)

我已经检查了cloudwatch日志,但没有发现任何内容,我认为这意味着请求没有到达API端点,我不知道为什么。

实际上,我需要找出这个错误是否是由于 Postman 参数或 api 端点而发生的。

PS Lambda代码是使用Python开发的

请指教。

amazon-web-services api-gateway aws-serverless

11
推荐指数
1
解决办法
1万
查看次数

API网关模式和BFF之间有区别吗?

我的理解是API网关模式就像是所有微服务的代理.因此,客户端调用API网关来处理进一步的路由.BFF是API网关模式的一个特例,我们为每种类型的客户端都有一个路由机制.我对吗?

microservices netflix-zuul api-gateway

10
推荐指数
1
解决办法
4674
查看次数

如何在Kubernetes中选择API网关?

我们在微服务场景中使用 Zuul 作为 API 网关已经有一段时间了,最​​近我们决定迁移到 Kubernetes 并选择一种更加云原生的方式。

经过一番调查和阅读 Istio 文档,我们对 Kubernetes 中的 API 网关选择有一些疑问:

  • 在Kubernetes中选择API网关应该考虑哪些方面?
  • 如果我们使用 Istio,我们还需要 Zuul 吗?

kubernetes netflix-zuul istio api-gateway

10
推荐指数
1
解决办法
9878
查看次数

如何使用 aws CLI 获取 API 密钥

我有一个脚本想要获取 AWS API 网关 ID 和 API 密钥值。到目前为止,我已经能够使用 cli 获取 API 网关 ID:

aws apigateway get-api-keys --query 'items[?name==`my-api-key-name`].id' --output text --region us-east-1
Run Code Online (Sandbox Code Playgroud)

但我无法获取 API 密钥的值。我尝试过以下 cli,但没有成功:

aws apigateway get-api-keys --query 'items[?name==`my-api-key-name`].value' --output text --region us-east-1
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

api-key amazon-web-services aws-cli api-gateway

10
推荐指数
1
解决办法
4456
查看次数

springcloud api gateway属性文件声明变量

我在 springboot 应用程序中有 application.yaml 如下

spring:
  cloud:
    gateway:
      routes:
      - id: pgService
        uri: http://localhost:2005/
        predicates:
        - Path=/employee/**
      - id: inMateService
        uri: http://localhost:2006/
        predicates:
        - Path=/consumer/**
Run Code Online (Sandbox Code Playgroud)

上述声明的变量是针对Spring Cloud Gateway的

我想在 application.properties 文件中声明这些相同的变量。我不想使用 yaml 文件。请帮助我实现这个目标谢谢

java properties-file microservices api-gateway spring-cloud-gateway

10
推荐指数
2
解决办法
3万
查看次数

API 网关模式与聚合器模式(在微服务的背景下)

我试图理解 API 网关和微服务聚合器模式之间的差异。

目前,根据我的理解,聚合器模式通过从各种微服务收集数据片段并返回聚合进行处理来发挥作用。

现在,API 网关是聚合对各个微服务的调用的单一入口点。虽然这听起来与聚合器模式非常相似,但有一些不同的特征。最重要的是,这项新服务不存储数据,而是负责 API 组合、请求路由和身份验证等新功能

我真的很想知道我的推理是否正确。

先感谢您!

aggregate microservices api-gateway

10
推荐指数
1
解决办法
7932
查看次数

如何在application.yml中指定自定义过滤器Spring Cloud Gateway

我有一个自定义网关过滤器MYGatewayFilter.java文件现在我想使用这个网关过滤器与我在application.yml中编写的路由

 spring:
  cloud:
   gateway:
    routes:
      - id: login2_route
      uri: http://127.0.0.1:8083/login
      predicates:
       - Path: /login/
      filters:
Run Code Online (Sandbox Code Playgroud)

如何为上述路线定义过滤器

自定义筛选MyGatewayFilter.java

public class MyGatewayFilter implements GatewayFilter {
    @Override
  public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
      ServerHttpRequest request;
      if(request.getHeaders().get("x-mydata")!=null){
         request= exchange.getRequest().mutate().header("my-new-header",request.getHeaders().get("x-mydata").get(0)).build();
      }

      return chain.filter(exchange.mutate().request(request).build());
  }
}       
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-cloud-netflix api-gateway

9
推荐指数
2
解决办法
5652
查看次数

API网关应该负责授权吗?

目前,我有一个带有 Java/Spring Boot 的单体应用程序,具有以下端点:

  • /login
  • /logout
  • /some-resource

要访问some-resource,流程如下:

  1. 用户POST/login端点发出请求。如果凭据正确,则在标头中返回 JWT 令牌,否则返回 401。
  2. 用户将 JWT 令牌与请求一起发送到/some-resource。如果令牌有效,则返回资源,否则返回 403。

现在我想将单体拆分为 2 个服务:“AuthServer”和“SomeResourceServer”。顶部会有一个 API 网关。我正在考虑 2 种可能的方式来处理授权


选项1

  1. 用户向/login端点发出请求。API 网关将其转发到“AuthServer”。如果凭据正确,则在标头中返回 JWT 令牌,否则返回 401。- 此步骤相同
  2. 用户将 JWT 令牌与请求一起发送到/some-resource。API 网关调用“AuthServer”来验证 JWT 令牌。如果令牌有效,API 网关调用“SomeResourceServer”并返回结果。否则 403。

选项 2

  1. 用户向/login端点发出请求。API 网关将其转发到“AuthServer”。如果凭据正确,则在标头中返回 JWT 令牌,否则返回 401。- 此步骤相同
  2. 用户将 JWT 令牌与请求一起发送到/some-resource。API 网关只是将请求转发到“SomeResourceServer”。然后“SomeResourceServer”调用“AuthServer”来验证 JWT 令牌。如果令牌有效,则返回资源,否则返回 403。

在选项 1 中,API 网关负责处理授权(与“AuthServer”通信),在选项 2 中,通信在服务器之间完成。那么哪个选项更正确呢?有什么好的/坏的做法吗?或者也许是另一种方式/选择?

architecture authentication authorization microservices api-gateway

9
推荐指数
1
解决办法
2191
查看次数

具有 API 网关和微服务的 Blazor 服务器指南

到目前为止,我还没有找到有关将 Blazor Server(不是WebAssembly)与 API 网关和微服务结合使用的指南。讨论这些 Blazor 以及 API 网关和微服务的文章总是提到 Blazor WebAssembly (Wasm)。(是否假设 Blazor Server 应用程序不会使用微服务?此外,就其价值而言,选择 Blazor Server 而不是 Blazor WebAssembly 的原因是为了更好地保护知识产权。)

\n\n

无论如何...我想知道 Blazor Server 应用程序是否应该位于网关前面,通过网关将其内部 API 调用发送到网关后面的微服务,例如 \xe2\x80\xa6

\n\n

[浏览器] ----(SignalR)--- [Blazor 服务器应用程序] ----(https)---- [API 网关] ----(http)---- [微服务]

\n\n

或者将应用程序放在网关后面,让 SignalR 连接隧道通过网关,这样更有意义吗\xe2\x80\xa6

\n\n

[浏览器] ----(SignalR)---- [API 网关] ----(SignalR)---- [Blazor 服务器应用程序] ----(http)---- [微服务]

\n\n

请记住在建立 SignalR 连接之前应用程序在浏览器中的初始加载。需要单独处理吗?它会影响上面给出的选项的选择吗?我缺少更好的解决方案吗?

\n

architecture microservices api-gateway blazor blazor-server-side

9
推荐指数
1
解决办法
2596
查看次数