본문으로 건너뛰기

MFA용 이메일 인증 (Email verification for MFA)

Logto는 사용자의 등록된 이메일 주소로 일회성 인증 코드를 전송하여 계정 보안을 강화하는 이메일 기반 다단계 인증 (MFA, Multi-factor authentication) 기능을 지원합니다. 이메일 MFA는 두 번째 인증 요소로 사용되며, 다른 MFA 요소(TOTP, 패스키, 백업 코드 등)와 결합하여 유연한 2단계 인증 옵션을 제공합니다.

개념 (Concepts)

이메일 인증은 가장 보편적으로 접근 가능한 MFA 방법 중 하나입니다. 이메일 계정의 광범위한 보급을 활용하여 임시 일회성 인증 코드를 사용자의 이메일 인박스로 직접 전달합니다. 별도의 소프트웨어 설치가 필요한 앱 기반 인증기와 달리, 이메일 MFA는 이미 거의 모든 인터넷 사용자가 웹 브라우저, 이메일 클라이언트 또는 모바일 앱을 통해 접근할 수 있는 기존 이메일 인프라를 활용합니다. 따라서 이메일 계정만 있으면 별도의 하드웨어나 추가 설정 없이 즉시 사용할 수 있습니다.

MFA용 이메일 인증 설정하기

1단계: 이메일 커넥터 및 템플릿 설정

  1. 콘솔 > 커넥터 > 이메일 및 SMS 커넥터로 이동하세요.

  2. 적절한 이메일 커넥터(SendGrid, Mailgun 등)를 선택하세요.

  3. 연결 파라미터를 설정하세요.

  4. MFA 전용 사용 유형으로 이메일 템플릿을 설정하세요.

    • MFA 인증을 위한 MfaVerification usageType
    • MFA 바인딩을 위한 BindMFA usageType
    • 팁: Logto 이메일 서비스는 기본 제공 이메일 템플릿을 제공합니다.
  5. 공급자별 설정 방법은 이메일 커넥터를 참고하세요.

2단계: MFA용 이메일 활성화

  1. 콘솔 > 다단계 인증으로 이동하세요.
  2. "이메일 인증 코드" 요소를 활성화하세요. 이메일 MFA는 다른 MFA 요소(TOTP, 패스키, SMS, 백업 코드)와 함께 사용하는 것을 권장합니다. 단일 요소 의존도를 줄일 수 있습니다.
  3. 원하는 MFA 정책(필수 vs. 선택)을 설정하세요.
  4. 설정 변경 사항을 저장하세요.
중요한 사용 시 고려사항:
  1. 로그인 방식 제한: 이메일 인증 코드는 로그인 방식(1FA)과 MFA 요소(2FA)로 동시에 사용할 수 없습니다. 이메일 구현별로 하나의 인증 흐름만 선택하세요.

  2. 회원가입 방식 호환성: 이메일 인증 코드는 회원가입 방식과 MFA에 동시에 사용할 수 있습니다. Logto는 선택한 MFA 정책에 따라 동일 이메일 주소에 대해 두 번 인증을 요구하지 않도록 최적화된 가입 흐름을 제공합니다.

  3. 비밀번호 재설정 호환성: 이메일 인증 코드는 비밀번호 찾기와 MFA에 동시에 사용할 수 있지만, 이 조합은 권장하지 않습니다. 이 구성은 사용자가 비밀번호 찾기 이메일 인증을 통해 비밀번호를 재설정한 후, 새 비밀번호로 1차 인증(1FA)을 하고 동일한 이메일 방식으로 MFA 인증을 할 수 있으므로 MFA 보안 효과가 저하됩니다.

이메일 MFA 설정 흐름

MFA 설정 프롬프트는 MFA 정책에 따라 사용자 등록 시 또는 로그인 후에 나타날 수 있습니다.

이메일 MFA 설정 흐름은 다음 요소에 영향을 받습니다:

  • MFA 주요 요소 수: 주요 요소가 여러 개라면, 사용자가 하나를 선택해 설정해야 합니다. 주요 요소란 백업 코드를 제외한 MFA 방식입니다.
  • 백업 코드 활성화 여부: 활성화된 경우, 주요 MFA 요소 설정 후 백업 코드가 자동 생성되며, 사용자는 이를 저장하라는 안내를 받습니다.
  • 회원가입 식별자 설정: 이메일 주소가 회원가입 식별자로 사용되고, 사용자가 가입 시 이미 이메일 인증 코드를 통해 인증했다면, 시스템이 해당 이메일을 자동으로 MFA 요소로 바인딩하며 추가 인증이 필요하지 않습니다. 다른 주요 요소가 있다면 UI에 "다른 2단계 인증 추가" 옵션이 표시됩니다(사용자는 건너뛸 수 있음). 이로써 MFA가 활성화되었음을 명확히 안내합니다.
  • 기존 사용자 데이터: 기존 사용자가 로그인 후 MFA를 설정할 때는 먼저 1차 인증을 완료한 뒤 MFA 설정을 진행해야 합니다. 계정에 이미 인증된 주요 이메일 주소가 있다면, 회원가입 식별자 케이스와 동일하게 동작합니다.

