사용자 계정 가입 및 확인 - Amazon Cognito

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 계정 가입 및 확인

사용자 계정은 다음 방법 중 하나로 사용자 풀에 추가됩니다.

  • 사용자가 사용자 풀의 클라이언트 앱에 가입합니다. 모바일 또는 웹 앱일 수 있습니다.

  • 사용자 계정을 사용자 풀로 가져올 수 있습니다. 자세한 내용은 CSV 파일에서 사용자 풀로 사용자 가져오기 섹션을 참조하세요.

  • 사용자 풀에 사용자 계정을 만들고 로그인하도록 사용자를 초대할 수 있습니다. 자세한 내용은 관리자로 사용자 계정 생성 섹션을 참조하세요.

가입한 사용자가 로그인하려면 먼저 확인을 받아야 합니다. 가져온 사용자 및 생성된 사용자는 이미 확인되었지만 처음 로그인할 때 자신의 암호를 생성해야 합니다. 다음 섹션에서는 확인 프로세스와 이메일 및 전화 확인에 대해 설명합니다.

사용자 계정 확인 개요

다음 다이어그램은 확인 프로세스를 보여 줍니다.


        사용자가 확인 코드를 입력하면 이메일 또는 전화를 자동으로 확인합니다.

사용자 계정은 다음 상태 중 하나일 수 있습니다.

등록됨(확인되지 않음)

사용자가 성공적으로 가입했지만 사용자 계정이 확인될 때까지 로그인할 수 없습니다. 이 상태에서는 사용자가 활성화되었지만 확인되지 않았습니다.

자신을 등록하는 새 사용자는 이 상태에서 시작됩니다.

확인됨

사용자 계정이 확인되었으며 사용자가 로그인할 수 있습니다. 사용자가 코드를 입력하거나 이메일 링크를 따라 사용자 계정을 확인하면 해당 이메일 또는 전화번호가 자동으로 확인됩니다. 코드나 링크는 24시간 동안 유효합니다.

관리자 또는 사전 가입 Lambda 트리거에서 사용자 계정을 확인한 경우 계정에 연결되어 있는 확인된 이메일이나 전화번호가 없을 수 있습니다.

암호 재설정 필요

사용자 계정이 확인되었지만, 사용자가 로그인하기 전에 코드를 요청하고 암호를 재설정해야 합니다.

관리자 또는 개발자가 가져온 사용자 계정은 이 상태에서 시작합니다.

암호 강제 변경

사용자 계정이 확인되고 사용자가 임시 암호를 사용하여 로그인할 수 있지만, 처음 로그인할 때 다른 작업을 수행하기 전에 암호를 새 값으로 변경해야 합니다.

관리자 또는 개발자가 만든 사용자 계정은 이 상태에서 시작합니다.

Disabled(비활성)

사용자 계정을 삭제하려면 먼저 해당 사용자에 대한 로그인 액세스를 비활성화해야 합니다.

가입 시 연락처 정보 확인

새 사용자가 앱에 가입할 때 적어도 하나의 연락 방법을 제공하도록 하고 싶을 것입니다. 예를 들어 사용자의 연락처 정보를 사용하여 다음을 수행할 수 있습니다.

  • 사용자가 암호를 재설정하기로 선택한 경우 임시 암호를 보냅니다.

  • 개인 정보 또는 재무 정보가 업데이트되면 사용자에게 알립니다.

  • 특별 제품 및 서비스 또는 할인과 같은 프로모션 메시지를 보냅니다.

  • 계정 요약 또는 결제 미리 알림을 보냅니다.

이와 같은 사용 사례의 경우 확인된 대상에 메시지를 보내는 것이 중요합니다. 그렇지 않으면 잘못 입력한 이메일 주소 또는 전화 번호로 메시지를 보내게 될 수 있습니다. 또는 최악의 경우, 사용자를 사칭하는 악의적인 행위자에게 민감한 정보를 보내게 될 수도 있습니다.

