AWS SDK에서 인증 방법 관리 - Amazon Cognito

AWS SDK에서 인증 방법 관리

Amazon Cognito 사용자 풀의 사용자는 다양한 초기 로그인 옵션 또는 요인으로 로그인할 수 있습니다. 일부 요소의 경우 사용자는 다중 인증(MFA)으로 후속 조치를 취할 수 있습니다. 이러한 첫 번째 요인에는 사용자 이름과 암호, 일회용 암호, 패스키 및 사용자 지정 인증이 포함됩니다. 자세한 내용은 인증 흐름 섹션을 참조하세요. 애플리케이션에 기본 제공 UI 구성 요소가 있고 AWS SDK 모듈을 가져오는 경우 인증을 위한 애플리케이션 로직을 구축해야 합니다. 두 가지 기본 방법 중 하나를 선택해야 하며, 해당 방법에서 구현하려는 인증 메커니즘을 선택해야 합니다.

애플리케이션 또는 클라이언트가 인증 유형을 미리 선언하는 클라이언트 기반 인증을 구현할 수 있습니다. 다른 옵션은 앱이 사용자 이름을 수집하고 사용자에게 사용 가능한 인증 유형을 요청하는 선택 기반 인증입니다. 요구 사항에 따라 동일한 애플리케이션에서 이러한 모델을 함께 구현하거나 앱 클라이언트 간에 분할할 수 있습니다. 각 메서드에는 클라이언트 기반 사용자 지정 인증 및 선택 기반 암호 없는 인증과 같이 고유한 기능이 있습니다.

사용자 풀 API의 AWS SDK 구현으로 인증을 수행하는 사용자 지정 빌드 애플리케이션에서는 사용자 풀 구성, 앱 클라이언트 구성 및 클라이언트 측 기본 설정에 맞게 API 요청을 구성해야 합니다. USER_AUTHAuthFlow로 시작하는 InitiateAuth 세션은 선택 기반 인증을 시작합니다. Amazon Cognito는 선호하는 인증 방법 또는 선택 목록의 문제로 API에 응답합니다. CUSTOM_AUTHAuthFlow로 시작하는 세션은 Lambda 트리거를 사용한 사용자 지정 인증으로 바로 전환됩니다.

일부 인증 방법은 두 흐름 유형 중 하나로 고정되며, 일부 방법은 둘 다에서 사용할 수 있습니다.

선택 기반 인증

애플리케이션은 선택 기반 인증에서 다음 인증 방법을 요청할 수 있습니다. InitiateAuth 또는 AdminInitiateAuthPREFERRED_CHALLENGE 파라미터 또는 RespondToAuthChallenge 또는 AdminRespondToAuthChallengeChallengeName 파라미터에서 이러한 옵션을 선언합니다.

API 컨텍스트에서 이러한 옵션을 검토하려면 RespondToAuthChallengeChallengeName 섹션을 참조하세요.

선택 기반 로그인은 초기 요청에 대한 응답으로 문제를 실행합니다. 이 문제는 요청된 옵션을 사용할 수 있는지 확인하거나 사용 가능한 선택 사항 목록을 제공합니다. 애플리케이션은 이러한 선택 사항을 사용자에게 표시한 다음 선호하는 로그인 방법에 대한 자격 증명을 입력하고 문제 응답에서 인증을 진행할 수 있습니다.

인증 흐름에는 다음과 같은 선택 기반 옵션이 있습니다. 이 유형의 모든 요청은 앱이 먼저 사용자 이름을 수집하거나 캐시에서 검색해야 합니다.

  1. AuthParametersUSERNAME만 있는 요청 옵션. Amazon Cognito는 SELECT_CHALLENGE 문제를 반환합니다. 여기에서 애플리케이션은 사용자에게 문제를 선택하고 이 응답을 사용자 풀에 반환하라는 메시지를 표시할 수 있습니다.

  2. PREFERRED_CHALLENGEAuthParameters와 원하는 문제의 파라미터를 사용하여 원하는 문제를 요청합니다. 예를 들어 PASSWORD_SRPPREFERRED_CHALLENGE를 요청하는 경우 SRP_A도 포함해야 합니다. 사용자, 사용자 풀, 앱 클라이언트가 모두 선호하는 문제에 대해 구성된 경우 Amazon Cognito는 해당 문제의 다음 단계로 응답합니다. 예를 들어 PASSWORD_SRP 흐름에서는 PASSWORD_VERIFIER, EMAIL_OTPSMS_OTP 흐름에서는 CodeDeliveryDetails로 응답합니다. 선호하는 문제를 사용할 수 없는 경우 Amazon Cognito는 SELECT_CHALLENGE 및 사용 가능한 문제 목록으로 응답합니다.

  3. 먼저 사용자를 로그인한 다음 선택 기반 인증 옵션을 요청합니다. 로그인한 사용자의 액세스 토큰이 포함된 GetUserAuthFactors 요청은 사용 가능한 선택 기반 인증 요소와 MFA 설정을 반환합니다. 이 옵션을 사용하면 사용자는 먼저 사용자 이름과 암호로 로그인한 다음 다른 형태의 인증을 활성화할 수 있습니다. 이 작업을 사용하여 선호하는 문제로 로그인한 사용자의 추가 옵션을 확인할 수도 있습니다.

