没有用户凭据的身份验证



我正在组建一个个人React站点,并希望向AWS API网关发送请求。然而,我只想我的网站能够提取数据。不会有用户模型,我使用过的每个身份验证模型都要求用户通过登录来做一些事情,无论是user/pwd还是AD。有人能指导我找到一个涵盖这种情况的模型吗?

一种常见的方法是使用启用了"未经身份验证的身份"的Cognito身份池。您可以使用IAM保护API网关端点,并要求对请求进行sig4签名。

通过这种方法,Cognito仅用于某种身份代理身份,而不是作为实际的身份提供者。您不需要创建用户池或使用Cognito的任何其他身份管理功能。在这种能力下,Cognito本质上只是代码和底层STS API之间的一层薄薄的东西,后者可以生成应用程序所需的IAM密钥。

使用Cognito SDK,您可以请求可用于对请求进行签名的临时IAM凭据(访问密钥、密钥、会话令牌)。

这个答案概括了实现这一目标的一种方法。当您要访问的受保护AWS资源是API网关时,您的代码可能与本文结尾处的示例类似。

我通常使用aws-api网关客户端(如示例所示),或者使用aws4和axios对请求进行签名。

正如上面链接到答案中所指出的,我通常使用AWS.config.credentials.get()而不是AWS.CognitoIdentity.getCredentialsForIdentity()来实际获取IAM密钥(如本文档所示)。

然后,签名的请求包括一个很难伪造的Authorization头。我不想说这种方法是防弹的,但它至少给了您一个合理的级别的信心,即您的API网关端点仅被您的应用程序成功调用。

最新更新