올바른 사람에게만 메시지를 보내려면 사용자가 가입할 때 다음을 반드시 제공하도록 Amazon Cognito 사용자 풀을 구성합니다.

  1. 이메일 주소 또는 전화 번호.

  2. Amazon Cognito가 이메일 주소나 전화 번호로 전송하는 인증 코드. 24시간이 지났고 사용자 코드 또는 링크가 더 이상 유효하지 않은 경우 ResendConfirmationCode API 작업을 호출하여 새 코드 또는 링크를 생성 및 전송합니다.

확인 코드를 제공하면 코드를 받은 메일함이나 휴대폰에 액세스할 수 있음을 사용자가 증명합니다. 사용자가 코드를 제공하고 나면 Amazon Cognito는 다음과 같은 방법으로 사용자 풀에서 사용자에 대한 정보를 업데이트합니다.

  • 사용자의 상태를 CONFIRMED로 설정합니다.

  • 이메일 주소나 전화 번호가 확인되었음을 나타내도록 사용자 속성을 업데이트합니다.

이 정보를 보려면 Amazon Cognito 콘솔을 사용하면 됩니다. 또는 AdminGetUser API 작업, admin-get-user로 AWS CLI 명령 또는 AWS SDK 중 하나에서 해당 작업을 사용할 수 있습니다.

사용자에게 확인된 연락 방법이 있는 경우 사용자가 암호 재설정을 요청할 때 Amazon Cognito가 자동으로 사용자에게 메시지를 보냅니다.

이메일 또는 전화 확인을 요구하도록 사용자 풀을 구성하려면

사용자의 이메일 주소와 전화번호를 확인할 때 사용자에게 연락할 수 있는지 확인합니다. AWS Management Console에서 다음 단계를 수행하여 사용자가 이메일 주소 또는 전화번호를 확인하도록 사용자 풀을 구성합니다.

참고

아직 계정에 사용자 풀을 만들지 않았으면 사용자 풀 시작하기 섹션을 참조하세요.

