我如何在静态S3站点上为多个客户自定义/限制内容?

0

【以下的问题经过翻译处理】 我该如何自定义/限制静态S3站点上web用户(客户-而不是管理员)的视图?我已经高低遍寻了哪种方法可以采取。我已经成功使用CloudFront和Lambda限制了访问,但该方法只允许一个用户/密码访问所有受限制的内容。我希望我的客户可以逐个登陆(最低级别),并针对每个客户进行内容过滤。我不希望我的客户看到其他客户或其他客户的内容。我尝试了遵循“带Amazon CloudFront和AWS Lambda@Edge的签名基于cookie的身份验证第1和第2部分”,但那在两个文档之间留下了一个巨大的空白(即登录表单应该指向哪里?)。 我的想法是: 单独的客户登录/密码(cognito?) 根据cookie或令牌或??? 进行过滤/限制内容(前缀方式) 请告诉我一个方向?

1 回答
0

【以下的回答经过翻译处理】 嗨,sschlegelmilch - 谢谢你添加了额外的细节!

以下是我如何设置的。

  1. 在静态应用程序上实现Cognito。全面披露,我从未做过这个,但目标是在用户登录时生成JWT。根据我上面链接的Cognito文档显示,默认情况下成功登录后会生成JWT,因此我希望这一步不会太难。
  2. 当用户成功登录后,将上面生成的JWT设置为Cookie。
  3. 在CloudFront中,为 /pricing (我是随意设想的,但应保护的一些路径)创建一个新的缓存行为。在此行为中,您需要使用此 CloudFront 函数处理检查JWT并验证请求是否应允许/拒绝。此Lambda可能需要进行一些小修改,以检查Cookie值中的JWT令牌,因为我认为它默认检查查询字符串中的JWT,但这并不难。如果卡住,请告诉我。
  4. 更改上面的CloudFront函数的默认错误行为,以发出重定向回Cognito登录页面。

现在,用户将访问您的站点,并且可以正常浏览。当他们转到Cognito登录并成功登录时,他们将获得JWT Cookie。当他们转到受保护的路径(/pricing)时,他们将命中检查其JWT令牌的Lambda。如果Cookie存在且JWT令牌有效,则允许请求通过,并且用户可以查看受保护的内容。如果JWT令牌丢失或无效,则用户将被重定向回Cognito登录页面。

再次说明,我个人没有设置过这个,但我相信这应该可以工作。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则