본문으로 건너뛰기

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

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

개념

이메일 인증은 가장 보편적으로 접근 가능한 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 정책(필수 / 선택)을 구성하세요.
  4. 구성 변경 사항을 저장하세요.
중요한 사용 시 고려사항:
  1. 로그인 방식 제한: 이메일 인증 코드는 로그인 방식(1FA)과 MFA 요소(2FA)로 동시에 사용할 수 없습니다. 이메일 구현당 하나의 인증 흐름만 선택하세요.

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

  3. 비밀번호 재설정 호환성: 이메일 인증 코드는 비밀번호 찾기와 MFA에 동시에 사용할 수 있지만, 이 조합은 권장하지 않습니다. 이 구성은 사용자가 비밀번호 찾기 이메일 인증을 통해 비밀번호를 재설정한 후, 새 비밀번호로 1차 인증(1FA)을 진행하고 동일한 이메일 방식으로 MFA 인증을 할 수 있으므로 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: 이메일 인증 코드 + 백업 코드

Email MFA setup flow 1-1

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

Email MFA setup flow 1-2

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

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

예시:

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

Email MFA setup flow 2

시나리오 3: 이메일 인증 완료, 주요 요소가 여러 개

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

예시:

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

Email MFA setup flow 3

이메일 MFA 인증 흐름

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

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

예시:

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

Email MFA verification flow

오류 처리

  1. 이메일 주소 미연결

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

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

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

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