Rest 无用户凭据的身份验证

Rest 无用户凭据的身份验证,rest,api,amazon-web-services,authentication,Rest,Api,Amazon Web Services,Authentication,我正在创建一个个人React站点,希望向AWS API网关发送请求。然而,我只是希望我的网站能够拉数据。没有用户模型,我使用过的每个身份验证模型都要求用户进行登录操作,无论是用户/pwd还是广告。有人能给我介绍一个涵盖此场景的模型吗 一种常见的方法是使用启用了“未经身份验证的身份”的Cognito身份池。您可以使用IAM保护API网关端点,并要求对请求进行签名 通过这种方法,Cognito只在一种身份代理能力中使用,而不是作为实际的身份提供者使用。您不需要创建用户池或使用Cognito的任何其他

我正在创建一个个人React站点,希望向AWS API网关发送请求。然而,我只是希望我的网站能够拉数据。没有用户模型,我使用过的每个身份验证模型都要求用户进行登录操作,无论是用户/pwd还是广告。有人能给我介绍一个涵盖此场景的模型吗

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

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

使用CognitoSDK,您可以请求(访问密钥、密钥、会话令牌),这些请求可用于对请求进行签名

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

我通常使用axios(如示例所示)对请求进行签名

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


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

所以您只想让您的React应用程序访问API?@Nathanhefley yessir。这……就是答案。我去看看。谢谢我认为这不能解决我的问题。YatrixApp应该经过身份验证,但MikePatrickApp不应该。我看不出你的回答有什么可能。我只是误会了吗?使用CognitoSDK,您可以请求临时IAM凭据(访问密钥、密钥、会话令牌),这些凭据可用于对请求进行签名。似乎是这一部分,但我不明白两个完全不同的应用程序之间是如何确定的。关于认证和未认证的语义在这里有点混乱,但我想我明白你的意思。表面上,YatrixApp知道您的标识池id,并包含使用它获取IAM密钥和签名请求的逻辑。其他应用程序不会。因此,来自OtherApp的请求将失败,而来自YatrixApp的请求将成功。OtherApp会破坏您的身份池id并添加适当的.js来滥用您的API吗?也许可以,但他们必须是非常坚定的攻击者。因此,“非防弹”和“合理的信心水平”您的问题和评论启发我提出了自然的后续问题。快乐的黑客!