在 Angular 应用程序中处理 AWS 凭证



我有一个使用以下 AWS 凭证的 Angular 应用程序:

awsAccessKeyId
awssecretAccessKey
awsBucket
awsEndpointUrl
awsRegion
awsKey

我想将它们存储在应用程序的 environment.ts 文件中,但被告知这是一个坏主意。我还能在哪里存储它们?我在考虑Firebase,但只允许通过API调用与具有特定UID的经过身份验证的用户一起阅读文档。

正如您所说,将 AWS 凭证存储在前端 JavaScript 文件中是不安全的,因为任何可以访问您网站的人都可以公开读取它。

我建议你开发一个服务器端API,并从你的角度应用程序调用API。该 API 用于与 AWS 服务通信。这样,您就不必将 aws 凭证存储在静态网站中。

使用接口

创建一个 API 以与 AWS 服务通信。

用户登录

角度应通过登录进行保护,以允许用户根据身份验证服务(例如 Amazon Cognito(或您自己的身份验证 API 进行身份验证。用户成功登录后,身份验证服务将返回某种token。您可以将此令牌存储在浏览器的Local Stoage中。

调用您的 API

调用 API 终结点时,需要提供此令牌。API 应在允许调用继续之前验证令牌。

参考: https://www.techopedia.com/definition/27674/html5-local-storage

希望这有帮助。

不建议将此类凭据存储在环境文件中,因为通常环境文件会提交到 git 中。
1. 如果存储库是公共的,那么您的所有凭据都可供公共(误(使用。
2. 如果存储库是私有的,那么也可能会出现这样的情况,即多个人在同一个项目上工作,但只有极少数人需要这些凭据,而不是每个人都需要这些凭据。
3. 在您的情况下,如果您在前端获取 AWS 凭证,那么任何人都可以从网络选项卡(最简单的方法(获取这些凭证,并且能够(误(使用它。

您应该如何/在哪里存储此类凭据取决于您的使用案例。不可能有一个适合每个人需要的答案。尽管很少有好的方法:
1.将环境文件保留在存储库之外,并在需要时将其分发给开发人员。
2.就像您提到的,将其存储在单独的位置并在运行时获取它们。
3. 如果您有后端,则不要在前端获取凭据然后访问云服务,而是将凭据存储在后端,并通过后端访问云服务。(推荐(

还有许多其他方法可以解决这个问题,但它们也取决于这些项目。

最新更新