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

如何从Amplify获取可适配API Gateway与Cognito的有效访问令牌

Vue + Amplify 对接Cognito API网关令牌异常解决方案

问题核心

Amplify Auth默认生成的accessToken scope与API网关要求的授权范围不匹配,导致令牌校验失败。

修复步骤

  • 第一步:调整Amplify Auth初始化配置,显式声明需要的scope
    初始化Amplify时在Auth配置中添加目标scope,参考配置如下:
    import Amplify from 'aws-amplify';
    
    Amplify.configure({
      Auth: {
        region: '你的Cognito区域',
        userPoolId: '你的用户池ID',
        userPoolWebClientId: '你的用户池应用客户端ID',
        oauth: {
          domain: '你的Cognito托管UI域名',
          scope: ['phone', 'openid', 'profile', 'email'],
          redirectSignIn: '登录成功回调地址',
          redirectSignOut: '登出成功回调地址',
          responseType: 'code' // 或token,和你应用客户端设置的响应类型一致
        }
      }
    })
    
  • 第二步:校验Cognito用户池应用客户端配置
    登录AWS控制台进入对应Cognito用户池,打开「应用程序集成」→「应用客户端设置」,找到对应应用客户端,在OAuth 2.0 允许的范围中勾选phone、openid、profile、email,保存配置。
  • 第三步:重新生成有效令牌
    退出当前已登录的账户,重新走完整的登录授权流程,旧会话生成的令牌无法自动更新scope,必须重新登录获取新令牌。
  • 第四步:确认请求头格式正确
    调用API网关时,请求头Authorization的取值格式为Bearer ${accessToken.jwtToken},不要遗漏Bearer前缀,也不要误传idToken的jwtToken值。

可选补充配置

如果需要单独指定某次登录的scope,可在调用登录方法时显式传入scope参数:

// 托管UI登录场景
Auth.federatedSignIn({
  provider: 'COGNITO',
  scope: ['phone', 'openid', 'profile', 'email']
})

// 用户名密码登录场景
Auth.signIn(username, password, {
  scope: ['phone', 'openid', 'profile', 'email']
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:05