72 lines
3.4 KiB
Markdown
72 lines
3.4 KiB
Markdown
# SPTarkov Personal Authentication Mod (C#)
|
|
|
|
PostgreSQL 기반의 외부 데이터베이스를 연동하여 SPTarkov 서버의 인증 및 프로필 관리를 수행하는 확장 모드입니다.
|
|
|
|
## 주요 기능 (Key Features)
|
|
|
|
- **외부 DB 연동**: PostgreSQL을 사용하여 유저 정보 및 세션을 안전하게 저장합니다.
|
|
- **보안 인증**: SHA256 해싱과 유저별 고유 Salt, 서버 Pepper를 결합한 비밀번호 보안을 제공합니다.
|
|
- **하모니 패치 (Interception)**:
|
|
- SPT 코어의 엄격한 JSON 역직렬화를 우회하기 위해 전역 전처리 패치를 적용했습니다.
|
|
- `password` 필드를 중간에서 추출하고 제거하여 서버 크래시를 방지합니다.
|
|
- **프로필 격리 (Isolation)**: 로그인한 유저가 오직 자신의 프로필만 보고 접근할 수 있도록 하모니 기반의 강력한 필터링을 제공합니다.
|
|
- **세션 관리**: SPT `MongoId` 규격(24자 16진수)에 맞는 세션을 발급하여 클라이언트 호환성을 보장합니다.
|
|
|
|
## 엔드포인트 상세 (Endpoints)
|
|
|
|
| 엔드포인트 | 메서드 | 설명 |
|
|
| :--- | :--- | :--- |
|
|
| `/launcher/profile/register` | POST | 새로운 유저를 가입시키고 로컬 프로필을 생성합니다. |
|
|
| `/launcher/profile/login` | POST | 비밀번호 검증 후 24자리 세션 ID를 발급합니다. |
|
|
| `/launcher/profiles` | POST | 현재 세션 유저의 프로필 목록만 필터링하여 반환합니다. |
|
|
| `/launcher/profile/get` | POST | 특정 프로필 정보를 가져오며, 소유권 여부를 검증합니다. |
|
|
| `/launcher/profile/remove` | POST | 프로필 삭제를 처리하며, 세션 기반 보호를 적용합니다. |
|
|
|
|
## 사용 설명서 (Usage Guide)
|
|
|
|
### 1. 사전 준비
|
|
- **PostgreSQL 서버**: 버전 13 이상을 권장합니다.
|
|
- **데이터베이스 생성**: `spt`라는 이름의 데이터베이스를 생성하십시오.
|
|
- **유저 권한**: `configs.jsonc`에 설정된 계정이 해당 DB에 테이블 생성 권한이 있어야 합니다.
|
|
|
|
### 2. 설정 (`configs.jsonc`)
|
|
`user/mods/PersonalAuthMod/configs.jsonc` 파일을 수정하여 DB 정보를 입력합니다.
|
|
```jsonc
|
|
{
|
|
"db_url": "10.0.1.101", // DB 호스트 주소
|
|
"db_port": 5432, // 포트
|
|
"db_user": "spt", // 계정명
|
|
"db_password": "...", // 비밀번호
|
|
"db_name": "spt" // 데이터베이스 이름
|
|
}
|
|
```
|
|
|
|
### 3. 설치 및 빌드
|
|
```bash
|
|
# 모드 빌드 (자동으로 서버 폴더에 배포됨)
|
|
dotnet build Testing/PersonalAuthMod/PersonalAuthMod.csproj -c Debug
|
|
```
|
|
|
|
### 4. 서버 실행
|
|
`SPTarkov.Server`를 실행하면 콘솔에 다음과 같은 로그가 나타납니다:
|
|
- `[PersonalAuthMod] Config loaded successfully.`
|
|
- `[PersonalAuthMod] DB Manager connected.`
|
|
- `[PersonalAuthMod] Register/Login patches enabled.`
|
|
|
|
## 테스트 방법
|
|
루트 디렉토리에 포함된 `test_mod.sh` 스크립트를 통해 모든 기능을 자동으로 검증할 수 있습니다.
|
|
```bash
|
|
./test_mod.sh
|
|
```
|
|
**테스트 항목:**
|
|
- 신규 회원가입
|
|
- 중복 아이디 가입 차단 (Negative)
|
|
- 틀린 비밀번호 로그인 차단 (Negative)
|
|
- 정상 로그인 및 세션 발급
|
|
- 프로필 목록 조회 및 본인 데이터 격리 확인
|
|
|
|
## 데이터베이스 스키마
|
|
서버 시작 시 `users`와 `sessions` 테이블이 자동으로 생성됩니다.
|
|
- `users`: `username`, `password_hash`, `salt`, `edition` 등 저장
|
|
- `sessions`: `session_id`, `username`, `created_at` 등 저장 (세션 만료 지원)
|