> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 위치 인증 경고 및 LOCATION_ 코드

> 지오펜스, 정확도, 스푸핑, VPN, 거리, 권한 등 위치 확인 시 Didit에서 발생하는 모든 LOCATION_ 경고와 트리거 조건 및 기본 작업을 확인하세요.

## 개요

위치 보고서의 경고는 Didit이 위치 인증 단계에서 발견한 모든 조건을 표시합니다.
이러한 경고는 `geolocation_checks[]`의 각 항목 내 `warnings[]` 배열에 포함됩니다([위치 보고서](https://docs.didit.me/ko/core-technology/location-verification/report-location-verification.md) 참조).

모든 경고에는 세 가지 계층이 있습니다.

1. **`risk` 코드**: 매칭에 사용할 수 있는 안정적인 식별자로, 모두 `LOCATION_`으로 시작합니다.
2. **`log_type`**: `information`, `warning` 또는 `error`입니다. 구성 가능한 위험의 경우 구성된 작업에 따릅니다. `NO_ACTION`은 `information`, `REVIEW`는 `warning`, `DECLINE`은 `error`를 부여합니다.
3. **결정에 미치는 영향**: 경고 중 가장 강력한 작업이 단계 `status`를 설정합니다. `REVIEW`는 `In Review`, `DECLINE`은 `Declined`를 부여하며, `NO_ACTION`은 그대로 유지합니다.

불확실성과 거부는 기본적으로 `DECLINE`이 아닌 `REVIEW`로 설정됩니다. 권한 거부, 실내 위치 또는 넓은 반경이 사기의 증거는 아니기 때문입니다.
정확도, 최신성, 지역, 거리 및 익명화 도구에 대한 경고는 마지막 시도에서만 발생하므로 두 번째 시도에서 성공한 사용자에게는 경고가 없습니다.
노드의 커스텀 `status_rules`는 상태를 유지하거나 상향 조정할 수는 있지만 하향 조정할 수는 없습니다.

## 자동 거부 조건

이러한 조건은 항상 `log_type: "error"`와 함께 단계를 거부하며, 별도의 작업 키가 없습니다.

| 위험 | 트리거 |
| - | - |
| `LOCATION_REPLAY_DETECTED` | 제출된 정보에 다른 세션에 속한 챌린지가 포함되어 있습니다. 각 시도에는 해당 세션에 바인딩된 일회용 챌린지가 하나씩 제공되므로, 다른 곳에 이를 제시하는 것은 재생(replay)에 해당합니다. |
| `LOCATION_INTEGRITY_FAILED` | 위치 정보와 함께 기기 증명이 전송되었으나 검증에 실패했습니다. |

## 생성되는 경고

기본값은 `geolocation_preset`이 없는 단계의 작업입니다.
`licensing` 프리셋에서는 `LOCATION_VPN_DETECTED`, `LOCATION_TOR_DETECTED`, `LOCATION_EMULATOR_DETECTED`의 기본값이 `DECLINE`이고 `LOCATION_PROXY_DETECTED`는 `REVIEW`입니다.
`fraud_screening` 프리셋에서는 `DECLINE`인 모든 기본값이 `REVIEW`로 변경되며, 위 4가지 익명화 도구 탐지 결과도 `REVIEW`가 됩니다.
직접 명시적으로 설정한 작업이 항상 우선 적용됩니다.

### 권한 및 가용성

| 위험 | 트리거 | 설정 키 | 기본값 |
| - | - | - | - |
| `LOCATION_PERMISSION_DENIED` | 사용자가 허용된 모든 시도에서 위치 확인 프롬프트를 거부하거나 닫았습니다. 이는 선택일 뿐 사기의 증거는 아닙니다. | `geolocation_permission_denied_action` | `REVIEW` |
| `LOCATION_RESTRICTED` | 사용자가 응답하기 전에 운영체제에서 거부했습니다. 기기 전체에서 위치 서비스가 꺼져 있거나, 기기 관리 또는 자녀 보호 정책으로 인해 차단되었습니다. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNAVAILABLE` | 기기가 요청을 수락했으나 허용된 모든 시도에서 측위 시스템이 위치를 반환하지 못했습니다. 실내나 지하에서는 일반적인 현상입니다. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_TIMEOUT` | 허용된 모든 시도에서 `geolocation_timeout_seconds` 이내에 위치 정보가 도착하지 않았습니다. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_SKIPPED` | 워크플로에서 건너뛰기를 허용하여 사용자가 위치를 공유하지 않고 계속 진행했습니다. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNSUPPORTED_CLIENT` | 해당 단계를 구현하지 않은 앱 또는 SDK 빌드에 세션이 도달했습니다. Didit은 세션을 대기 상태로 두는 대신 단계를 종료했습니다. SDK를 업그레이드하십시오. | `geolocation_unavailable_action` | `REVIEW` |

### 정확도 및 최신성

| 위험 | 트리거 | 설정 키 | 기본값 |
| - | - | - | - |
| `LOCATION_LOW_ACCURACY` | 가장 정확한 위치의 오차 반경이 `geolocation_max_accuracy_radius_m`보다 큽니다. 이는 신뢰도 측정 지표이며 정직성 여부를 나타내지는 않습니다. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_ACCURACY_UNDETERMINED` | 허용된 모든 시도에서 위치에 오차 반경 정보가 포함되지 않아 기준 충족 여부를 확인할 수 없습니다. 기준을 충족한 것으로 간주되지 않습니다. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_STALE_FIX` | Didit이 수신하기 전 `geolocation_max_age_seconds`보다 오래전에 측정된 위치입니다. | `geolocation_stale_fix_action` | `REVIEW` |
| `LOCATION_APPROXIMATE_ONLY` | 정확한 위치가 필요했으나 사용자가 대략적인 위치만 허용했습니다(iOS 대략적인 위치, Android "대략"). 이를 구별할 수 없는 웹 환경에서는 발생하지 않습니다. | `geolocation_approximate_action` | `REVIEW` |
| `LOCATION_CLOCK_SKEW` | 기기에서 Didit의 시계보다 미래 시점에 위치를 측정했다고 보고했습니다. 정보 제공용이며, 최신성은 Didit의 수신 시간을 기준으로 판단합니다. | 없음 | 정보 제공 |

### 스푸핑 및 무결성

| 위험 | 트리거 | 설정 키 | 기본값 |
| - | - | - | - |
| `LOCATION_MOCK_PROVIDER_DETECTED` | Android에서 모의 위치 제공자로부터 위치가 생성되었다고 보고했습니다. 테스트 도구 및 접근성 도구도 이를 설정하므로 작업 설정이 가능합니다. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_SIMULATED_BY_SOFTWARE` | iOS에서 소프트웨어에 의해 위치가 시뮬레이션되었다고 보고했습니다. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_INTEGRITY_MISSING` | 네이티브 앱에서 기기 증명 없이 위치를 전송했습니다. 웹은 누락이 아닌 지원되지 않음으로 기록됩니다. | `geolocation_integrity_missing_action` | `NO_ACTION` |
| `LOCATION_EMULATOR_DETECTED` | 앱이 에뮬레이터 또는 가상 머신에서 실행 중이라고 보고했습니다. 브라우저는 이를 보고할 수 없습니다. 작업이 `NO_ACTION`이 아닌 경우 해당 시도에서 단계를 종료합니다. | `geolocation_emulator_action` | `NO_ACTION` |
| `LOCATION_VPN_DETECTED` | 위치를 공유한 연결이 상용 VPN을 통해 나갑니다. 작업이 `NO_ACTION`이 아닌 경우 사용자에게 VPN을 끄고 다시 확인하도록 요청합니다. | `geolocation_vpn_action` | `NO_ACTION` |
| `LOCATION_PROXY_DETECTED` | 연결이 공개, 익명 또는 비공개 릴레이 프록시를 통과합니다. | `geolocation_proxy_action` | `NO_ACTION` |
| `LOCATION_TOR_DETECTED` | 연결이 Tor 출구 노드입니다. | `geolocation_tor_action` | `NO_ACTION` |

### 영역

| 위험 | 트리거 | 설정 키 | 기본값 |
| - | - | - | - |
| `LOCATION_OUTSIDE_GEOFENCE` | 위치 및 전체 정확도 원이 모든 허용 영역의 바깥에 있습니다. | `geolocation_geofencing_action` | `DECLINE` |
| `LOCATION_GEOFENCE_UNDETERMINED` | 정확도 원이 결과 판정에 결정적인 경계에 걸쳐 있거나, 위치가 어떤 국가로도 확인되지 않습니다. 불확실한 상태가 외부로 보고되지는 않습니다. | `geolocation_geofence_undetermined_action` | `REVIEW` |
| `LOCATION_IN_BLOCKED_AREA` | 위치 및 전체 정확도 원이 차단 영역 내에 있습니다. 이는 허용 영역 판정에 대체되는 것이 아니라 추가되는 것이며, 더 엄격한 작업이 최종 적용됩니다. | `geolocation_blocked_area_action` | `DECLINE` |

### 거리 및 이력

| 위험 | 트리거 | 설정 키 | 기본값 |
| - | - | - | - |
| `LOCATION_IP_DISTANCE_MISMATCH` | 두 오차 반경을 뺀 후 기기 위치와 IP 주소 위치 사이의 거리가 `geolocation_ip_distance_km`보다 멉니다. VPN, 기업 프록시 또는 통신사의 중앙 게이트웨이로 인해 정상적으로 발생할 수 있습니다. | `geolocation_ip_distance_action` | `REVIEW` |
| `LOCATION_DOCUMENT_DISTANCE_MISMATCH` | 위치가 문서의 주소로부터 `geolocation_document_distance_km`보다 멉니다. 주소의 지오코딩이 대략적이고 사람이 이동할 수 있기 때문에 비교적 약한 신호입니다. | `geolocation_document_distance_action` | `REVIEW` |
| `LOCATION_CONSECUTIVE_MISMATCHES` | 이번 확인 및 동일한 사용자의 이전 확인(동일한 `vendor_data`)에서 허용 영역 밖, 차단 영역 안 또는 주소에서 너무 먼 상태가 연속으로 최소 `geolocation_consecutive_mismatch_count`회 발생했습니다. | `geolocation_consecutive_mismatch_action` | `REVIEW` |

## 사용자가 보게 되는 내용

일부 탐지 결과는 사용자에게 절대 설명되지 않습니다. 신호 이름을 명시하면 사기꾼에게 무엇을 변경해야 하는지 알려주게 되기 때문입니다.
`LOCATION_EMULATOR_DETECTED`, `LOCATION_MOCK_PROVIDER_DETECTED`, `LOCATION_SIMULATED_BY_SOFTWARE`, `LOCATION_REPLAY_DETECTED`, `LOCATION_INTEGRITY_FAILED`, `LOCATION_IP_DISTANCE_MISMATCH`가 이 그룹에 속합니다. 검토자가 인증을 다시 보내는 경우 사용자는 일반적인 사유만 보게 되며, 결정 payload와 webhook에는 전체 경고가 유지됩니다.
VPN은 사용자에게 VPN을 끄고 다시 시도해 달라는 요청으로만 표시되며, 차단된 지역은 서비스를 이용할 수 있는 지역 목록으로만 표시됩니다.

## 예시

```json theme={null}
{
  "risk": "LOCATION_LOW_ACCURACY",
  "log_type": "warning",
  "short_description": "Device location accuracy below the configured limit",
  "additional_data": {
    "accuracy_m": 1200.0,
    "accuracy_confidence": "p95",
    "max_accuracy_radius_m": 250
  },
  "node_id": "geolocation_1"
}
```

## 경고 유형

각 위험에는 애플리케이션 설정에 따라 심각도가 할당됩니다. 세 가지 심각도는 다음과 같습니다.

## 관련 항목

* [위치 인증 보고서](https://docs.didit.me/ko/core-technology/location-verification/report-location-verification.md) - `warnings[]` 옆의 필드입니다.
* [위치 인증](https://docs.didit.me/ko/core-technology/location-verification/overview.md) - 이 단계의 작동 방식입니다.
* [워크플로 기능 구성](https://docs.didit.me/ko/management-api/workflows/feature-configs.md#위치-확인) - 모든 작업 키입니다.
* [데이터 모델 - Warning 객체](https://docs.didit.me/ko/reference/data-models.md#경고-객체) - `warnings[]` 내 각 항목의 형태입니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.