我正在开发一个具有微前端结构的项目,该项目是托管子 React 应用程序的父 Astro 应用程序。使用的技术是ReactJS,依赖有Vite、Webpack CLI等
我正在使用 Amazon Cognito,并将 UserPoolId 和 ClientId 放入父 Astro 应用程序中的 .env 文件中。
问题是一旦我部署到AWS S3和CloudFront Distribution。 .env 文件未提交到 Gitlab,因此部署的 CloudFront 网站不知道在哪里可以找到 UserPoolId 和 ClientId。
我一直在研究,似乎找不到好的方法。我考虑过为 UserPoolId 和 ClientId 设置 Gitlab CI/CD 管道变量,但我不确定这是否是一个好的做法。也考虑过使用 dotenv,但我认为这不适用于生产环境中的安全性,仅适用于开发环境。我应该怎么做才能使部署的CloudFront网站能够以安全的方式访问UserPoolId和ClientId?您采取了哪些步骤?很想听听您的意见!
https://aws.amazon.com/blogs/networking-and-content-delivery/authorizationedge-how-to-use-lambdaedge-and-json-web-tokens-to-enhance-web-application-security/
它描述了如何将 Cognito 放入 CloudFront 的front,一旦用户登录,即可获取 Cognito 生成的 JWT 令牌,并通过 Lambda 函数(特别是 Lambda@Edge 部署)在最近的边缘位置对其进行验证.
一旦验证,请求将被转发到源,并且可以访问私有内容。