Cognito重置密码报错:Invalid attributes given, name is missing 原因排查
错误成因及修复方案
错误原因
你的AWS Cognito用户池配置了必填的用户属性(比如name),但在处理NEW_PASSWORD_REQUIRED认证挑战时,你只在ChallengeResponses中提供了USERNAME和NEW_PASSWORD,没有提交这些必填属性,因此触发了InvalidParameterException。
当用户处于密码重置状态(比如首次登录、管理员强制重置密码),如果用户池设置了必须填写的用户属性,Cognito会要求在完成密码重置的同时提交这些属性,否则会返回“缺少属性”的错误。
修复代码
修改RespondToAuthChallengeCommand的ChallengeResponses参数,添加用户池要求的必填属性,比如如果name是必填项,代码调整如下:
const command = new RespondToAuthChallengeCommand({ ClientId: process.env.CLIENT_ID, ChallengeName: ChallengeNameType.NEW_PASSWORD_REQUIRED, ChallengeResponses: { USERNAME: email, NEW_PASSWORD: newPassword, name: "用户的实际姓名" // 替换为用户提供的name值,或从event参数中获取 }, Session: session, });
注意:属性名必须和用户池配置的属性名称完全一致,比如如果用户池要求的是given_name(名)和family_name(姓),则需要分别提交这两个字段,而不是name。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

