AWS CLI를 사용하여 Amazon Cognito에서 사용자 암호를 재설정하려면 어떻게 해야 하나요?

4분 분량
0

사용자가 Amazon Cognito에서 암호를 재설정하거나 변경할 수 있도록 AWS Command Line Interface(AWS CLI)를 사용하는 방법을 배우고 싶습니다.

해결 방법

Amazon Cognito 암호는 AWS CLI를 사용하여 재설정하거나 변경할 수 있습니다. Amazon Cognito 관리자는 암호 재설정 플로우를 시작하여 사용자 암호를 재설정할 수 있습니다. Amazon Cognito 사용자가 직접 암호를 변경하거나 Amazon Cognito 관리자가 사용자 암호를 임시 또는 영구적으로 설정할 수 있습니다.

사용자 암호 재설정

관리자와 사용자는 다음 단계를 수행하여 암호 재설정 절차를 시작합니다.

1.    관리자가AdminResetUserPassword API를 호출합니다.

중요: 이 AWS Command Line Interface(AWS CLI) 명령 예시에서 예시 문자열의 모든 인스턴스를 사용자 값으로 바꾸세요. (예를 들어, **"example_user_pool_id"**를 사용자 풀 ID로 바꿉니다.)

admin-reset-user-password 명령 예시:

aws cognito-idp admin-reset-user-password --user-pool-id example_user_pool_id --username example_user_name

2.    사용자의 암호가 재설정되고 사용자가 로그인을 시도하면 PasswordResetRequiredException 예외가 발생합니다. 그러면 사용자는 암호 재설정 플로우로 리디렉션됩니다.

참고: 암호 재설정 플로우는 암호 분실 플로우와 동일합니다.

3.    이메일 주소 또는 전화번호가 확인된 사용자는 암호를 재설정하는 데 필요한 확인 코드가 포함된 메시지를 받게 됩니다.

확인되지 않은 사용자 속성의 경우

1.    사용자에게 확인된 이메일 주소 또는 전화번호가 없는 경우, 관리자는 AdminResetUserPassword API를 호출하는 동안 다음과 같은 오류 메시지를 받게 됩니다.

An error occurred (InvalidParameterException) when calling the AdminResetUserPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number

2.    이 문제를 해결하기 위해 관리자는 AdminUpdateUserAttributes API를 호출하고email_verified 또는phone_number_verified 속성을true로 설정합니다.

admin-update-user-attributes 명령 예시:

aws cognito-idp admin-update-user-attributes --user-pool-id example_user_pool_id --username example_user_name --user-attributes Name="email_verified",Value="true"

3.    사용자가 확인 코드를 받지 못한 경우, 모범 사례를 따라 문제를 해결하세요.

사용자가 암호 분실 플로우를 완료하는 경우

1.    확인 코드를 받은 후 사용자는 ConfirmForgotPassword API를 호출하여 새 암호를 생성할 수 있습니다.

confirm-forgot-password 명령 예시:

aws cognito-idp confirm-forgot-password --client-id example_client_id --username example_user_name --confirmation-code example_code --password example_new password

사용자 암호 변경

사용자가 직접 암호를 변경할 수 있으며 관리자는 사용자 암호를 임시 또는 영구적으로 설정할 수 있습니다. 사용자 또는 관리자는 다음 단계를 수행하여 사용자 암호를 변경합니다.

사용자가 사용자 암호 변경:

1.    사용자가 ChangePassword API를 호출합니다. 사용자가 ChangePassword API를 호출하려면 Amazon Cognito에서 발급한 유효한 액세스 토큰이 있어야 합니다.

change-password 명령 예시:

aws cognito-idp change-password --previous-password example_old_password --proposed-password example_new_password --access-token valid_access_token

관리자가 영구적인 새 사용자 암호를 생성합니다.

1.    관리자는 AdminSetUserPassword API를 호출하여 새 영구 암호를 생성합니다.

사용자 암호를 영구적으로 변경하기 위한 admin-set-user-password 예시:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_new_password --permanent

2.    관리자가 사용자 암호를 영구적으로 변경한 후 사용자는 새 암호를 사용하여 애플리케이션에 로그인할 수 있습니다.

관리자가 임시 새 사용자 암호 생성

1.    관리자가 AdminSetUserPassword API를 호출하여 새 임시 암호를 생성합니다.

사용자가 임시로 암호를 변경하기 위한 admin-set-user-password 예시:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_temporary_password --no-permanent

관리자가 사용자 암호를 임시 암호로 변경할 경우, 사용자는 추가 단계를 수행해야 합니다.

2.    임시 암호로 AdminSetUserPassword API를 호출한 후, 사용자의 상태가 'FORCE_CHANGE_PASSWORD'로 변경됩니다. 임시 암호로 InitiateAuth API를 호출하여 로그인을 시도하는 사용자는 'NEW_PASSWORD_REQUIRED' 인증 챌린지를 받게 됩니다.

initiate-auth 명령 예시:

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user_name,PASSWORD=example_temporary_password --client-id example_client_id

결과

{
  "ChallengeName": "NEW_PASSWORD_REQUIRED",
  "Session": "AYA......",
  "ChallengeParameters": {
    "USER_ID_FOR_SRP": "544.....",
    "requiredAttributes": "[]",
    "userAttributes": "{\"email_verified\":\"true\",\"email\":\"user@example.com\"}"
  }
}

참고: 세션 토큰의 유효성은 앱 클라이언트의 인증 플로우 세션 기간 설정에 따라 달라집니다. 기본적으로 이 세션 토큰의 세션 지속 시간은 3분입니다. 토큰의 유효성을 수정하려면 앱 클라이언트 인증 플로우 세션 기간을 구성하기 위한 단계를 참조하세요.

3.    사용자는 이전 단계에서 받은 세션 토큰으로 RespondToAuthChallenge API를 호출하여 'NEW_PASSWORD_REQUIRED' 챌린지에 응답합니다.

respond-to-auth-challenge 명령 예시:

aws cognito-idp respond-to-auth-challenge --client-id example_client_id --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses USERNAME=example_username,NEW_PASSWORD="example_new_password" --session "example_session_token"

4.    사용자는 ID, 액세스 및 새로 고침 토큰을 받고 애플리케이션에 로그인합니다.

중요: 앱 클라이언트가 사용자 풀에 클라이언트 암호로 구성된 경우 암호 해시를 제공해야 합니다. 자세히 알아보려면 Amazon Cognito 사용자 풀 API에서 'Unable to verify secret hash for client <client-id>(<client-id> 클라이언트의 보안 암호 해시를 확인할 수 없음)' 오류를 해결하려면 어떻게 해야 하나요?를 참조하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전