사용자 마이그레이션 Lambda 트리거를 사용하여 사용자 풀로 사용자 가져오기 - Amazon Cognito

사용자 마이그레이션 Lambda 트리거를 사용하여 사용자 풀로 사용자 가져오기

이 접근 방식을 사용하면 사용자가 앱으로 처음 로그인하거나 암호 재설정을 요청할 때 기존 사용자 디렉터리에 있는 사용자를 사용자 풀로 원활하게 마이그레이션할 수 있습니다. 사용자 마이그레이션 Lambda 트리거 함수를 사용자 풀에 추가합니다. 이 함수는 로그인하려고 하는 사용자에 대한 메타데이터를 수신하고 외부 자격 증명 소스에서 사용자 프로필 정보를 반환합니다. 요청 및 응답 파라미터를 포함한 이 Lambda 트리거에 대한 자세한 내용과 코드 예는 사용자 마이그레이션 Lambda 트리거 파라미터 섹션을 참조하세요.

사용자 마이그레이션을 시작하기 전에 AWS 계정에서 사용자 마이그레이션 Lambda 함수를 생성하고, 이 Lambda 함수를 사용자 풀의 사용자 마이그레이션 트리거로 설정합니다. Amazon Cognito 서비스 계정 보안 주체 cognito-idp.amazonaws.com만 사용자 자신의 사용자 풀 컨텍스트에서만 Lambda 함수를 호출하도록 허용하는 권한 부여 정책을 Lambda 함수에 추가합니다. 자세한 내용은 AWS Lambda에 대한 리소스 기반 정책(Lambda 함수 정책) 사용을 참조하세요.

로그인 프로세스

  1. 사용자가 앱을 열고 Amazon Cognito 사용자 풀 API 또는 Amazon Cognito 호스팅 UI를 통해 로그인합니다. Amazon Cognito API로 쉽게 로그인하는 방법에 대한 자세한 내용은 웹 및 모바일 앱과 Amazon Cognito 통합 섹션을 참조하세요.

  2. 앱이 사용자 이름 및 암호를 Amazon Cognito로 보냅니다. 앱에 AWS SDK를 사용하여 빌드한 사용자 지정 로그인 UI가 있는 경우 해당 앱에서 InitiateAuth 또는 AdminInitiateAuthUSER_PASSWORD_AUTH 또는 ADMIN_USER_PASSWORD_AUTH 흐름과 함께 사용해야 합니다. 앱에서 이러한 흐름 중 하나를 사용하면 SDK가 암호를 서버로 보냅니다.

    참고

    사용자 마이그레이션 트리거를 추가하기 전에 앱 클라이언트 설정에서 USER_PASSWORD_AUTH 또는 ADMIN_USER_PASSWORD_AUTH 흐름을 활성화합니다. 기본 USER_SRP_AUTH 흐름 대신 이러한 흐름을 사용해야 합니다. Amazon Cognito는 다른 디렉터리에서 사용자의 인증을 확인할 수 있도록 Lambda 함수에 암호를 보내야 합니다. SRP는 Lambda 함수에서 사용자의 암호를 가립니다.

  3. Amazon Cognito는 제출된 사용자 이름이 사용자 풀의 사용자 이름 또는 별칭과 일치하는지 확인합니다. 사용자의 이메일 주소, 전화 번호 또는 기본 설정 사용자 이름을 사용자 풀의 별칭으로 설정할 수 있습니다. 사용자가 존재하지 않는 경우 Amazon Cognito는 사용자 이름 및 암호를 포함한 파라미터를 사용자 마이그레이션 Lambda 트리거 함수에 보냅니다.

  4. 사용자 마이그레이션 Lambda 트리거 함수는 기존 사용자 디렉터리 또는 사용자 데이터베이스를 사용하여 사용자를 확인하거나 인증합니다. 이 함수는 Amazon Cognito가 사용자 풀의 사용자 프로필에 저장하는 사용자 속성을 반환합니다. 제출된 사용자 이름이 별칭 속성과 일치하는 경우에만 username 파라미터를 반환할 수 있습니다. 사용자가 기존 암호를 계속 사용하도록 하려는 경우 함수가 Lambda 응답에서 finalUserStatus 속성을 CONFIRMED로 설정합니다. 앱은 사용자 마이그레이션 Lambda 트리거 파라미터에 표시된 모든 "response" 파라미터를 반환해야 합니다.

    중요

    사용자 마이그레이션 Lambda 코드에 전체 요청 이벤트 객체를 기록하지 마세요. 이 요청 이벤트 객체에는 사용자의 암호가 포함됩니다. 로그를 폐기하지 않는 경우 암호가 CloudWatch 로그에 나타납니다.

  5. Amazon Cognito가 사용자 풀에 사용자 프로파일을 생성하고 앱 클라이언트에 토큰을 반환합니다.

  6. 앱이 토큰 수집을 수행하고, 사용자 인증을 수락하고, 요청된 콘텐츠로 진행합니다.

사용자를 마이그레이션한 후 USER_SRP_AUTH를 로그인에 사용합니다. SRP(보안 원격 암호) 프로토콜에서 네트워크를 통해 암호를 보내지 않고 마이그레이션 중에 사용하는 USER_PASSWORD_AUTH 흐름에서 보안 강화를 제공합니다.

마이그레이션 중에 클라이언트 디바이스 문제, 네트워크 문제 등의 오류가 발생하면 앱이 Amazon Cognito 사용자 풀 API로부터 오류 응답을 수신합니다. 이 경우 Amazon Cognito가 사용자 풀에서 사용자 계정을 생성하거나 생성하지 않을 수도 있습니다. 그러면 사용자가 다시 로그인을 시도해야 합니다. 로그인이 반복해서 실패할 경우 앱에서 암호 찾기 흐름을 사용하여 사용자의 암호 재설정을 시도합니다.

암호 찾기 흐름도 UserMigration_ForgotPassword 이벤트 소스를 사용하여 사용자 마이그레이션 Lambda 트리거 암호를 호출합니다. 사용자가 암호 재설정을 요청할 때 암호를 제출하지 않으므로 Amazon Cognito는 Lambda 함수로 전송하는 경우 암호를 포함하지 않습니다. 함수는 기존 사용자 디렉터리에서 사용자를 조회하고 사용자 풀의 사용자 프로필에 추가할 속성을 반환할 수만 있습니다. Amazon Cognito는 함수의 응답을 수신하고 사용자에게 이메일 또는 SMS를 통해 암호 재설정 코드를 보냅니다. 사용자가 코드를 확인하면 앱에서 새 암호를 설정합니다. 앱에 사용자 지정 UI가 있는 경우 암호 찾기 흐름을 지원하는 페이지를 빌드합니다. Amazon Cognito 호스팅 UI에는 암호 찾기 흐름에 대한 기본 제공 페이지가 있습니다.