사용자 풀을 구성하려면
  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

  2. 탐색 창에서 사용자 풀(User Pools)을 선택합니다. 목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.

  3. 가입 경험(Sign-up experience) 탭을 선택하고 속성 확인 및 사용자 계정 확인(Attribute verification and user account confirmation)을 찾습니다. 편집을 선택합니다.

  4. Cognito 지원 검증 및 확인에서 Cognito가 검증 및 확인을 위한 메시지를 자동으로 보내도록 허용 여부를 선택합니다. 이 설정을 활성화하면 Amazon Cognito는 사용자가 가입하거나 사용자 프로필을 생성할 때 선택한 사용자 연락처 속성으로 메시지를 보냅니다. 속성을 확인하고 로그인을 위한 사용자 프로필을 확인하기 위해 Amazon Cognito는 코드나 링크를 메시지로 사용자에게 보냅니다. 이후 사용자가 UI에 코드를 입력해야 앱이 ConfirmSignUp 또는 AdminConfirmSignUp API 요청에서 이를 확인할 수 있습니다.

    참고

    [Cognito 지원 검증 및 확인(Cognito-assisted verification and confirmation)]을 사용하지 않도록 설정하고 인증된 API 작업이나 Lambda 트리거를 사용하여 속성을 검증하고 사용자를 확인할 수도 있습니다.

    이 옵션을 선택하면 사용자가 가입할 때 Amazon Cognito가 확인 코드를 보내지 않습니다. Amazon Cognito의 확인 코드를 사용하지 않고 하나 이상의 연락 방법을 확인하는 사용자 지정 인증 흐름을 사용하는 경우 이 옵션을 선택합니다. 예를 들어 특정 도메인에 속하는 이메일 주소를 자동으로 확인하는 사전 가입 Lambda 트리거를 사용할 수 있습니다.

    사용자의 연락처 정보를 확인하지 않으면 사용자가 앱을 사용하지 못할 수 있습니다. 다음을 위해 사용자로부터 확인된 연락처 정보를 요구하는 것입니다.

    • [암호 재설정(Reset their passwords)] - 사용자가 앱에서 ForgotPassword API 작업을 호출하는 옵션을 선택하면 Amazon Cognito는 사용자의 이메일 주소나 전화 번호로 임시 암호를 전송합니다. Amazon Cognito는 사용자에게 확인된 연락 방법이 하나 이상 있는 경우에만 이 암호를 전송합니다.

    • [이메일 주소나 전화 번호를 별칭으로 사용하여 로그인(Sign in by using an email address or phone number as an alias)] - 이러한 별칭을 허용하도록 사용자 풀을 구성하면 사용자는 별칭이 확인된 경우에만 별칭으로 로그인할 수 있습니다. 자세한 내용은 로그인 속성 사용자 지정 섹션을 참조하세요.

  5. [확인할 속성(Attributes to verify)]을 선택합니다.

    [SMS 메시지 전송, 전화 번호 확인(Send SMS message, verify phone number)]

    Amazon Cognito에서 사용자가 가입할 때 SMS 메시지로 확인 코드를 전송합니다. 일반적으로 SMS 메시지를 통해 사용자와 커뮤니케이션하는 경우 이 옵션을 선택합니다. 예를 들어 배송 알림, 약속 확인 또는 알림을 보내는 경우 확인된 전화 번호를 사용할 수 있습니다. 사용자 전화 번호는 계정을 확인할 때 검증되는 속성으로, 사용자 이메일 주소를 확인하고 커뮤니케이션하려면 추가 조치를 취해야 합니다.

    [이메일 메시지 전송, 이메일 주소 확인(Send email message, verify email address)]

    Amazon Cognito에서 사용자가 가입할 때 이메일 메시지를 통해 확인 코드를 전송합니다. 일반적으로 이메일을 통해 사용자와 커뮤니케이션하는 경우 이 옵션을 선택합니다. 예를 들어 결제 청구서, 주문 요약 또는 특별 제품 및 서비스를 보내는 경우 확인된 이메일 주소를 사용할 수 있습니다. 사용자 이메일 주소는 계정을 확인할 때 검증되는 속성으로, 사용자 전화 번호를 확인하고 커뮤니케이션하려면 추가 조치를 취해야 합니다.

    [전화 번호를 사용할 수 있는 경우 SMS 메시지 전송, 그렇지 않으면 이메일 메시지 전송(Send SMS message if phone number is available, otherwise send email message)]

    모든 사용자에게 동일한 확인된 연락 방법을 요구하지 않는 경우 이 옵션을 선택합니다. 이 경우 앱의 가입 페이지에서 사용자에게 선호하는 연락 방법만 확인하도록 요청할 수 있습니다. 확인 코드를 전송할 때 Amazon Cognito는 앱에서 SignUp 요청 시에 제공한 연락 수단으로 코드를 보냅니다. 사용자가 이메일 주소와 전화 번호를 모두 제공하고 앱이 SignUp 요청에서 두 가지 연락 수단을 모두 제공할 경우 Amazon Cognito는 전화 번호로만 확인 코드를 전송합니다.

    사용자가 이메일 주소와 전화 번호를 모두 확인하도록 요구하는 경우 이 옵션을 선택합니다. Amazon Cognito는 사용자가 등록할 때 하나의 연락 방법을 확인하며, 사용자가 로그인한 후 앱이 다른 연락 방법을 확인해야 합니다. 자세한 내용은 사용자가 이메일 주소와 전화 번호를 둘 다 확인하도록 요구하는 경우 섹션을 참조하세요.

  6. 변경 사항 저장(Save changes)을 선택합니다.

이메일 또는 전화 확인을 사용하는 인증 흐름

