【问题标题】:AWS Cognito Identity Pool: AWS Credentials Expiration / RenewalAWS Cognito 身份池:AWS 凭证过期/续订
【发布时间】:2020-04-12 11:46:35
【问题描述】:

我正在构建一个由 AWS 支持的站点,从广义上讲,它执行以下操作:

  1. 根据 Cognito 用户池(该池由第三方 SAML 提供商支持)对用户进行身份验证,并为其提供令牌。
  2. 使用 Cognito 身份池授予用户凭据以用于其他服务。
  3. 允许用户使用上面的凭据直接从前端 S3 客户端执行一系列长时间运行的 S3 上传。

我试图弄清我必须与令牌和凭据进行的交互。我很清楚我与the tokens I get from the user pool 有什么关系:

  1. 我可以使用它们来调用身份池,并获取可用于 S3 的 AWS 凭证。
  2. 如果其他令牌在我完成之前过期,我可以使用刷新令牌来刷新它们。

这些令牌的到期详细信息在上面的链接中。文档对上述所有内容都很清楚,但我对身份池凭据功能感到困惑,并且无法在文档中找到有关以下问题的解释:

  1. 当我从我的身份池中获得 AWS 凭证时,它们会在过期前持续多久?如何配置此值,以便我的 CognitoIdentityCredentials 为我提供具有所需到期时间的凭据?
  2. 如果我的 AWS 凭证在我完成工作之前过期,那么尝试 1. 刷新凭证和 2. 如果失败,刷新用户池令牌,以便能够完成操作干净利落,无需让用户重新启动?

【问题讨论】:

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


    【解决方案1】:

    用户池仅用于用户管理。用户与 AWS 服务和资源的任何交互都是通过身份池完成的。您通过身份池分配角色。 回答您的 2 个具体问题:

    1. 令牌持续 1 小时。此持续时间是固定的,无法更改。
    2. 如果您的令牌过期,您可以使用刷新令牌来生成新的身份和访问令牌。但是,大多数前端 sdk(甚至是 javascript)都会自动为您执行此操作。您不必担心令牌过期。事实上,如果你有这个要求,你将不得不强制使它们无效。

    【讨论】:

    • 据我所知,在基于浏览器的应用程序上使用刷新令牌是否不安全
    • @ArunK 是的,这不是好的做法。最好的方法是使用授权码授权,而不是向前端发送任何令牌。前端的 Amplify 库也可以处理授权码授予。
    • 感谢您的回复 - 关于第 1 点:1hr 是否适用于用户池身份验证令牌和 id 池 aws 令牌?关于第 2 点:此自动刷新是否包括用户池身份验证令牌和 id 池 aws 令牌?如果我的分段上传时间超过 1 小时会怎样?
    • 是的,auth 和 id 令牌都有 1 小时的有效期。刷新令牌有更多,您可以控制它的持续时间。至于自动刷新,令牌会在使用会话对象与它们进行任何调用之前刷新,因此即使使用分段上传,您也不会遇到任何令牌过期问题。
    猜你喜欢
    • 2021-01-05
    • 2018-04-05
    • 2016-08-27
    • 2018-08-31
    • 2018-01-29
    • 2020-04-20
    • 2019-10-31
    • 2017-12-03
    • 2016-06-25
    相关资源
    最近更新 更多