问题标签 [google-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.

0 投票
0 回答
87 浏览

google-cloud-platform - API Gateway 将 backendRequest 主机名修改为“backend-cluster-dev.equipment.example.com:443”,而不仅仅是“dev.equipment.example.com:443”

无法理解为什么 API Gateway 会在主机名前添加“backend-cluster”前缀。请求中网关的日志如下所示:

网关配置很简单:

根据想法,重定向应该转到https://dev.equipment.example.com/api/v1/XXXXXXXX/organizations/XXXXXXXXXX/export?period=0而是转到https://backend-cluster-dev.equipment .example.com/api/v1/XXXXXXXX/organizations/XXXXXXXXXX/export?period=0当然它失败了。

你有什么想法为什么会发生?

先感谢您!

0 投票
1 回答
54 浏览

google-cloud-platform - 如何在函数内部通过api网关认证的路由中获取jwt有效负载?

我为我的项目配置了一个网关,我在路由中添加了安全选项,它的工作原理:

我的函数生成 jwt 令牌:

.yaml 文件

- 安全

- 我配置了 jwt 的路线:

使用此配置,我需要在 Header 中发送 jwt 令牌,如果我不发送,网关返回错误,否则如果 jwt 有效,则调用我的函数。所以这行得通!

但我的问题是,我如何在 MyRoute 中恢复 api 网关生成的有效负载?

有效载荷应该可供我使用,还是我需要调用另一个 google api 来解码进来的 jwt req.headers.authorization

@John Hanley 所说的答案是使用标题 x-apigateway-api-userinfo

我的数据有我被告知的有效载荷。

0 投票
0 回答
182 浏览

google-cloud-platform - Google Cloud Platform - API 网关无法 PUT/DELETE 错误

我正在努力将路径参数从我的网关传递到实际端点,我使用 PUT 方法执行更新和 DELETE 方法在使用 Google Cloud Functions 构建的 API 中执行删除操作。

这是我的 API 网关配置:

如果我直接使用 PUT/DELETE 方法调用函数 URL,它会按预期工作。例如PUT https://asia-southeast2-project-id.cloudfunctions.net/cpd_user/1

但是,当我尝试使用 API Gateway URL 调用它时,它会给我以下 404 HTTP 状态错误:

这是 cpd_user index.js 文件。我使用 express JS 来定义路由

我已经检查了日志,但在那里我没有得到任何有用的信息。请帮我解决这个问题。

谢谢。

0 投票
1 回答
381 浏览

google-cloud-platform - 谷歌云 API 网关用户身份验证

我正在尝试通过 Google Cloud API Gateway 中的 JWT 实现用户身份验证。我已根据文档
在 API 配置中配置了安全要求对象和安全定义对象

后端服务是 Cloud Run 服务

但是,当我使用我的用户持有者令牌调用 API 时,我收到 403 错误,并且堆栈驱动程序日志中出现此错误

调用 API 的 Python 客户端代码是

使用用户帐户(不是服务帐户)时包含受众的正确方法是什么

更新 1
我找到了一种方法,但我不确定它是否正确。如果我添加32555940559.apps.googleusercontent.comsecurityDefinitionsso 它看起来像这样

它将允许未经身份验证访问 Cloud Run,但是我仍然无法在启用身份验证的情况下调用 Cloud Run。403由于 API 网关服务帐号没有权限,Cloud Run 返回错误 - 它有Cloud Run Invoker

除了授予权限之外,我需要做些什么才能让 API Gateway 调用云运行吗?Cloud Run Invoker

0 投票
1 回答
23 浏览

google-cloud-platform - 在谷歌云平台创建 API 网关时抛出无法访问的错误

当我尝试创建一个 api 网关时,它有时会失败并显示以下错误在此处输入图像描述

但这并不总是发生。但它发生了很多次。知道可能是什么问题吗?我对 API 规范没有任何问题。在从 OpenAPI 规范创建新的 api 网关配置后等待 90 秒后,我试图创建 api 网关。

0 投票
1 回答
62 浏览

google-cloud-functions - 如何使用 API Gateway 和 CORS 保护 Google Cloud 功能?

我创建了一个使用x-google-backend云功能的 API 网关。

当我尝试通过浏览器访问它时,我收到了一个 CORS 错误,因此我研究并通过将其添加到 OpenAPI 配置中找到了解决方案,其中address部分与云功能相同。

这行得通!于是我把云功能的公共访问权限去掉了,给网关服务帐号访问权限,再试一次。

这给了我一个权限错误。经过研究,我发现这篇文章解释了这个问题并给了我解决它的方法。问题是我用一个额外的调用路径来调用我的定义云函数query。我将此添加到 OpenAPI 配置中:

jwt_audience: https://europe-west3-myproject.cloudfunctions.net/api

所以我在 Postman 中再次尝试它并且它可以工作,但是在浏览器中我现在再次遇到 CORS 错误。

所以现在我在第一方……我该怎么办?这是我完整的 OpenAPI 配置:

0 投票
1 回答
153 浏览

google-cloud-platform - GCP API 网关返回 403 表示托管服务“未为项目启用”

尝试访问公共云运行服务,但不确定为什么{"message":"PERMISSION_DENIED:API basic-express-api-1yy1jgrw4nwy2.apigateway.chrome-courage-336400.cloud.goog is not enabled for the project.","code":403}在使用查询字符串中的 API 密钥访问网关默认主机名路径时不断收到此错误消息 ()。该配置有一个服务帐户,其角色能够调用云运行服务。还启用了所有必需的 API。这是我整个代码库的链接,但下面是我的 API Gateway 特定的 terraform 配置。

0 投票
1 回答
176 浏览

google-app-engine - GCP API Gateway 用于保护在 App Engine 上部署的 API 的内部/外部通信

我正在构建一个微服务架构,我需要内部/外部通信方面的帮助。

我有部署在 GCP App Engine Flex 上的微服务,并且在它们前面有 GCP API 网关。API Gateway 使用通过服务帐户私钥签名的请求标头中发送的 JWT 令牌处理外部通信身份验证。

在 App Engine 上,我们已经配置了 Ingress(内部 + 负载均衡器),因此 App Engine 的 apppot URL 被外部阻止。每个服务都有启用 IAP 的负载均衡器,并且只有 API Gateway 的服务帐户具有 IAP-Secured Web App User 角色以将请求传递给 LB。

我的问题是:

  • GCP API Gateway 是否应该用于内部服务到服务的通信?
  • 由于我们在 App Engine 上启用了入口(内部 + 负载均衡器)并且 apppot URL 只能在 GCP 项目内部访问,这些 URL 可以用于内部服务到服务的通信吗?这是安全/推荐的方法吗?

上述 2 中哪一个非常适合管理安全通信的架构。另外,如果可能,请提出一些替代方案。

更新:为两种方法添加流程图

方法一 方法二