본문으로 건너뛰기
버전: 개발 버전 (최신)

Auth 도메인 오류 코드

이 문서는 Auth 도메인의 API에서 발생할 수 있는 오류 코드와 메시지에 대한 종합적인 참조를 제공합니다. 각 API 레퍼런스 문서에도 관련 오류 코드가 포함되어 있으므로, 특정 API 사용 시에는 해당 문서를 확인하는 것이 좋습니다.

오류 응답 형식​

{
"code": 2000,
"message": "SERVER_ERROR",
"detail": "서버 내부 오류가 발생했습니다",
"metadata": {
"exampleKey": "exampleValue"
}
}
필드타입설명
codenumber애플리케이션 오류 코드
messagestring개발자용 오류 코드 이름 (대문자 및 언더스코어)
detailstring사용자에게 표시할 수 있는 친화적인 오류 메시지
errorsarray필드별 유효성 검증 오류가 있는 경우 추가 정보 제공 (선택 사항)
metadataobject오류 관련 추가 메타데이터 (선택 사항)
노트

errors와 metadata 필드는 선택 사항이며, 오류 상황에 따라 포함되지 않을 수 있습니다.

오류 코드 체계​

API 오류 코드는 도메인별로 고유한 숫자 범위를 사용하여 관리됩니다. 예를 들어, Auth 도메인은 주로 2000번대 오류 코드를 사용하며, 다른 도메인은 별도의 코드 범위를 가집니다 (예: Access Code 관련 오류는 3000번대).

이 문서는 주로 **Auth 도메인(2000번대)**에서 발생하는 오류 코드에 대해 설명합니다. 다른 도메인 관련 오류 코드는 해당 도메인의 문서를 참조하거나 아래 링크를 확인하세요:

Auth 도메인 오류 코드 범위​

범위용도
2000-2010기본 인증 오류 (서버 오류 포함)
2011-2019디바이스 및 앱 인증 관련 오류
2020-2039사용자 인증 관련 오류
2040-2049속도 제한 및 보안 관련 오류
2050-2059토큰 관련 오류
2060-2069권한 관련 오류
2070-2079Auth 도메인의 Access Code 관련 오류
2080-2089약관 관련 오류
2090-2099기타 Auth 도메인 오류 (비밀번호 관련)
노트

이전에는 Access Code 관련 오류가 2070-2079 범위에 포함되었으나, 도메인 분리 원칙에 따라 모든 Access Code 관련 오류는 이제 Access Code 도메인(3000번대)에서 처리됩니다. 자세한 내용은 Access Code 오류 코드를 참조하세요.

기본 인증 오류 코드 (2000-2010)​

HTTP 상태 코드코드메시지설명
5002000SERVER_ERROR서버 내부 오류
4012001APP_TOKEN_EXPIRED토큰이 만료되었습니다
4012002INVALID_APP_TOKEN토큰이 유효하지 않습니다 ⚠️ Deprecated
4012003REFRESH_TOKEN_EXPIRED리프레시 토큰이 만료되었습니다
4032004ACCOUNT_LOCKED계정이 잠겨 있습니다
4032005PASSWORD_CHANGE_REQUIRED비밀번호 변경이 필요합니다
4012006INVALID_MFA_CODE다중 인증 코드가 유효하지 않습니다
4032007MFA_REQUIRED다중 인증이 필요합니다
4032008EMAIL_NOT_VERIFIED이메일이 인증되지 않았습니다
4032009ACCOUNT_INACTIVE계정이 비활성화 상태입니다
4012010INVALID_CREDENTIALS이메일 또는 비밀번호가 올바르지 않습니다

서버 오류 처리 가이드​

서버 오류(2000)는 백엔드 시스템에 문제가 있을 때 발생합니다. 클라이언트 애플리케이션에서는 다음과 같이 처리하는 것이 좋습니다:

  • 지수 백오프 재시도: 서버 오류 발생 시 즉시 재시도하지 말고, 지수적으로 증가하는 대기 시간 후 재시도
  • 최대 재시도 횟수 설정: 일정 횟수(예: 3-5회) 이상 재시도 실패 시 사용자에게 알림
  • 오프라인 모드 전환: 가능한 경우 일시적으로 오프라인 모드로 전환하여 기본 기능 제공
  • 로깅 및 모니터링: 모든 서버 오류를 로깅하고 애널리틱스에 보고하여 패턴 파악

디바이스 및 앱 인증 오류 코드 (2011-2019)​

