有什么方法可以使用 okta 对用户进行身份验证,以便通过 Cloudfront 访问 S3 存储桶中的内容,而不需要对下游应用程序进行任何更改

问题描述 投票:0回答:1

希望每个人都做得很好!

我有一个问题陈述 - 我想访问两个包含一些文件的 S3 存储桶内容 - /secured 和 /unsecured。

我已经设置了两个 S3 存储桶以及 cloudfront 分发和 Route53 设置。

cloudfront 以 S3 存储桶作为源进行映射。我们需要使用 okta 对一个存储桶文件进行身份验证,其他存储桶文件应该无需身份验证即可使用。

我有两个下游应用程序,用户在当前场景中请求文件,但目前没有身份验证。

理想的情况是/或者我想要创建的场景是 -

用户向下游应用程序发出请求,该请求应该到来,之后应该首先对用户进行身份验证,如果他/她通过带有令牌的 okta oidc 进行了身份验证,则route53将获取该文件,该文件将调用cloudfront,该文件将调用安全的S3存储桶。

目前我不/无法对下游应用程序对任何令牌或额外的代码进行任何更改。 我想做的任何事情都在后端/ API 端

我尝试过 lambdaEdge 但它在大小方面有一些限制。 我对 Amazon Cognito 持怀疑态度。

在不对下游应用程序进行任何更改的情况下,我想验证请求文件的用户是否返回安全和不安全。

我还制作了一个 SPA,它是有角度的作为登陆页面。

请帮帮我。

amazon-s3 aws-lambda amazon-cognito amazon-cloudfront okta
1个回答
0
投票

你有很多选择

CloudFront 能够生成 签名 URL签名 cookie

在 CloudFront 查看器请求中使用 Lambda@Edge 进行边缘计算。例如,您可以使用 JWT 进行简单的身份验证和授权检查。

如果您有更复杂的身份验证和授权逻辑,可以使用S3 Object Lambda。您将 CloudFront 源配置为使用 S3 访问点,该访问点在允许请求进入您的 S3 源之前通过 Lambda 路由请求。这通常在您想要转换 S3 对象时使用,但也可用于授权和身份验证。

如果您的用户通过 API 与您的应用程序交互,则不使用 CloudFront 的一个简单选项是让您的 API 生成用于 S3 的预签名 URL。

© www.soinside.com 2019 - 2024. All rights reserved.