사용자 풀에서 사용자가 연락처 정보를 확인해야 하는 경우 사용자가 가입할 때 앱은 다음과 같은 흐름을 지원해야 합니다.

  1. 사용자가 사용자 이름, 전화 번호 및/또는 이메일 주소와 기타 속성을 입력하여 앱에 가입합니다.

  2. Amazon Cognito 서비스가 앱으로부터 가입 요청을 받습니다. 요청에 가입에 필요한 모든 속성이 포함되어 있는지 확인한 후, 이 서비스는 가입 프로세스를 완료하고 사용자의 휴대폰(SMS 메시지) 또는 이메일로 확인 코드를 보냅니다. 이 코드는 24시간 동안 유효합니다.

  3. 가입이 완료되었으며 사용자 계정이 확인 대기 중이라는 메시지를 서비스가 앱에 반환합니다. 해당 응답에는 확인 코드가 전송된 위치에 대한 정보가 포함됩니다. 이 시점에 사용자의 계정은 확인되지 않은 상태이며 사용자의 이메일 주소와 전화 번호가 확인되지 않았습니다.

  4. 이제 앱에서 확인 코드를 입력하라는 메시지를 표시할 수 있습니다. 사용자가 코드를 즉시 입력할 필요는 없습니다. 단, 사용자는 확인 코드를 입력할 때까지 로그인할 수 없습니다.

  5. 사용자가 앱에서 확인 코드를 입력합니다.

  6. 앱이 ConfirmSignUp을 호출하여 코드를 Amazon Cognito 서비스로 전송합니다. 이 서비스는 코드를 확인하고 코드가 올바르면 사용자 계정을 확인 상태로 설정합니다. 사용자 계정을 성공적으로 확인한 후 Amazon Cognito 서비스는 확인하는 데 사용된 속성(이메일 또는 전화번호)을 자동으로 확인된 것으로 표시합니다. 이 속성의 값이 변경되지 않는 한, 사용자가 다시 확인할 필요가 없습니다.

  7. 이 시점에 사용자 계정은 확인된 상태이며 사용자가 로그인할 수 있습니다.

사용자가 이메일 주소와 전화 번호를 둘 다 확인하도록 요구하는 경우

Amazon Cognito는 사용자가 가입할 때 하나의 연락 방법만 확인합니다. 이메일 주소 또는 전화번호 확인 중에서 선택해야 하는 경우 Amazon Cognito는 SMS 메시지를 통해 확인 코드를 전송하여 전화번호를 확인하도록 선택합니다. 예를 들어 사용자가 이메일 주소 또는 전화 번호를 확인할 수 있도록 사용자 풀을 구성하고 가입 시 앱이 이러한 속성을 모두 제공하는 경우 Amazon Cognito는 전화 번호만 확인합니다. 사용자가 전화번호를 확인하고 나면 Amazon Cognito가 사용자의 상태를 CONFIRMED로 설정하며, 사용자는 앱에 로그인할 수 있습니다.

사용자가 로그인하면 가입 중에 확인되지 않은 연락 방법을 확인하는 옵션을 앱에서 제공할 수 있습니다. 이 두 번째 수단을 확인하기 위해 앱은 VerifyUserAttribute API 작업을 호출합니다. 이 작업을 수행하려면 AccessToken 파라미터가 필요하며, Amazon Cognito는 인증된 사용자에 대한 액세스 토큰만 제공합니다. 따라서 사용자가 로그인한 후에만 두 번째 연락 방법을 확인할 수 있습니다.

사용자가 이메일 주소와 전화 번호를 모두 확인하도록 요구하는 경우 다음을 수행합니다.

  1. 사용자가 이메일 주소 또는 전화 번호를 확인할 수 있도록 사용자 풀을 구성합니다.

  2. 앱의 가입 흐름에서 사용자에게 이메일 주소와 전화 번호를 모두 제공하도록 요구합니다. SignUp API 작업을 호출하고 UserAttributes 파라미터에서 이메일 주소와 전화 번호를 제공합니다. 이때 Amazon Cognito는 사용자의 휴대폰으로 확인 코드를 전송합니다.

  3. 앱 인터페이스에서 사용자가 확인 코드를 입력하는 확인 페이지를 표시합니다. ConfirmSignUp API 작업을 호출하여 사용자를 확인합니다. 이 시점에 사용자의 상태는 CONFIRMED이며 사용자의 전화 번호는 확인되었지만 이메일 주소는 확인되지 않았습니다.

  4. 로그인 페이지를 표시하고 InitiateAuth API 작업을 호출하여 사용자를 인증합니다. 사용자가 인증되면 Amazon Cognito는 앱에 액세스 토큰을 반환합니다.

  5. GetUserAttributeVerificationCode API 작업을 호출합니다. 요청에 다음 파라미터를 지정합니다.

    • AccessToken - 사용자가 로그인할 때 Amazon Cognito가 반환하는 액세스 토큰입니다.

    • AttributeName - "email"을 속성 값으로 지정합니다.

    Amazon Cognito가 사용자의 이메일 주소로 확인 코드를 전송합니다.

  6. 사용자가 확인 코드를 입력하는 확인 페이지를 표시합니다. 사용자가 코드를 제출하면 VerifyUserAttribute API 작업을 호출합니다. 요청에 다음 파라미터를 지정합니다.

    • AccessToken - 사용자가 로그인할 때 Amazon Cognito가 반환하는 액세스 토큰입니다.

    • AttributeName - "email"을 속성 값으로 지정합니다.

    • Code - 사용자가 제공한 확인 코드입니다.

    이 시점에 이메일 주소는 확인된 상태입니다.