HTTP 상태 코드코드메시지설명
4002011INVALID_DEVICE_ID디바이스 ID가 유효하지 않습니다
4012012CHALLENGE_VERIFICATION_FAILED챌린지 검증에 실패했습니다
4032013DEVICE_BLACKLISTED디바이스가 블랙리스트에 등록되어 있습니다
4002014VERIFICATION_CODE_EXPIRED인증 코드가 만료되었습니다
4002016DEVICE_HASH_MISMATCH디바이스 ID 해시가 계산된 값과 일치하지 않습니다
4002017INVALID_VERIFICATION_CODE인증 코드가 올바르지 않습니다
4292018VERIFICATION_ATTEMPTS_EXCEEDED인증 코드 확인 시도 횟수를 초과했습니다
4042019DEVICE_NOT_FOUND디바이스 정보를 찾을 수 없습니다
노트

이전에 사용되던 INVALID_APP_TOKEN(2015) 오류 코드는 모든 토큰 검증 오류를 일관되게 처리하기 위해 INVALID_APP_TOKEN(2002)로 통합되었습니다. 자세한 내용은 아래 토큰 관련 오류 코드 섹션을 참조하세요.

앱 인증 오류 발생 원인 및 해결 방법​

INVALID_DEVICE_ID (2011)​

  • 원인: 디바이스 ID가 없거나, 형식이 올바르지 않거나, 지원되지 않는 형식입니다.
  • 해결 방법:
    • 필수 필드 확인: deviceInfo 객체에 uuid, platform, version 필드가 모두 포함되어 있는지 확인하세요.
    • 해시 형식 검증: 해시가 64자리 16진수 문자열(SHA-256)인지 확인하세요.
    • 해시 계산 일치: 디바이스 정보를 JSON으로 직렬화한 후 정확히 SHA-256 해싱하여 생성한 해시가 서버에서 계산한 값과 일치하는지 확인하세요.
    • 디바이스 정보 일관성: 서버와 클라이언트 간 디바이스 정보 형식과 구조가 일치하는지 확인하세요.
    • 백업 식별자 구현: 디바이스 UUID를 앱 설치 시 생성하여 안전한 저장소에 보관하고, 앱 재설치 시에도 일관된 식별자를 사용하세요.

CHALLENGE_VERIFICATION_FAILED (2012)​

  • 원인: 암호화된 챌린지 응답이 서버의 예상 값과 일치하지 않습니다.
  • 해결 방법:
    • 앱 시크릿이 올바르게 저장되어 있는지 확인
    • 서버 타임스탬프와 로컬 시간 차이가 너무 크지 않은지 확인
    • 암호화 알고리즘 구현이 정확한지 확인

DEVICE_BLACKLISTED (2013)​

  • 원인: 디바이스가 보안상의 이유로 블랙리스트에 등록되었습니다.
  • 해결 방법:
    • 사용자에게 관리자나 지원팀에 문의하도록 안내
    • 루팅/탈옥 감지 부분 확인
    • 불법 앱 설치 여부 확인

VERIFICATION_CODE_EXPIRED (2014)​

  • 원인: 인증 코드가 만료되었습니다.
  • 해결 방법:
    • 새로운 인증 코드 요청
    • 코드 유효 시간 안내

DEVICE_HASH_MISMATCH (2016)​

  • 원인: 요청에 포함된 디바이스 ID 해시가 서버에서 계산한 값과 일치하지 않습니다.
  • 해결 방법:
    • 해시 생성 알고리즘 확인
    • 디바이스 정보 JSON 직렬화 순서 확인
    • 시크릿 값이 올바르게 적용되었는지 확인

INVALID_VERIFICATION_CODE (2017)​

  • 원인: 입력된 인증 코드가 올바르지 않습니다.
  • 해결 방법:
    • 사용자에게 코드를 다시 확인하도록 안내
    • 코드 입력 필드 강조 표시

VERIFICATION_ATTEMPTS_EXCEEDED (2018)​

  • 원인: 인증 코드 확인 시도 횟수를 초과했습니다.
  • 해결 방법:
    • 남은 잠금 시간 표시
    • 새 코드 요청 옵션 제공

DEVICE_NOT_FOUND (2019)​

  • 원인: 요청한 디바이스 정보를 찾을 수 없습니다.
  • 해결 방법:
    • 디바이스 등록 프로세스 재시작
    • 앱 데이터 초기화 고려

사용자 인증 오류 코드 (2020-2039)​

HTTP 상태 코드코드메시지설명
4002021WEAK_PASSWORD비밀번호가 보안 요구사항을 충족하지 않습니다
4092022PASSWORD_HISTORY_MATCH최근에 사용한 비밀번호입니다
4002023INVALID_EMAIL_FORMAT유효한 이메일 주소를 입력해주세요
4092024DUPLICATE_EMAIL이미 가입된 이메일 주소입니다
4042025EMAIL_NOT_FOUND존재하지 않는 이메일입니다
4092026EMAIL_VERIFICATION_ALREADY_COMPLETED이미 인증이 완료된 코드입니다
4222027UNREGISTERED_EMAIL가입되지 않은 이메일입니다
4002028REGISTRATION_VALIDATION_FAILED가입 정보 검증에 실패했습니다

