[amazon-web-services] 사용자 상태 FORCE_CHANGE_PASSWORD를 변경하는 방법은 무엇입니까?

AWS Cognito를 사용하여 테스트 목적으로 더미 사용자를 만들고 싶습니다.

그런 다음 AWS 콘솔 을 사용하여 이러한 사용자를 생성하지만 사용자의 상태는로 설정됩니다 FORCE_CHANGE_PASSWORD. 이 값을 사용하면이 사용자를 인증 할 수 없습니다.

이 상태를 변경할 수있는 방법이 있습니까?

UPDATE CLI에서 사용자 생성시 동일한 동작



답변

불편을 드려 죄송합니다. 사용자를 생성하고 직접 인증 할 수있는 1 단계 프로세스가 없습니다. 관리자가 사용자가 직접 사용할 수있는 암호를 설정할 수 있도록 향후이를 변경할 수 있습니다. 현재로서는 AdminCreateUser앱을 사용 하거나 사용자를 등록하여 사용자를 생성 할 때 사용자 가 로그인 할 때 비밀번호를 변경하도록하거나 사용자가 이메일 또는 전화 번호를 확인하여 사용자 상태를로 변경하도록하는 추가 단계가 필요합니다 CONFIRMED.


답변

오랜만이라는 것을 알고 있지만 이것이이 게시물을 보는 다른 사람들에게 도움이 될 것이라고 생각했습니다.

AWS CLI를 사용하여 사용자 암호를 변경할 수 있지만 이는 다단계 프로세스입니다.


1 단계 : 원하는 사용자에 대한 세션 토큰을 가져옵니다.

aws cognito-idp admin-initiate-auth --user-pool-id %USER POOL ID% --client-id %APP CLIENT ID% --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=%USERS USERNAME%,PASSWORD=%USERS CURRENT PASSWORD%

오류에 대한이 반환하는 경우 Unable to verify secret hash for client, 비밀 않고 다른 응용 프로그램 클라이언트를 생성 하고 클라이언트 ID를 사용합니다.

2 단계: 1 단계가 성공하면 챌린지 NEW_PASSWORD_REQUIRED, 다른 챌린지 매개 변수 및 사용자 세션 키로 응답 합니다. 그런 다음 두 번째 명령을 실행하여 챌린지 응답을 실행할 수 있습니다.

aws cognito-idp admin-respond-to-auth-challenge --user-pool-id %USER POOL ID% --client-id %CLIENT ID% --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=%DESIRED PASSWORD%,USERNAME=%USERS USERNAME% --session %SESSION KEY FROM PREVIOUS COMMAND with ""%

Invalid attributes given, XXX is missing형식을 사용하여 누락 된 속성 전달에 대한 오류가 발생하는 경우userAttributes.$FIELD_NAME=$VALUE

위의 명령은 유효한 인증 결과와 적절한 토큰을 반환해야합니다.


중요 : 이 기능이 작동하려면 Cognito 사용자 풀 에 기능이 구성된 앱 클라이언트 가 있어야 ADMIN_NO_SRP_AUTH합니다 ( 이 문서의 5 단계 ).


답변

이것은 마침내 AWSCLI에 추가되었습니다 : https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html

다음을 사용하여 사용자의 비밀번호를 변경하고 상태를 업데이트 할 수 있습니다.

aws cognito-idp admin-set-user-password --user-pool-id <your user pool id> --username user1 --password password --permanent

이를 사용하기 전에 다음을 사용하여 AWS CLI를 업데이트해야 할 수 있습니다.

pip3 install awscli --upgrade


답변

onSuccess: function (result) { ... },로그인 기능 내 에서이 코드를 추가하십시오 . 그러면 사용자는 CONFIRMED 상태가됩니다 .

newPasswordRequired: function(userAttributes, requiredAttributes) {
    // User was signed up by an admin and must provide new
    // password and required attributes, if any, to complete
    // authentication.

    // the api doesn't accept this field back
    delete userAttributes.email_verified;

    // unsure about this field, but I don't send this back
    delete userAttributes.phone_number_verified;

    // Get these details and call
    cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
}


답변

다음 과 같이 사용자 FORCE_CHANGE_PASSWORD를 호출 respondToAuthChallenge()하여 해당 사용자 상태 를 변경할 수 있습니다 .

var params = {
  ChallengeName: 'NEW_PASSWORD_REQUIRED',
  ClientId: 'your_own3j6...0obh',
  ChallengeResponses: {
    USERNAME: 'user3',
    NEW_PASSWORD: 'changed12345'
  },
  Session: 'xxxxxxxxxxZDMcRu-5u...sCvrmZb6tHY'
};

cognitoidentityserviceprovider.respondToAuthChallenge(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

그런 다음 콘솔에 user3상태가 CONFIRMED.


답변

여전히 이것으로 싸우고 있는지 확실하지 않지만 테스트 사용자를 만들기 위해서만 다음 awscli과 같이 사용했습니다 .

  1. cognito-idp에서 sign-up 하위 명령을 사용하여 사용자를 만듭니다.
aws cognito-idp sign-up \
   --region %aws_project_region% \
   --client-id %aws_user_pools_web_client_id% \
   --username %email_address% \
   --password %password% \
   --user-attributes Name=email,Value=%email_address%
  1. admin-confirm-sign-up을 사용하여 사용자 확인
aws cognito-idp admin-confirm-sign-up \
--user-pool-id %aws_user_pools_web_client_id% \
--username %email_address%


답변

콘솔에서 관리자로 상태를 변경하려는 경우. 그런 다음 사용자를 만든 후 아래 단계를 따릅니다.

  1. Cognito에서 이동-> “사용자 풀 관리”->
  2. 앱 통합 섹션에서 “앱 클라이언트 설정”으로 이동합니다.
  3. 아래 항목을 확인하십시오 .i) Cognito 사용자 풀 ii) 인증 코드 부여 iii) 암시 적 부여 iv) 전화 v) 이메일 vi) openid vii) aws.cognito.signin.user.admin viii) 프로필
  4. 애플리케이션의 콜백 URL을 입력하십시오. 예를 들어 https://google.com을 입력했는지 확실하지 않은 경우 나중에 실제 콜백 URL로 변경할 수 있습니다.
  5. 변경 사항 저장을 클릭하십시오.
  6. 변경 사항이 저장되면 “호스팅 된 UI 시작”링크를 클릭합니다.
  7. 새로 생성 된 사용자의 자격 증명을 입력합니다.
  8. 새 자격 증명으로 암호를 재설정하고 사용자와 동일하게 공유하십시오.

2 단계

34 5 6 단계

7 단계

8 단계