아래는 세 가지 일반적인 이메일 MFA 바인딩 시나리오입니다.

시나리오 1: 이메일 주소를 오직 MFA용으로만 사용하는 경우 (일반 흐름)

이메일 주소가 회원가입 식별자가 아니고, 오직 MFA용으로만 사용된다면 표준 설정 순서를 따릅니다:

  • 이메일 MFA 요소가 하나뿐이면 해당 요소의 설정 UI를 바로 표시합니다.
  • 주요 MFA 요소가 여러 개라면 "MFA 설정" 목록 페이지를 보여주고, 사용자가 설정할 요소를 선택하게 합니다.

예시:

회원가입: 휴대폰 번호 + SMS 인증 코드 + 비밀번호 | MFA: 이메일 인증 코드 + 백업 코드

이메일 MFA 설정 흐름 1-1

회원가입: 휴대폰 번호 + SMS 인증 코드 + 비밀번호 | MFA: 이메일 인증 코드 + 패스키 + 인증 앱 OTP + 백업 코드

이메일 MFA 설정 흐름 1-2

시나리오 2: 이메일이 회원가입 식별자로 인증된 경우

이메일 주소가 회원가입 식별자이고, 사용자가 가입 시 이미 이메일 코드로 인증했다면, 시스템이 해당 이메일을 자동으로 MFA 요소로 바인딩합니다. 추가 인증이 필요하지 않습니다.

예시:

회원가입: 이메일 주소 + 이메일 인증 코드 + 비밀번호 | MFA: 이메일 인증 코드 + 백업 코드

이메일 MFA 설정 흐름 2

시나리오 3: 이메일 인증은 되었으나 주요 요소가 여러 개인 경우

이메일 주소가 회원가입 시 인증되었으나(회원가입 식별자), 계정에 여러 주요 MFA 요소(예: 이메일 + 패스키 또는 인증 앱)가 있다면, UI에서 "다른 2단계 인증 추가" 프롬프트가 표시됩니다. 사용자는 다른 요소를 추가하거나 건너뛸 수 있으며, 프롬프트를 통해 이미 MFA가 활성화되었음을 안내합니다.

예시:

회원가입: 이메일 주소 + 이메일 인증 코드 + 비밀번호 | MFA: 이메일 인증 코드 + 패스키 + 인증 앱 OTP + 백업 코드

이메일 MFA 설정 흐름 3

이메일 MFA 인증 흐름

이메일 MFA가 활성화된 사용자가 로그인할 때, 1차 인증(1FA)을 성공적으로 완료하면 두 번째 인증 요소(2FA)로 이메일 인증 코드를 통해 본인 확인을 하라는 프롬프트가 표시됩니다.

여러 MFA 요소가 등록되어 있다면, 사용자는 설정된 요소 중에서 선택할 수 있습니다. 시스템은 MFA 설정에서 지정한 우선순위에 따라 먼저 프롬프트할 MFA 요소를 결정합니다.

예시:

로그인: 휴대폰 번호 + 비밀번호 | MFA: 이메일 인증 코드(마지막 사용) / 인증 앱 OTP / 백업 코드

이메일 MFA 인증 흐름

오류 처리 (Error Handling)

  1. 이메일 주소 미바인딩

    • 오류 코드: session.mfa.mfa_factor_not_enabled
    • 처리: 사용자가 먼저 이메일 주소를 바인딩하도록 안내
  2. 잘못된 인증 코드

    • 오류 코드: verification_code.code_mismatch
    • 처리: 재입력 안내, 재시도 횟수 제한
  3. 인증 코드 만료

    • 오류 코드: verification_code.expired
    • 처리: 새 인증 코드 요청 안내
  4. 발송 속도 제한 초과

    • 오류 코드: connector.rate_limit_exceeded
    • 처리: 대기 시간 안내, 재발송 제한