【发布时间】:2022-01-10 02:20:57
【问题描述】:
我有一个非常简单的 API Gateway 资源配置:
ANY 方法指向运行 express.js 的 node.js lambda。 Express.js 然后负责路由、CORS 请求等。API 将由单页 javascript 应用程序使用。
几乎所有端点都需要授权,所以我在ANY方法中添加了Cognito授权器。但是,此设置会破坏 CORS 预检请求,因为预检请求不能携带 Authorization 标头。
- 如何使预检请求绕过
Cognito授权方? - (可选)如何使一些选定的端点绕过
Cognito授权方(用于 GET)? - 除了必须在 API Gateway 资源设计器中复制我的所有路由之外,是否有任何解决方案?
我能想到的唯一解决方案是使用 Application Load Balancer 而不是 API Gateway,并在 lambda 函数中编写自己的 Cognito 授权器。
另一种解决方案可能是使用 cognito-express 代替 AWS 提供的 Cognito 授权方。不过,出于安全原因,我自然更喜欢 AWS 提供的授权方。
【问题讨论】:
-
您使用的是代理还是非代理集成?
-
@kgiannakakis 代理集成
-
尝试在 ANY 请求之前添加一个 OPTIONS 请求。
-
@kgiannakakis 是不是只会影响单个资源而不是应用于所有子资源?
标签: amazon-web-services express cors aws-api-gateway amazon-cognito