Amazon web services 无法通过AWS SDK确认用户注册
JS SDK的AWS文档说明: 强制更改密码 用户帐户已确认,用户可以使用临时密码登录,但在首次登录时,用户必须先将其密码更改为新值,然后再执行其他操作 管理员或开发人员创建的用户帐户在此状态下启动 但是如果对于这样的用户,我尝试调用SDK的Amazon web services 无法通过AWS SDK确认用户注册,amazon-web-services,aws-sdk,amazon-cognito,amazon-iam,Amazon Web Services,Aws Sdk,Amazon Cognito,Amazon Iam,JS SDK的AWS文档说明: 强制更改密码 用户帐户已确认,用户可以使用临时密码登录,但在首次登录时,用户必须先将其密码更改为新值,然后再执行其他操作 管理员或开发人员创建的用户帐户在此状态下启动 但是如果对于这样的用户,我尝试调用SDK的forgotPassword方法,它会错误地说:密码不能在当前状态下重置 那么,如何从我的网站完成用户注册(由IAM中的管理员创建)。应该调用哪种SDK方法?在预注册触发器上设置自动验证Lambda触发器将允许用户处于已确认状态,这可能会使您到达您要查找的点
forgotPassword
方法,它会错误地说:密码不能在当前状态下重置
那么,如何从我的网站完成用户注册(由IAM中的管理员创建)。应该调用哪种SDK方法?在预注册触发器上设置自动验证Lambda触发器将允许用户处于已确认状态,这可能会使您到达您要查找的点
Lambda->Node.js
给它一个合适的标题
在代码中输入以下值:
exports.handler = (event, context, callback) => {
// Confirm the user
event.response.autoConfirmUser = true;
// Set the email as verified if it is in the request
if (event.request.userAttributes.hasOwnProperty("email")) {
event.response.autoVerifyEmail = true;
}
// Return to Amazon Cognito
callback(null, event);
};
拯救
然后在“常规设置”->“触发器”->“预注册”中选择“新建触发器”我们可以这样做,
- 我之前回答了mongodb关于aws cogniton迁移的问题
- 一步一步地进行。我解释说,管理员创建的用户需要更改密码(忘记密码),但还有另一种方法。看看我的答案
我的回答中的一些内容,
AdminCreateUser:
- 使用AWS管理控制台或调用AdminCreateUser API创建新的用户配置文件。指定临时密码或允许Amazon Cognito自动生成一个临时密码
- 指定是否为新用户将提供的电子邮件地址和电话号码标记为已验证。通过AWS管理控制台为新用户指定自定义SMS和电子邮件邀请消息
- 指定邀请消息是通过SMS、电子邮件还是同时通过两者发送
成功创建用户后
- 使用相同的用户凭据对用户进行身份验证使用:SDK调用InitiateAuth(用户名,user\u SRP\u AUTH)
- initateAuth成功后,AmazonCognito返回带有Salt&Secret块的密码验证挑战
- 使用RespondToAuthChallenge(用户名、密码\u验证器)
- AmazonCognito返回新的\u密码\u所需挑战以及当前和所需的属性
- 系统将提示用户输入新密码以及所需属性的任何缺失值
- 调用RespondToAuthChallenge(用户名,)
- 成功更改密码后,用户可以使用管理员创建的相同凭据登录
请参阅:change\u password(**kwargs)更改调用此操作的IAM用户的密码。AWS帐户根用户密码不受此操作的影响。要更改其他用户的密码,请参阅UpdateLoginProfile。有关修改密码的更多信息,请参阅IAM用户指南中的管理密码。
来自AWS文档:change_password方法显然只适用于经过身份验证的用户,而不是第一次使用的用户。啊,是的……我已经通过了此线程。这是否意味着,没有cli就无法批准用户注册。如果管理员创建了一个用户,他只能确认该用户。看起来很奇怪。是吗?是的,看起来是这样。至少没有直接的方法来验证用户。尽管我可以看到向aws提出的功能要求。我会尝试获取更多信息。