사용자 마이그레이션 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 APIs Cognito로 쉽게 로그인하는 방법에 대한 자세한 내용은 을 참조하십시오. 웹 및 모바일 앱과 Amazon Cognito 인증 및 권한 부여 통합

  2. 앱이 사용자 이름 및 암호를 Amazon Cognito로 보냅니다. 앱에 를 사용하여 구축한 사용자 지정 로그인 UI가 있는 경우 앱은 또는 AWS SDK 흐름과 AdminInitiateAuth함께 InitiateAuth또는 흐름을 사용해야 합니다. USER_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를 로그인에 사용합니다. Secure Remote Password (SRP) 프로토콜은 네트워크를 통해 암호를 전송하지 않으므로 마이그레이션 중에 사용하는 USER_PASSWORD_AUTH 흐름에 비해 보안상의 이점을 제공합니다.

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

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