사용자가 앱에 가입할 수 있도록 허용하지만 사용자 풀 관리자로 확인

사용자 풀이 사용자 풀에 자동으로 확인 메시지를 보내는 것을 원하지 않지만 누구나 계정에 가입하도록 허용하려는 경우가 있을 수 있습니다. 이 모델에서는 예를 들어 신규 가입 요청을 사람이 직접 검토하고 가입을 일괄적으로 검증하고 처리할 수 있는 여지가 남아 있습니다. Amazon Cognito 콘솔에서 또는 IAM 인증 API 작업 AdminConfirmSignup을 사용하여 새 사용자 계정을 확인할 수 있습니다. 사용자 풀의 확인 메시지 전송 여부에 관계없이 관리자로서 사용자 계정을 확인할 수 있습니다.

이 방법을 통해서만 사용자 셀프 서비스 가입을 확인할 수 있습니다. 관리자로 생성한 사용자를 확인하려면 Permanent를 True로 설정하여 AdminSetUserPassword API 요청을 생성합니다.

  1. 사용자가 사용자 이름, 전화 번호 및/또는 이메일 주소와 기타 속성을 입력하여 앱에 가입합니다.

  2. Amazon Cognito 서비스가 앱으로부터 가입 요청을 받습니다. 요청에 가입에 필요한 모든 속성이 포함되어 있는지 확인한 후, 이 서비스는 가입 프로세스를 완료하고 등록이 완료되었으며 확인 대기 중이라는 메시지를 앱에 반환합니다. 이 시점에 사용자의 계정은 확인되지 않은 상태입니다. 사용자는 계정이 확인될 때까지 로그인할 수 없습니다.

  3. 사용자의 계정을 확인합니다. 계정을 확인하려면 AWS Management Console에 로그인하거나 AWS 보안 인증으로 API 요청에 서명해야 합니다.

    1. Amazon Cognito 콘솔에서 사용자를 확인하려면 사용자 탭으로 이동하여 확인하려는 사용자를 선택한 다음 작업 메뉴에서 확인을 선택합니다.

    2. AWS API 또는 CLI에서 사용자를 확인하려면 AdminConfirmSignUp API 요청을 생성하거나 AWS CLI에서 admin-confirm-sign-up을 실행합니다.

  4. 이 시점에 사용자 계정은 확인된 상태이며 사용자가 로그인할 수 있습니다.

암호 해시 값 컴퓨팅

모범 사례에 따라 기밀 앱 클라이언트에 클라이언트 암호를 할당합니다. 앱 클라이언트에 클라이언트 암호를 할당할 때, Amazon Cognito 사용자 풀 API 요청에는 클라이언트 암호가 포함된 해시가 요청 본문에 포함되어야 합니다. 다음 목록의 API 작업에 대한 클라이언트 암호를 알고 있는지 확인하려면, 클라이언트 암호를 앱 클라이언트 ID 및 사용자의 사용자 이름과 연결한 다음 문자열을 base64로 인코딩합니다.

