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

0

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

1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen