我正在组建一个个人React网站,并希望将请求发送到AWS API网关。但是,我只是希望我的网站能够提取数据。没有用户模型,我曾经使用的每个身份验证模型都要求用户通过登录执行某些操作,无论是用户/密码还是AD。有人可以引导我到涵盖这种情况的模型吗?
答案 0 :(得分:2)
一种常见的方法是使用带有"未经身份验证的身份的#Cognito身份池"启用。您可以使用IAM保护API网关端点,并要求sig4签名请求。
使用此方法,Cognito仅用于种类身份代理容量,而不是实际身份提供者。您无需创建用户池或使用Cognito的任何其他身份管理功能。在此功能中,Cognito本质上只是代码与underlying STS APIs之间的一个薄层,可生成应用程序所需的IAM密钥。
使用Cognito SDK,您可以请求temporary IAM credentials(访问密钥,密钥,会话令牌),用于签署请求。
This answer概述了实现这一目标的一种方法。当您要访问的受保护AWS资源是API Gateway时,您的代码可能类似于this post末尾附近的示例。
我通常使用aws-api-gateway-client作为示例,或aws4使用axios签署请求。
如上面的回答链接所示,我通常使用AWS.config.credentials.get()
而不是AWS.CognitoIdentity.getCredentialsForIdentity()
来实际获取IAM密钥(as in this doc)。
签名的请求包含一个非常难以伪造的Authorization标头。我不想建议这种方法是防弹的,但它确实至少为您提供了合理的信心,您的API网关端点只能被您的应用程序成功调用。