You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Cognito Web应用会话刷新与时长配置技术问询

Amazon Cognito Web会话相关问题解答

1. Amazon Cognito Web应用的会话刷新机制是如何处理的?

咱先从Cognito的令牌体系说起,Web应用里维持会话主要靠三类令牌:

  • Access Token:短期令牌,用来访问后端服务,默认有效期1小时(可配置)
  • ID Token:包含用户身份信息,用于前端身份校验,有效期和Access Token一致
  • Refresh Token:长期令牌,用来在Access Token过期后获取新的令牌,默认有效期30天(可配置)

会话刷新的核心流程是这样的:

  1. 前端会跟踪Access Token的过期时间(一般会提前5-10分钟触发刷新,避免令牌过期后请求失败)
  2. 当检测到令牌快过期时,前端向Cognito的/oauth2/token端点发起请求,参数包括:
    • grant_type=refresh_token
    • client_id(你的Web应用对应的Cognito App Client ID)
    • refresh_token(用户登录时获取的Refresh Token)
  3. 如果Refresh Token还在有效期内,Cognito会返回新的Access Token、ID Token,是否返回新的Refresh Token取决于你开启的Refresh Token滚动策略:
    • 如果启用了Refresh Token rotation,每次刷新都会生成新的Refresh Token,旧的立刻失效,有效期从刷新时刻重新计算
    • 如果未启用,Refresh Token的有效期始终是登录时设定的时长,不会延长
  4. 前端用新的令牌替换旧的,继续维持会话;如果Refresh Token也过期了,就只能引导用户重新登录

另外,如果你用AWS Amplify这类官方SDK开发,它会自动帮你处理令牌的存储、过期检测和刷新逻辑,不用手动写这些代码,省了不少事。

2. 若需设置会话最大生命周期为10分钟后自动登出,该如何配置?如何基于用户活动延长会话生命周期?

(1)设置会话最大生命周期10分钟自动登出

要实现“不管用户有没有活动,登录10分钟后必须登出”,需要调整Cognito用户池的App Client配置:

  • 登录AWS控制台,打开你的Cognito用户池
  • 进入App clients页面,找到Web应用对应的App Client,点击Edit
  • 在Token expiration区域:
    • 把Session timeout(会话最大时长)设为10分钟(单位是分钟,范围1-1440),这个参数控制从用户登录开始,不管有没有活动,到点就强制失效所有令牌
    • 把Refresh token expiration也设为10分钟,并且关闭Refresh token rotation(禁用滚动刷新),这样即使中途刷新令牌,也无法延长Refresh Token的有效期,确保10分钟后彻底无法刷新会话
  • 保存配置后,用户登录10分钟后,所有令牌都会过期,必须重新登录

(2)基于用户活动延长会话生命周期

如果想实现“用户有活动就延长会话,无活动10分钟后登出”,需要这么配置和开发:

  1. Cognito配置调整:
    • 还是在App Client的Token expiration区域:
      • 开启Refresh token rotation(滚动刷新),这样每次用Refresh Token刷新时,会生成新的Refresh Token,有效期从刷新时刻重新计算
      • 设置Idle timeout(无活动超时)为10分钟,这个参数控制用户多久无操作后,会话自动失效
      • Session timeout可以设成一个更长的时间(比如24小时),作为会话的最大生命周期上限
  2. 前端逻辑处理:
    • 监听用户的活动事件(比如鼠标移动、键盘输入、页面路由跳转等)
    • 当检测到用户活动时,检查当前Access Token的剩余有效期,如果不足(比如只剩5分钟),就主动触发令牌刷新请求(用Amplify的话可以调用Auth.currentSession()或者Auth.refreshSession()方法)
    • 每次刷新成功后,新的Refresh Token会延续会话有效期,只要用户持续有活动,会话就会一直延长,直到达到Session timeout的上限

举个例子:如果Idle timeout设为10分钟,Session timeout设为24小时,用户登录后每9分钟操作一次,会话就会一直延续;如果用户10分钟没操作,Refresh Token就会失效,无法再刷新,用户需要重新登录。

内容的提问来源于stack exchange,提问作者Ole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:46:17