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

如何在Amplify JS中撤销AWS Cognito会话令牌(尤其是刷新令牌)

AWS Amplify JS 对接 Cognito 场景下的令牌撤销方案(含Refresh Token作废)

前置配置检查

  • 先去Cognito用户池的对应应用客户端设置页,打开令牌撤销开关,否则所有服务端撤销接口调用都不会生效。
  • 明确Cognito的令牌逻辑:Access Token、ID Token是无状态JWT,本身不支持远程实时作废,默认只能等自身有效期(通常1小时)到期自动失效;会话持久化的核心是Refresh Token,只要在服务端把Refresh Token作废,客户端就无法再续期拿到新的有效令牌,从根源上终止会话。

不同版本Amplify JS的实现代码

v6(当前主流稳定版)

  1. 全设备全局撤销(作废当前用户名下所有Refresh Token)
    直接调用带global: true参数的登出方法即可,这个方法会主动请求Cognito的GlobalSignOut接口,把当前用户关联的所有Refresh Token标记为已撤销,同时自动清理浏览器/端侧本地存储的会话缓存。

    import { signOut } from 'aws-amplify/auth';
    
    // 注意必须传global: true,否则只会清本地缓存,不会动服务端的Refresh Token
    await signOut({ global: true });
    

    踩坑提醒:如果不传这个参数,默认signOut只会删本地存的令牌,一旦Refresh Token之前被泄露,第三方依然可以拿它换发新的有效令牌,等于没做真正的撤销。

  2. 仅撤销当前会话的Refresh Token(不影响其他设备登录状态)
    Amplify没有封装单独的单Refresh Token撤销方法,可以直接请求Cognito的OAuth2撤销端点实现,操作完手动清本地缓存即可:

    import { fetchAuthSession, signOut } from 'aws-amplify/auth';
    
    // 先从当前会话取出Refresh Token
    const session = await fetchAuthSession();
    const currentRefreshToken = session.tokens.refreshToken.toString();
    
    // 调用撤销接口
    await fetch(`https://<你的Cognito用户池服务端点>/oauth2/revoke`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      body: new URLSearchParams({
        token: currentRefreshToken,
        client_id: '<你的Cognito应用客户端ID>'
      })
    });
    
    // 接口调用成功后清理本地会话缓存
    await signOut();
    

v5(旧版本)

v5的全局撤销逻辑和v6类似,只是API入口在Auth对象下:

import { Auth } from 'aws-amplify';

// 传global: true触发服务端全量Refresh Token撤销
await Auth.signOut({ global: true });

单Refresh Token撤销的逻辑和v6完全一致,直接调用/oauth2/revoke端点即可。

常见注意事项

  • 已经签发的Access Token、ID Token无法通过撤销Refresh Token实时失效,在自身过期前依然可以通过校验。如果业务对安全等级要求极高,需要在后端服务层额外增加令牌黑名单逻辑做实时拦截。
  • 开启令牌撤销功能后,Cognito签发的Access Token会新增origin_jti字段,你可以基于这个字段做已撤销令牌的匹配校验。
  • 如果你的应用接入了社交登录、SAML联邦身份,撤销Refresh Token的逻辑不会影响联邦身份提供方侧的会话状态,需要单独处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:48:14