希望每个人都做得很好!
我有一个问题陈述 - 我想访问两个包含一些文件的 S3 存储桶内容 - /secured 和 /unsecured。
我已经设置了两个 S3 存储桶以及 cloudfront 分发和 Route53 设置。
cloudfront 以 S3 存储桶作为源进行映射。我们需要使用 okta 对一个存储桶文件进行身份验证,其他存储桶文件应该无需身份验证即可使用。
我有两个下游应用程序,用户在当前场景中请求文件,但目前没有身份验证。
理想的情况是/或者我想要创建的场景是 -
用户向下游应用程序发出请求,该请求应该到来,之后应该首先对用户进行身份验证,如果他/她通过带有令牌的 okta oidc 进行了身份验证,则route53将获取该文件,该文件将调用cloudfront,该文件将调用安全的S3存储桶。
目前我不/无法对下游应用程序对任何令牌或额外的代码进行任何更改。 我想做的任何事情都在后端/ API 端
我尝试过 lambdaEdge 但它在大小方面有一些限制。 我对 Amazon Cognito 持怀疑态度。
在不对下游应用程序进行任何更改的情况下,我想验证请求文件的用户是否返回安全和不安全。
我还制作了一个 SPA,它是有角度的作为登陆页面。
请帮帮我。
你有很多选择
CloudFront 能够生成 签名 URL 和 签名 cookie
在 CloudFront 查看器请求中使用 Lambda@Edge 进行边缘计算。例如,您可以使用 JWT 进行简单的身份验证和授权检查。
如果您有更复杂的身份验证和授权逻辑,可以使用S3 Object Lambda。您将 CloudFront 源配置为使用 S3 访问点,该访问点在允许请求进入您的 S3 源之前通过 Lambda 路由请求。这通常在您想要转换 S3 对象时使用,但也可用于授权和身份验证。
如果您的用户通过 API 与您的应用程序交互,则不使用 CloudFront 的一个简单选项是让您的 API 生成用于 S3 的预签名 URL。