更改cognito用户池用户状态

时间:2016-11-02 14:57:47

标签: amazon-cognito

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

2 个答案:

答案 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