【发布时间】:2021-05-27 04:04:31
【问题描述】:
我正在使用 Google App Engine 来托管几个服务(NextJS SSR 服务和基于 Express 构建的后端 API)。我已经设置了我的dispatch.yaml 文件以将/api/* 请求路由到我的API 服务,所有其他请求都被路由到default (NextJS) 服务。
dispatch:
- url: '*/api/*'
service: api
问题:我还为 App Engine 开启了 Identity-Aware Proxy。当我尝试从我的 NextJS 服务向我的 API(服务器端,通过 getServerSideProps)发出 GET 请求时,它会再次触发 IAP 登录页面,而不是点击我的 API。我尝试了一些想法来解决这个问题:
- 在 API 请求中转发所有 cookie
- 设置
X-Requested-With标头,如here 所述 - 向我的 App Engine 默认服务帐户授予受 IAP 保护的 Web 应用用户权限
但似乎没有任何效果。我已经确认关闭 App Engine 的 IAP 可以让一切按预期运行。从前端对 API 的任何请求也可以按预期工作。是否有我缺少的解决方案或解决方法?
【问题讨论】:
-
如何在代码中执行您的请求?您是否在 Authorization 标头中添加了承载 id 令牌?
-
@guillaumeblaquiere 不,我使用 Axios 发出
GET请求并在cookie标头中从前端传递 cookie -
好的,您在 IAP 后面有一个前端服务调用 IAP 后面的后端服务?还是后端服务调用另一个后端服务?
-
如何关闭后端服务上的 IAP 并添加不记名令牌验证?当您在内部进行调用时,您会包含该令牌。公共用户将没有该令牌,这意味着他们对后端服务的调用将失败。注意:根据文档 - cloud.google.com/iap/docs/managing-access - 您应该能够单独打开/关闭后端服务与其他 Web 服务的 IAP
-
@guillaumeblaquiere 这是一个调用另一个后端服务的后端服务。两者都通过 IAP 背后的 App Engine 部署
标签: google-app-engine google-cloud-platform next.js google-iap identity-aware-proxy