사용자 인증 오류 처리 가이드​

회원가입 오류​

  • DUPLICATE_EMAIL (2024): 회원가입 시 이미 등록된 이메일 사용

    • 사용자에게 로그인 화면으로 이동하거나 비밀번호 재설정 옵션을 제공
    • 소셜 로그인 선택지 제공
  • EMAIL_NOT_FOUND (2025): 존재하지 않는 이메일 조회

    • 회원가입 화면으로 리다이렉트
    • 올바른 이메일 주소 입력 유도
  • UNREGISTERED_EMAIL (2027): 가입되지 않은 이메일로 로그인 시도

    • 회원가입 프로세스 안내
    • 이메일 주소 재확인 요청
  • WEAK_PASSWORD (2021): 비밀번호가 보안 요구사항 미충족

    • 구체적인 비밀번호 요구사항 안내 (최소 8자, 특수문자, 대문자 포함 등)
    • 비밀번호 강도 측정기 제공
  • PASSWORD_HISTORY_MATCH (2022): 최근에 사용한 비밀번호 재사용

    • 새로운 비밀번호 작성 유도
    • 이전에 사용하지 않은 비밀번호 요청
  • INVALID_EMAIL_FORMAT (2023): 이메일 형식이 유효하지 않음

    • 올바른 이메일 형식 안내
    • 입력 필드에 즉각적인 유효성 검사 적용
  • EMAIL_VERIFICATION_ALREADY_COMPLETED (2026): 이미 완료된 이메일 인증 재시도

    • 로그인 화면으로 리다이렉트
    • 이미 인증 완료되었음을 안내
  • REGISTRATION_VALIDATION_FAILED (2028): 가입 정보 검증 실패

    • 입력된 정보의 형식 및 유효성 검사 결과 안내
    • 구체적인 필드별 오류 메시지 제공
    • 잘못된 입력 필드 강조 표시

보안 및 속도 제한 오류 코드 (2040-2049)​

HTTP 상태 코드코드메시지설명
4292040RATE_LIMIT_EXCEEDED요청 횟수가 제한을 초과했습니다
4032041SUSPICIOUS_ACTIVITY의심스러운 활동이 감지되었습니다

속도 제한 처리 모범 사례​

  • 지수 백오프: 재시도 시 시간 간격을 점진적으로 늘림
  • Retry-After 헤더 활용: 응답에 포함된 대기 시간 준수
  • 사용자 피드백: 대기 시간이 긴 경우 진행 상태 표시
  • 요청 우선순위 지정: 중요한 요청과 덜 중요한 요청을 구분하여 처리

의심스러운 활동 대응 가이드​

  • 사용자에게 보안 확인 절차 안내 (이메일 확인, 2FA 등)
  • 디바이스 인증 정보 재설정
  • 비정상 활동 로그 수집 및 보고
  • 보안 담당자에게 알림

토큰 관련 오류 코드 (2050-2059)​

HTTP 상태 코드코드메시지설명
4002050INVALID_NONCE제공된 nonce가 유효하지 않거나 이미 사용되었습니다
4012051INVALID_TOKEN토큰이 유효하지 않습니다
4032052TOKEN_REFRESH_FORBIDDEN토큰 갱신이 금지되었습니다
4012053TOKEN_REVOKED토큰이 취소되었습니다
노트

이전에 사용되던 INVALID_APP_TOKEN(2002) 오류 코드는 deprecated되었으며, 모든 토큰 검증 오류는 이제 INVALID_TOKEN(2051)을 사용합니다. 이는 모든 유형의 토큰(액세스 토큰, 앱 토큰 등) 검증 오류를 일관되게 처리하기 위한 조치입니다.

토큰 오류 자동 복구 매커니즘​

  1. 액세스 토큰 만료 감지: 401 상태 코드와 APP_TOKEN_EXPIRED 오류 코드 확인
  2. 리프레시 토큰 사용: 자동으로 리프레시 토큰을 사용하여 새 액세스 토큰 요청
  3. 원본 요청 재시도: 새 액세스 토큰으로 원래 요청 재시도
  4. 리프레시 토큰 오류 처리: 리프레시 토큰도 문제가 있는 경우 로그인 화면으로 리다이렉트
