【以下的问题经过翻译处理】 您好,我创建了一个迁移用户 Lambda 触发器 来自动注册来自登录后将 MySQL DB 放入 Cognito 池中。
我正在使用 Cognito 提供的托管 UI,并且触发器正确执行,它验证用户凭据并发回 context.succeed(event);
,但我每次在 UI 中收到错误响应不正确的用户名或密码。
并且用户未在 Cognito 池中正确创建。
此 Lambda 函数之前按预期工作,我能够成功迁移用户,但它突然开始失败。
它是这样的:
exports.handler = async (event, context, callback) => {
变种用户;
如果 (event.triggerSource == "UserMigration_Authentication") {
// 使用现有用户目录服务对用户进行身份验证
user = await authenticateUser(event.userName, event.request.password);
如果(用户){
事件.response.userAttributes = {
“电子邮件”:user.email,
“email_verified”:“真”
};
event.response.finalUserStatus = "确认";
event.response.messageAction = "抑制";
上下文成功(事件);
} 别的 {
// 将错误返回给 Amazon Cognito
callback("密码无效");
}
} else if (event.triggerSource == "UserMigration_ForgotPassword") {
// 在现有用户目录服务中查找用户
user = await lookupUser(event.userName);
如果(用户){
事件.response.userAttributes = {
“电子邮件”:user.email,
// 需要启用密码重置代码才能发送给用户
“email_verified”:“真”
};
event.response.messageAction = "抑制";
上下文成功(事件);
} 别的 {
// 将错误返回给 Amazon Cognito
callback("未找到用户");
}
} 别的 {
// 将错误返回给 Amazon Cognito
回调(“无效的触发源”+ event.triggerSource);
}
};
这是用户成功通过身份验证时发回的事件示例:
{
版本:'1',
triggerSource: 'UserMigration_Authentication',
区域:'us-xxx-x',
userPoolId: 'us-xxx-x_xxxXxXX',
用户名:'qa_tests+email@email.com',
来电上下文:{
awsSdkVersion: 'aws-sdk-未知-未知',
clientId: '79vm3b2pogsddtl9udq5unrg'
},
请求:{密码:'密码!',validationData:null,userAttributes:null},
回复: {
用户属性:{
电子邮件:'qa_tests+email@email.com',
email_verified: 'true'
},
forceAliasCreation:空,
enableSMSMFA:空,
finalUserStatus: '已确认',
messageAction: '抑制',
desiredDeliveryMediums:空
}
}
authenticateUser
是从 MySQL 中获取用户并验证凭据的函数
lookupUser
是从 MySQL 中获取用户的函数。
我无法弄清楚问题是什么,特别给出了错误响应“用户名或密码不正确”。当电子邮件和密码都正确时。
这个 Lambda 以前工作正常,最近才开始失败,我想不出原因,我能记得的唯一变化是在池中添加和删除客户端应用程序。