是否可以使用我的Android应用,Cognito用户池用户状态从FORCE_CHANGE_PASSWORD更改为CONFIRMED?或从RESET_REQUIRED到CONFIRMED? 如果是,我可以使用哪种API调用? 事实上,我将用户导入到Cognito,我找不到使用我的应用程序如何将它们转换为CONFIRMED状态的方法或示例。 感谢
答案 0 :(得分:6)
将Cognito用户池用户状态从FORCE_CHANGE_PASSWORD更改为CONFIRMED -
1.with aws-cli:
获取具有临时密码的会话令牌
aws cognito-idp admin-initiate-auth --user-pool-id us-west-2_xxxxxxx --client-id xxxxxxx --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=xxx,PASSWORD=xxx
使用会话令牌设置新密码
aws cognito-idp admin-respond-to-auth-challenge --user-pool-id xxxx --client-id xxxx --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=xxx,USERNAME=xxx --session session_key_from_previous_token
2.with aws-sdk:
获取具有临时密码的会话令牌
cognitoidentityserviceprovider.adminInitiateAuth(
{
AuthFlow: 'ADMIN_NO_SRP_AUTH',
ClientId: 'xxx',
UserPoolId: 'xxx',
AuthParameters:
{ USERNAME: 'xxx', PASSWORD: 'temporary_password' }
}, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
使用会话令牌设置新密码
var params = {
ChallengeName: 'NEW_PASSWORD_REQUIRED',
ClientId: 'xxxx',
ChallengeResponses: {
USERNAME: 'xxx',
NEW_PASSWORD: 'xxx'
},
Session: 'session_key_from_previous_token'
};
cognitoidentityserviceprovider.respondToAuthChallenge(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
注意:如果收到有关" 无法验证客户端的秘密哈希"的错误,请创建另一个没有机密的应用客户端并使用该功能
答案 1 :(得分:1)
要更改用户的状态,您只需要浏览相应的流程。要将FORCE_CHANGE_PASSWORD
更改为CONFIRMED
,您需要使用一次性密码并登录并更改密码。对于RESET_REQUIRED
,您需要使用忘记密码流,这会将状态更改为CONFIRMED
。