앱이 암호 해시가 있는 클라이언트에 사용자를 로그인시키는 경우 모든 사용자 풀 로그인 속성의 값을 암호 해시의 사용자 이름 요소로 사용할 수 있습니다. 앱이 REFRESH_TOKEN_AUTH가 있는 인증 작업에서 새 토큰을 요청하는 경우 사용자 이름 요소의 값은 로그인 속성에 따라 달라집니다. 사용자 풀에 로그인 속성으로 username이 없는 경우 액세스 또는 ID 토큰의 사용자 sub 클레임에서 암호 해시 사용자 이름 값을 설정하십시오. username가 로그인 속성인 경우에는 username 클레임에서 암호 해시 사용자 이름 값을 설정합니다.

다음 Amazon Cognito 사용자 풀 API는 SecretHash 파라미터의 클라이언트 암호 해시 값을 허용합니다.

또한 다음 API는 인증 파라미터 또는 챌린지 응답의SECRET_HASH 파라미터에 클라이언트 암호 해시 값을 허용합니다.

API 작업 SECRET_HASH의 상위 파라미터
InitiateAuth AuthParameters
AdminInitiateAuth AuthParameters
RespondToAuthChallenge ChallengeResponses
AdminRespondToAuthChallenge ChallengeResponses

암호 해시 값은 사용자 풀 클라이언트 및 사용자 이름의 보안 암호 키와 메시지의 클라이언트 ID를 사용하여 계산된 Base 64 인코딩 키 추가 해시 메시지 인증 코드(HMAC)입니다. 다음 유사 코드는 이 값이 계산되는 방식을 보여줍니다. 이 유사 코드에서 +는 연결을 나타내고, HMAC_SHA256은 HmacSHA256을 사용해 HMAC 값을 생성하는 기능을 나타내며, Base64는 해시 출력의 Base-64 인코딩 버전을 생성하는 기능을 나타냅니다.

Base64 ( HMAC_SHA256 ( "Client Secret Key", "Username" + "Client Id" ) )

SecretHash 파라미터를 계산하고 사용하는 방법에 대한 자세한 개요는 AWS 지식 센터의 Amazon Cognito 사용자 풀 API에서 "<client-id> 클라이언트의 암호 해시를 확인할 수 없습니다." 오류를 해결하려면 어떻게 해야 하나요?를 참조하세요.

서버 측 앱 코드에서 다음 코드 예를 사용할 수 있습니다.

Shell
echo -n "[username][app client ID]" | openssl dgst -sha256 -hmac [app client secret] -binary | openssl enc -base64
Java
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; public static String calculateSecretHash(String userPoolClientId, String userPoolClientSecret, String userName) { final String HMAC_SHA256_ALGORITHM = "HmacSHA256"; SecretKeySpec signingKey = new SecretKeySpec( userPoolClientSecret.getBytes(StandardCharsets.UTF_8), HMAC_SHA256_ALGORITHM); try { Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM); mac.init(signingKey); mac.update(userName.getBytes(StandardCharsets.UTF_8)); byte[] rawHmac = mac.doFinal(userPoolClientId.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(rawHmac); } catch (Exception e) { throw new RuntimeException("Error while calculating "); } }
Python
import sys import hmac, hashlib, base64 username = sys.argv[1] app_client_id = sys.argv[2] key = sys.argv[3] message = bytes(sys.argv[1]+sys.argv[2],'utf-8') key = bytes(sys.argv[3],'utf-8') secret_hash = base64.b64encode(hmac.new(key, message, digestmod=hashlib.sha256).digest()).decode() print("SECRET HASH:",secret_hash)

이메일 또는 전화 번호를 확인하지 않고 사용자 계정 확인

Lambda 사전 가입 트리거를 사용하면 확인 코드를 요구하거나 이메일 또는 전화번호를 확인하지 않고도 가입 시 사용자 계정을 자동으로 확인할 수 있습니다. 이 방법으로 확인된 사용자는 코드를 받지 않고도 즉시 로그인할 수 있습니다.

이 트리거를 통해 확인된 사용자의 이메일 또는 전화 번호를 표시할 수도 있습니다.

참고

이 방법은 사용자가 시작할 때 편리하지만 이메일 또는 전화 번호 중 하나 이상을 자동 확인하는 것이 좋습니다. 그렇지 않으면 사용자가 암호를 잊어 버린 경우 복구할 수 없게 될 수 있습니다.

