【发布时间】:2021-05-05 11:49:21
【问题描述】:
我在我的应用程序中使用 AWS Cognito 进行身份验证。 Cognito 提供完全的客户端身份验证。但是,我们需要将凭据存储在可从浏览器访问的 .env 文件中。
如果我正在构建企业应用程序并且安全性对我很重要,那么使用 AWS Cognito 进行身份验证是否安全?
【问题讨论】:
标签: authentication amazon-cognito
我在我的应用程序中使用 AWS Cognito 进行身份验证。 Cognito 提供完全的客户端身份验证。但是,我们需要将凭据存储在可从浏览器访问的 .env 文件中。
如果我正在构建企业应用程序并且安全性对我很重要,那么使用 AWS Cognito 进行身份验证是否安全?
【问题讨论】:
标签: authentication amazon-cognito
对于 AWS cognito,身份验证发生在服务器端。不在客户端。在客户端,我们正在为用户创建通过其凭证登录的机会,然后凭证将被发送到 AWS Cognito 进行身份验证。这会导致接受或拒绝。
【讨论】:
Cognito 本身是一种服务,您可以在其上构建安全的身份基础 - 但不是您提议的方式。
将静态凭据存储到 3rd 方 API 可以被(未经)身份验证的用户轻松访问的地方是一种糟糕的安全做法。
Cognito 的安全性不是您最大的问题,我的建议是首先为您的静态凭据找到更好的解决方案。有时无法避免 API 密钥等静态凭据,但您不应该将它们暴露给最终用户。将它们存储在 AWS Secrets Manager 或 Systems Manager Parameter Store 中,并在需要时检索它们。尽可能仅将它们存储在内存中,并且永远不要将它们发送给您的客户。
【讨论】:
env 文件(例如React)。任何最终用户都可以访问它们。
secret keys 带给最终用户。通过使用这些密钥,任何用户都可以登录系统。