선택 기반 인증을 위해 앱 클라이언트를 구성하려면 허용된 인증 흐름에 ALLOW_USER_AUTH를 추가합니다. 또한 사용자 풀 구성에서 허용할 선택 기반 요소를 선택해야 합니다. 다음 프로세스는 선택 기반 인증 요소를 선택하는 방법을 보여줍니다.

Amazon Cognito console
사용자 풀에서 선택 기반 인증 옵션을 구성하려면
  1. AWS에 로그인하여 Amazon Cognito 사용자 풀 콘솔로 이동합니다. 사용자 풀을 선택하거나 새로운 사용자 풀을 생성합니다.

  2. 사용자 풀 구성에서 로그인 메뉴를 선택합니다. 선택 기반 로그인 옵션을 찾아 편집을 선택합니다.

  3. 암호 옵션은 항상 사용할 수 있습니다. 여기에는 PASSWORDPASSWORD_SRP 흐름이 포함됩니다. 사용자의 옵션에 추가할 추가 옵션을 선택합니다. WEB_AUTHN패스키, EMAIL_OTP이메일 메시지 일회용 암호, SMS_OTPSMS 메시지 일회용 암호를 추가할 수 있습니다.

  4. 변경 사항 저장을 선택합니다.

API/SDK

다음 부분 CreateUserPool 또는 UpdateUserPool 요청 본문은 선택 기반 인증에 사용할 수 있는 모든 옵션을 구성합니다.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN", "EMAIL_OTP", "SMS_OTP" ] } },

클라이언트 기반 인증

클라이언트 기반 인증은 다음 인증 흐름을 지원합니다. InitiateAuth 또는 AdminInitiateAuthAuthFlow 파라미터에서 이러한 옵션을 선언합니다.

  1. USER_PASSWORD_AUTH‘and’ADMIN_USER_PASSWORD_AUTH

    영구 암호로 로그인

    로그인 후 MFA

    이 인증 흐름은 선택 기반 인증의 PASSWORD와 동일합니다.

  2. USER_SRP_AUTH

    영구 암호 및 보안 페이로드로 로그인

    로그인 후 MFA

    이 인증 흐름은 선택 기반 인증의 PASSWORD_SRP와 동일합니다.

  3. REFRESH_TOKEN_AUTH

    새로 고침 토큰

    이 인증 흐름은 클라이언트 기반 인증에서만 사용할 수 있습니다.

  4. CUSTOM_AUTH

    사용자 지정 인증

    이 인증 흐름은 클라이언트 기반 인증에서만 사용할 수 있습니다.

클라이언트 기반 인증을 사용하면 Amazon Cognito는 사용자가 인증 흐름을 시작하기 전에 인증할 방법을 결정했다고 가정합니다. 사용자가 제공하려는 로그인 팩터를 결정하는 로직은 기본 설정 또는 사용자 지정 프롬프트로 결정한 다음 사용자 풀에 대한 첫 번째 요청에서 선언해야 합니다. InitiateAuth 요청은 USER_SRP_AUTH와 같이 나열된 옵션 중 하나에 직접 해당하는 로그인 AuthFlow를 선언합니다. 이 선언을 사용하면 요청에 USERNAME, SECRET_HASHSRP_A와 같이 인증을 시작하는 파라미터도 포함됩니다. Amazon Cognito는 SRP의 경우 PASSWORD_VERIFIER, TOTP MFA를 사용한 암호 로그인의 경우 SOFTWARE_TOKEN_MFA와 같은 추가적인 문제로 이 요청에 응답할 수 있습니다.

클라이언트 기반 인증을 위해 앱 클라이언트를 구성하려면 허용된 인증 흐름에 ALLOW_USER_AUTH 이외의 모든 인증 흐름을 추가합니다. 예: ALLOW_USER_PASSWORD_AUTH, ALLOW_CUSTOM_AUTH, ALLOW_REFRESH_TOKEN_AUTH. 클라이언트 기반 인증 흐름을 허용하려면 추가 사용자 풀 구성이 필요하지 않습니다.