사용자가 가입 시 확인 코드를 받아 입력하도록 요구하지 않고 Lambda 사전 가입 트리거에서 이메일 및 전화번호를 자동으로 확인하지 않으면, 해당 사용자 계정에 대해 확인된 이메일 주소 또는 전화번호가 없을 위험이 있습니다. 이 경우 사용자가 나중에 이메일 주소 또는 전화 번호를 확인할 수 있습니다. 그러나 사용자가 암호를 잊어버렸는데 확인된 이메일 주소 또는 전화번호가 없는 경우 암호 찾기 흐름에서 사용자에게 확인 코드를 보내는 데 확인된 이메일 또는 전화번호가 필요하기 때문에 사용자의 계정이 잠깁니다.

사용자가 이메일 또는 전화 번호를 변경하는 경우 확인

사용자가 앱에서 이메일 주소 또는 전화번호를 업데이트한 경우 해당 속성을 자동으로 확인하도록 사용자 풀을 구성했다면 Amazon Cognito에서 확인 코드가 포함된 메시지를 즉시 사용자에게 보냅니다. 그러면 사용자는 인증 메시지의 코드를 앱에 입력해야 합니다. 그러면 앱에서 새 속성 값을 확인하기 위해 VerifyUserAttribute API 요청에 코드를 제출합니다.

사용자 풀에서 사용자가 업데이트된 이메일 주소나 전화번호를 확인할 필요가 없는 경우 Amazon Cognito는 업데이트된 email 또는 phone_number 속성 값을 즉시 변경하고 속성을 확인되지 않은 것으로 표시합니다. 사용자는 확인되지 않은 이메일이나 전화번호로 로그인할 수 없습니다. 해당 속성을 로그인 별칭으로 사용하려면 업데이트된 값의 확인을 완료해야 합니다.

사용자 풀에서 사용자가 업데이트된 이메일 주소 또는 전화번호를 확인해야 하는 경우 Amazon Cognito는 사용자가 새 속성 값을 확인할 때까지 속성을 검증하고 원래 값으로 설정합니다. 속성이 로그인에 대한 별칭인 경우 사용자는 확인을 통해 해당 속성이 새 값으로 변경될 때까지 원래 속성 값으로 로그인할 수 있습니다. 사용자가 업데이트된 속성을 확인하도록 사용자 풀을 구성하는 방법에 대한 자세한 내용은 이메일 또는 전화 확인 구성을 참조하세요.

사용자 지정 메시지 Lambda 트리거를 사용하여 확인 메시지를 사용자 지정할 수 있습니다. 자세한 내용은 사용자 정의 메시지 Lambda 트리거 섹션을 참조하세요. 사용자의 이메일 주소나 전화번호가 확인되지 않으면 앱에서 속성을 확인해야 함을 사용자에게 알리고, 사용자가 새 이메일 주소나 전화번호를 확인할 수 있는 버튼이나 링크가 제공됩니다.

관리자 또는 개발자가 생성한 사용자 계정에 대한 확인 및 검증 프로세스

관리자 또는 개발자가 만든 사용자 계정은 이미 확인 상태이므로 사용자가 확인 코드를 입력할 필요가 없습니다. Amazon Cognito 서비스가 이러한 사용자에게 보내는 초대 메시지에는 사용자 이름과 임시 암호가 포함됩니다. 사용자는 로그인하기 전에 이 암호를 변경해야 합니다. 자세한 내용은 관리자로 사용자 계정 생성이메일 및 SMS 메시지 사용자 정의 섹션과 Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의의 사용자 지정 메시지 트리거 섹션을 참조하세요.

가져온 사용자 계정에 대한 확인 및 검증 프로세스

AWS Management Console, CLI 또는 API(CSV 파일에서 사용자 풀로 사용자 가져오기 참조)에서 사용자 가져오기 기능을 사용하여 만든 사용자 계정이 이미 확인된 상태이므로, 사용자가 확인 코드를 입력할 필요가 없습니다. 초대 메시지가 전송되지 않습니다. 그러나 가져온 사용자 계정은 사용자가 먼저 ForgotPassword API를 호출하여 코드를 요청한 다음, ConfirmForgotPassword API를 호출하고 전달된 코드를 사용하여 암호를 만들어야 로그인할 수 있습니다. 자세한 내용은 가져온 사용자에게 암호 재설정 요구 섹션을 참조하세요.