// 토큰 자동 복구 매커니즘 예시 코드
async function executeRequestWithTokenRecovery(request) {
try {
return await executeRequest(request);
} catch (error) {
if (error.status === 401 && error.code === 2001) {
// APP_TOKEN_EXPIRED
try {
await refreshAccessToken();
return await executeRequest(request); // 원본 요청 재시도
} catch (refreshError) {
// 리프레시 토큰도 유효하지 않은 경우
if (refreshError.status === 401 && (refreshError.code === 2003 || refreshError.code === 2051)) {
// REFRESH_TOKEN_EXPIRED 또는 INVALID_TOKEN
redirectToLogin();
}
throw refreshError;
}
}
throw error;
}
}

권한 관련 오류 코드 (2060-2069)​

HTTP 상태 코드코드메시지설명
4032060PERMISSION_DENIED요청한 작업에 대한 권한이 없습니다
4032061INSUFFICIENT_ROLE요청한 작업을 수행하기 위한 역할이 부족합니다

권한 오류 처리 UI/UX 가이드​

  • 명확한 메시지 제공: 필요한 권한과 사용자의 현재 권한 상태 설명
  • 권한 획득 경로 제시: 필요한 권한을 얻기 위한 방법 안내
  • 대체 기능 제안: 현재 권한으로 이용 가능한 대체 기능 제시
  • UI 요소 비활성화: 권한이 없는 작업은 UI에서 비활성화하거나 숨기기

약관 관련 오류 코드 (2080-2089)​

HTTP 상태 코드코드메시지설명
4122080REQUIRED_AGREEMENTS_NOT_AGREED필수 약관에 동의하지 않았습니다

약관 오류 처리 가이드​

  • REQUIRED_AGREEMENTS_NOT_AGREED (2080): 필수 약관 미동의
    • 약관 동의 화면으로 리다이렉트
    • 필수 약관과 선택 약관을 명확히 구분하여 표시
    • 약관 내용을 쉽게 확인할 수 있는 링크 제공
    • 동의 후 원래 진행하던 프로세스로 복귀

Access Code 관련 오류 코드 (2070-2079)​

HTTP 상태 코드코드메시지설명
4002070INVALID_ACCESS_CODE유효하지 않은 Access Code입니다
4092071ACCESS_CODE_ALREADY_USED이미 사용된 Access Code입니다
4002072ACCESS_CODE_EXPIRED만료된 Access Code입니다
노트

이러한 오류 코드는 Auth 도메인에서 Access Code를 처리할 때 사용됩니다. 독립적인 Access Code 도메인(3000번대)에 대한 자세한 내용은 Access Code 오류 코드를 참조하세요.

기타 Auth 도메인 오류 코드 (2090-2099)​

HTTP 상태 코드코드메시지설명
4002090PASSWORD_ALREADY_USED현재 비밀번호 해시와 동일합니다
4002091INVALID_PASSWORD비밀번호가 올바르지 않습니다
4002092PASSWORD_NOT_VERIFIED비밀번호 인증이 완료되지 않았습니다
5002099UNKNOWN_AUTH_ERROR알 수 없는 인증 오류가 발생했습니다

비밀번호 관련 오류 처리 가이드​

비밀번호 변경 오류​

  • PASSWORD_ALREADY_USED (2090): 현재 비밀번호해시와 동일한 비밀번호해시로 변경 시도

    • 사용자에게 새로운 비밀번호 입력 요청
    • "현재 비밀번호와 다른 비밀번호를 입력해주세요" 메시지 표시
  • INVALID_PASSWORD (2091): 잘못된 현재 비밀번호 입력

    • 현재 비밀번호 재입력 요청
    • 비밀번호 재설정 옵션 제공
    • 입력 필드 강조 표시
  • PASSWORD_NOT_VERIFIED (2092): 비밀번호 인증 단계 미완료

    • 비밀번호 인증 단계로 리다이렉트
    • 진행 상태 표시
    • 검증 완료 후 원래 작업 재개

변경 이력​

버전날짜작성자변경 내용
0.1.02025-04-15bok@weltcorp.com최초 작성
0.2.02025-05-01bok@weltcorp.com토큰 오류 코드 통합(INVALID_APP_TOKEN), Access Code 오류 코드 이동 반영
0.3.02025-05-02bok@weltcorp.com누락된 에러 코드 추가 (INVALID_EMAIL_FORMAT, INVALID_NONCE, EMAIL_VERIFICATION_ALREADY_COMPLETED 등)
0.4.02025-05-15bok@weltcorp.comREGISTRATION_VALIDATION_FAILED(2028) 오류 코드 추가
1.0.02025-09-18AI Assistant코드 기반 전면 업데이트: 에러 코드 범위 재정리, 새로운 비밀번호 관련 오류(2090-2092) 추가, 약관 관련 오류(2080) 추가, INVALID_APP_TOKEN deprecated 반영, 코드와 문서 일관성 확보