【问题标题】:Access Key to Replace Authentication for AWS用于替换 AWS 身份验证的访问密钥
【发布时间】:2018-12-27 07:31:06
【问题描述】:

我们正在 AWS 中开发一个 Web 应用程序,将其用户存储在 Cognito 中。作为其中的一部分,我们需要与现有的桌面应用程序集成,其中客户端的管理员可以为网站创建一个只读用户,用于从桌面应用程序发送的数据。

由于此只读用户要求,必须有一个用户与桌面应用程序安装的每个实例的身份验证相关联。这没问题,因为我们很高兴桌面应用程序的所有本地用户都将他们的数据记录到 Web 应用程序中的同一位置。棘手的部分是我们无法将用户名和密码作为桌面应用最终用户的常识。

有人建议我们可以使用基于令牌的访问来允许桌面应用程序访问我们的 API,但这些都是有时间限制的,我们无法让用户每天重新进行身份验证。但是,另一个建议是创建我们自己的“密钥”,其中包含 Cognito 用户的用户名和密码,以便应用程序能够使用它,例如使用可用的解密密钥加密用户名和密码桌面应用程序,以便它可以作为该用户本身进行身份验证,而最终用户无法访问帐户详细信息。

我想知道目前是否有比我们目前可用的更好的处理此类需求的最佳实践方法。

总结一下:

  • 我们有一个带有 Cognito 身份验证的 AWS API
  • 我们有一个桌面应用程序需要访问 API
  • 我们不能让用户知道用于访问 API 的帐户的详细信息
  • 我们需要一种方法来提供一个密钥,该密钥允许桌面应用程序通过 API 对自身进行身份验证,这样令牌就不需要随着时间的推移而刷新

感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services authentication amazon-cognito


    【解决方案1】:

    不幸的是这个要求:

    “我们需要一种方法来提供一种密钥,以允许桌面应用程序通过 API 对自身进行身份验证,这样令牌就不需要随着时间的推移而刷新”

    Cognito 将无法实现。假设您使用的是 Cognito 用户池,则通过身份验证获得的 id 和访问令牌仅在 1 小时内有效,那么它们必须使用刷新令牌进行刷新。刷新令牌可以配置为在很长一段时间内有效(甚至几年),因此您可以设置一个流程,其中:

    • 应用程序通过 Cognito 验证自己一次
    • 获取一个长期有效的刷新令牌
    • 丢弃原始的加密用户名/密码
    • 每小时使用刷新令牌获取新的 ID/访问令牌

    不过,您必须将刷新令牌存储在客户端的某个地方。并且可能有一个支持机制,如果刷新令牌丢失,可以在客户端上重新启动此过程。

    如果您使用 Cognito 用户池,您将不得不进行令牌刷新。如果您使用 Cognito 身份池,情况也是如此 - 身份池提供的 AWS 凭证仅在 1 小时内有效,然后必须刷新它们。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多