Node中刷新Cognito身份凭证时出现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