사용자 계정을 가져올 때 사용자의 이메일 또는 전화 번호가 확인된 상태로 표시되어야 하므로 사용자가 로그인 시에는 확인이 필요하지 않습니다.

앱을 테스트하는 동안 이메일 전송

Amazon Cognito는 클라이언트 앱에서 사용자 풀을 위해 계정을 생성하고 관리할 때 사용자에게 이메일 메시지를 보냅니다. 이메일 확인을 요구하도록 사용자 풀을 구성하는 경우 Amazon Cognito는 다음과 같은 경우 이메일을 보냅니다.

  • 사용자가 가입할 경우.

  • 사용자가 이메일 주소를 업데이트할 경우.

  • 사용자가 ForgotPassword API 작업을 호출하는 작업을 수행할 경우.

  • 사용자 계정을 관리자로 생성할 경우.

이메일을 시작한 작업이 무엇인지에 따라 이메일에는 확인 코드가 들어가거나 임시 암호가 들어갑니다. 사용자는 이러한 이메일을 수신하고 메시지를 이해해야 합니다. 그렇지 않으면 로그인하여 앱을 사용하지 못할 수 있습니다.

이메일이 성공적으로 전송되고 메시지가 올바른지 확인하려면 앱에서 Amazon Cognito로부터의 이메일 전송을 시작하는 작업을 테스트합니다. 예를 들어 앱에서 가입 페이지를 사용하거나 SignUp API 작업을 사용하면, 테스트 이메일 주소로 등록하여 이메일을 시작할 수 있습니다. 이 방법으로 테스트하려면 다음을 기억해야 합니다.

중요

이메일 주소를 사용하여 Amazon Cognito에서 이메일을 시작하는 작업을 테스트하는 경우, 가짜 이메일 주소(메일박스가 없는 이메일 주소)를 사용하지 마세요. Amazon Cognito로부터 이메일을 수신할 실제 이메일 주소를 사용하여 하드 바운스를 유발하지 않도록 합니다.

하드 바운스 메일은 Amazon Cognito가 수신자의 메일박스로 이메일을 전송하지 못할 때 발생하며, 메일박스가 없는 경우 항상 발생합니다.

Amazon Cognito는 AWS 계정에서 보낼 수 있는 이메일 수를 제한하기 때문에 지속적으로 하드 바운스가 발생합니다.

이메일을 시작하는 작업을 테스트할 때 다음 이메일 주소 중 하나를 사용하여 하드 바운스를 방지합니다.

  • 자신이 소유하고 테스트에 사용하는 이메일 계정의 주소. 자신의 이메일 주소를 사용하면 Amazon Cognito에서 보내는 이메일을 받게 됩니다. 이 이메일을 통해 인증 코드를 사용하여 앱의 가입 환경을 테스트할 수 있습니다. 사용자 풀에 대한 이메일 메시지를 사용자 지정한 경우 사용자 지정 내용이 올바른지 확인할 수 있습니다.

  • 메일박스 시뮬레이터 주소, success@simulator.amazonses.com. 시뮬레이터 주소를 사용하는 경우 Amazon Cognito가 이메일을 성공적으로 전송하지만 사용자는 이메일을 볼 수 없습니다. 이 옵션은 인증 코드를 사용할 필요가 없고 이메일 메시지를 확인할 필요가 없을 때 유용합니다.

  • 임의의 레이블이 추가된 메일박스 시뮬레이터 주소, 예: success+user1@simulator.amazonses.com 또는 success+user2@simulator.amazonses.com. Amazon Cognito가 이들 주소로 이메일을 성공적으로 전송하지만 사용자는 전송된 이메일을 볼 수 없습니다. 이 옵션은 사용자 풀에 여러 테스트 사용자를 추가하여 가입 프로세스를 테스트하며, 각 테스트 사용자에게 고유한 이메일 주소가 있는 경우에 유용합니다.