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

Node中刷新Cognito身份凭证时出现404错误求助

解决Cognito IdentityCredentials refresh时的404错误

我之前在Node环境对接Cognito的时候也碰到过一模一样的404问题,折腾了好一阵才找到原因,结合我的排查经验,给你几个针对性的方向:

  • 确认AWS区域与身份池配置匹配
    一定要确保AWS.config.region设置为你的Cognito身份池所在的区域(比如us-west-2)。如果区域不匹配,SDK会请求错误的Cognito Identity端点,直接导致404。可以在初始化AWS的时候显式设置:

    AWS.config.update({ region: '你的身份池区域' });
    
  • 检查身份池的身份提供者配置
    登录AWS控制台,进入你的Cognito身份池,在“认证提供商”里找到Cognito用户池的配置项:

    • 确认已经添加了你的User Pool ID和对应的App Client ID
    • 确保这个身份提供者的状态是启用的
      如果没开启或者配置错误,身份池无法识别你从User Pool拿到的token,会导致刷新请求失败,表现为404。
  • 验证CognitoIdentityCredentials的参数格式
    创建凭证时的Logins对象键名格式必须严格遵循cognito-idp.<区域>.amazonaws.com/<UserPoolId>,值是authenticateUser成功后拿到的idToken。举个正确的例子:

    const session = cognitoUser.getSession(); // 或者从onSuccess回调里的result获取
    const credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'us-west-2:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
      Logins: {
        'cognito-idp.us-west-2.amazonaws.com/us-west-2_XXXXXXXXX': session.getIdToken().getJwtToken()
      }
    });
    

    键名里的区域和UserPoolId如果写错,SDK会请求不存在的验证端点,直接返回404。

  • 升级AWS SDK版本
    部分旧版本的AWS SDK在Node环境下处理Cognito Identity的刷新逻辑存在bug,建议升级到最新版的aws-sdk:

    npm install aws-sdk@latest
    

    如果你已经在使用AWS SDK v3,确保@aws-sdk/client-cognito-identity和相关依赖也是最新版本。

  • 排查网络代理问题
    如果你的Node服务运行在有代理的环境中,AWS SDK可能没有正确走代理,导致请求无法到达Cognito的官方端点。可以尝试在无代理环境下测试,或者手动配置代理:

    AWS.config.update({
      httpOptions: {
        proxy: 'http://your-proxy-address:port'
      }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:21:33