如何保护 AWS Gateway REST API 可通过可公开访问的网页进行访问 (React)

Posted

技术标签:

【中文标题】如何保护 AWS Gateway REST API 可通过可公开访问的网页进行访问 (React)【英文标题】:How to secure an AWS Gateway REST API to be accessed by a publicly accessible web page (React) 【发布时间】:2021-07-16 06:24:36 【问题描述】:

我在 AWS API Gateway 中公开了一个 REST API,为一些后端数据提供服务,我计划通过我正在开发的 React UI(只读)和一些管理脚本(非只读)来使用它。我提供的数据目前不敏感,但我想围绕它设置一些基本的安全性,以便只有我(或我编写的应用程序)可以访问和操作它。我的问题是:如何保护 API 以便可公开访问的 UI 可以与之交互?我的第一个冲动是使用 Cognito 用户池/JWT,但我看到的示例总是将其与客户端的某些登录流程联系起来(我没有)。

【问题讨论】:

您能否澄清一下“安全访问 API”是什么意思,无需任何形式的身份验证,例如 cognito? 我不会要求用户登录网页来查看内容。因此,我希望应用程序在后台向 API 进行身份验证以加载数据,但不打扰用户进行任何登录。我想知道这是否是 Cognito 的一个很好的用例,或者我是否应该考虑其他一些事情。 除了登录别无他法。 【参考方案1】:

您可以在您的 API 网关设置 API 密钥,并在您从 React 前端进行 HTTP 调用时将其设置为您的标头。如果您的标头中没有正确的 API 密钥。它将无法访问。更多细节在这里:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html

【讨论】:

以上是关于如何保护 AWS Gateway REST API 可通过可公开访问的网页进行访问 (React)的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 中运行 spring boot 应用程序并且只允许通过 AWS API Gateway 访问

通过 API Gateway 保护对 AWS Lambda 的访问

REST API openapi 规范 AWS API Gateway 与 serverless.com 框架的集成

使用 AWS Cognito 保护 REST API

如何将接收到的(承载)访问令牌传递给生成的 REST 客户端,以调用安全的 API-Gateway 端点

无服务器框架 AWS REST API Gateway - 403 CORS 错误