更改cognito用户池用户状态

Fel*_*500 4 amazon-cognito

是否可以将我的Android应用程序,Cognito用户池用户状态从FORCE_CHANGE_PASSWORD更改为CONFIRMED?或从RESET_REQUIRED到CONFIRMED?如果是,我可以使用哪种API调用?事实上,我将用户导入到Cognito,我找不到使用我的应用程序如何将它们转换为CONFIRMED状态的方法或示例.谢谢

Mah*_*man 9

要将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
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用会话令牌设置新密码

    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
    
    Run Code Online (Sandbox Code Playgroud)

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
    }); 
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用会话令牌设置新密码

    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
    });
    
    Run Code Online (Sandbox Code Playgroud)

注意:如果收到有关" 无法验证客户端的秘密哈希 "的错误,请创建另一个没有机密的应用程序客户端并使用它.


Ion*_*ian 4

要更改用户的状态,您只需完成相应的流程即可。要更改FORCE_CHANGE_PASSWORDCONFIRMED,您需要使用一次性密码并登录并更改密码。对于RESET_REQUIRED,您需要使用“忘记密码”流程,这会将状态更改为CONFIRMED