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

为何AWS Cognito配置idToken有效期5分钟实际1天过期?

AWS Cognito 认证Cookie有效期与客户端配置不匹配修复方案

Cognito客户端配置界面截图
实际生成Cookie过期时间截图

这个问题是Cognito配置分层导致的常见坑,你在应用客户端板块设置的令牌有效期,不会自动覆盖Cognito其他模块的默认1天有效期,按以下步骤排查修复即可:

根因说明

Cognito的认证有效期配置是分模块独立生效的,没有全局联动:

  • 应用客户端页配置的访问令牌、ID令牌、刷新令牌有效期,仅对直接调用SDK发起令牌请求、不经过Cognito托管UI的场景生效
  • Cognito托管认证流程生成的会话Cookie,默认读取用户池全局的「应用程序会话持续时间」配置,这个参数的系统默认值就是1天,优先级高于单客户端的令牌配置
  • 如果React端用Amplify Auth做认证逻辑,Amplify内置的Cookie存储模块默认有效期也是1天,若不显式配置会直接覆盖Cognito返回的令牌有效期

修复步骤

  1. 先改用户池全局会话时长
    进入对应Cognito用户池控制台,打开「安全」→「托管UI」配置页(部分版本控制台入口在「用户池属性」的安全配置分组下),找到「应用程序会话持续时间」选项,将默认的1天调整为你需要的时长,这个参数最大支持设置14天,修改后保存等待配置生效即可。
  2. 对齐应用客户端的令牌参数
    回到对应应用客户端的配置页,确认ID令牌、访问令牌的有效期不超过上一步设置的全局会话时长。注意刷新令牌最长可设为365天,但全局会话过期后,未过期的刷新令牌也无法完成续期,不要把刷新令牌的有效期当成会话有效期。
  3. 显式配置Amplify的Cookie存储参数(使用Amplify的场景必做)
    不要依赖Amplify的默认Cookie配置,在React项目的Amplify初始化代码中显式指定过期时间,和Cognito侧配置保持一致:
    import { Amplify } from 'aws-amplify';
    
    Amplify.configure({
      Auth: {
        region: '你的Cognito所在区域',
        userPoolId: '你的用户池ID',
        userPoolWebClientId: '你的应用客户端ID',
        cookieStorage: {
          domain: window.location.hostname,
          path: '/',
          expires: 14, // 单位:天,和Cognito全局会话时长对齐
          secure: process.env.NODE_ENV === 'production',
          sameSite: 'strict'
        }
      }
    });
    
  4. 验证配置
    清理浏览器当前域名下所有Cognito相关的历史Cookie,退出登录后重新走一遍认证流程,再检查Cookie的过期时间即可。

补充说明:如果开启了第三方社交登录(Google、Facebook、企业SAML IdP等),需要额外确认第三方身份源的会话有效期,最终Cookie有效期会取Cognito配置和第三方IdP配置中的更短值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:57:17