오류 응답 관리 - Amazon Cognito

오류 응답 관리

Amazon Cognito는 사용자 풀에서 반환되는 오류 응답을 사용자 지정하도록 지원합니다. 사용자 지정 오류 응답은 인증, 확인 및 암호 복구 관련 작업에 사용할 수 있습니다. 사용자 풀 앱 클라이언트의 PreventUserExistenceErrors 설정을 사용하여 사용자 존재 여부와 관련한 오류를 사용하거나 사용하지 않도록 설정합니다.

사용자 지정 오류 응답을 사용하면 Amazon Cognito 인증 API가 일반 인증 실패 응답을 반환합니다. 이 오류 응답은 사용자 이름 또는 암호가 잘못되었음을 나타냅니다. Amazon Cognito 계정 확인 및 암호 복구 API가 시뮬레이션된 전송 미디어에 코드가 전송되었음을 나타내는 응답을 반환합니다. 이 오류 응답은 상태가 ENABLED이고 사용자가 존재하지 않을 때 작동합니다. 다음은 PreventUserExistenceErrorsENABLED로 설정된 경우Amazon Cognito 작업에 대한 자세한 동작입니다.

사용자 인증 작업

다음 작업에 인증 흐름 방법 중 하나를 사용할 수 있습니다.

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

사용자 이름 암호 기반 인증

ADMIN_USER_PASSWORD_AUTHUSER_PASSWORD_AUTH에 대한 인증 흐름에서 InitiateAuth를 한 번만 호출하면 사용자 이름과 암호가 반환됩니다. Amazon Cognito가 사용자 이름 또는 암호가 잘못되었음을 나타내는 일반 NotAuthorizedException 오류를 반환합니다.

Secure Remote Password(SRP) 기반 인증

USER_SRP_AUTH 인증 흐름에서 Amazon Cognito 서비스는 첫 번째 단계에서 사용자 이름과 SRP 파라미터 'A'를 수신합니다. 이에 대한 응답으로Amazon Cognito가 SRP 프로토콜에 따라 사용자에 대해 SRP 파라미터 'B' 및 'salt'를 반환합니다. 사용자를 찾을 수 없는 경우 Amazon Cognito가 RFC 5054에 설명된 대로 첫 번째 단계에서 시뮬레이션된 응답을 반환합니다. Amazon Cognito가 동일한 사용자 이름 및 사용자 풀 조합에 대해 동일한 'salt' 및 내부 사용자 ID(Universally Unique Identifier(UUID) 형식)를 반환합니다. 다음 RespondToAuthChallenge 암호 증명 작업이 실행될 때 Amazon Cognito는 사용자 이름 또는 암호가 잘못되었음을 나타내는 일반 NotAuthorizedException 오류를 반환합니다.

참고

UsernamePassword를 사용하면, 검증 기반 별칭을 사용하고 변경 불가능한 사용자 이름의 형식이 UUID가 아닌 경우의 일반 응답을 시뮬레이트할 수 있습니다.

ForgotPassword

사용자를 찾을 수 없거나, 사용자가 비활성화되었거나, 암호를 복구할 수 있는 확인된 전달 메커니즘이 없는 경우 Amazon Cognito는 사용자에 대해 시뮬레이션된 전송 미디어와 함께 CodeDeliveryDetails를 반환합니다. 시뮬레이션된 전송 미디어는 사용자 풀의 입력 사용자 이름 형식 및 검증 설정에 따라 결정됩니다.

ConfirmForgotPassword

Amazon Cognito는 존재하지 않거나 사용 중지된 사용자에 대해 CodeMismatchException 오류를 반환합니다. ForgotPassword를 사용할 때 코드가 요청되지 않은 경우 Amazon Cognito가 ExpiredCodeException 오류를 반환합니다.

ResendConfirmationCode

Amazon Cognito는 사용 중지되거나 존재하지 않는 사용자에 대해 CodeDeliveryDetails 오류를 반환합니다. Amazon Cognito는 기존 사용자의 이메일 또는 전화 번호로 확인 코드를 보냅니다.

ConfirmSignUp

ExpiredCodeException은 코드가 만료된 경우 반환됩니다. Amazon Cognito는 사용자에게 권한이 부여되지 않은 경우 NotAuthorizedException을 반환합니다. 서버에서 예상하는 코드와 일치하지 않는 경우 Amazon Cognito는 CodeMismatchException을 반환합니다.

SignUp

SignUp 작업은 이미 사용 중인 사용자 이름인 경우 UsernameExistsException을 반환합니다. SignUp 동안 이메일 또는 전화 번호에 대한 UsernameExistsException 오류를 방지하기 위해 검증 기반 별칭을 사용할 수 있습니다. 자세한 내용은 AliasAttributes Amazon Cognito API 참조 가이드를 참조하세요. 별칭에 대한 자세한 내용은 별칭 개요를 참조하세요.

가져온 사용자

PreventUserExistenceErrors를 사용하는 경우 가져온 사용자를 인증하는 중에 PasswordResetRequiredException이 반환되지 않고 대신 사용자 이름 또는 암호가 잘못되었음을 나타내는 일반 NotAuthorizedException 오류가 반환됩니다. 자세한 내용은 가져온 사용자에게 암호 재설정 요구를 참조하세요.

사용자 마이그레이션 Lambda 트리거

Amazon Cognito는 Lambda 트리거에서 원래 이벤트 컨텍스트에 빈 응답이 설정된 경우 존재하지 않는 사용자에 대해 시뮬레이션된 응답을 반환합니다. 자세한 내용은 사용자 마이그레이션 Lambda 트리거를 참조하세요.

사용자 지정 인증 문제 Lambda 트리거

사용자 지정 인증 문제 Lambda 트리거를 사용하고 오류 응답을 사용하는 경우 LambdaChallengeUserNotFound라는 부울 파라미터를 반환합니다. 이 파라미터는 DefineAuthChallenge, VerifyAuthChallengeCreateAuthChallenge Lambda 트리거의 요청에 전달됩니다. 이 트리거를 사용하여 존재하지 않는 사용자에 대해 사용자 지정 권한 부여 문제를 시뮬레이션할 수 있습니다. 존재하지 않는 사용자에 대해 사전 인증 Lambda 트리거를 호출하면 Amazon Cognito가 UserNotFound를 반환합니다.