|
|
||
|---|---|---|
| .gitignore | ||
| AuthConfig.cs | ||
| AuthRouter.cs | ||
| DatabaseManager.cs | ||
| ModMetadata.cs | ||
| ModPatches.cs | ||
| PersonalAuthMod.cs | ||
| PersonalAuthMod.csproj | ||
| README.md | ||
| configs.jsonc | ||
| test_mod.sh | ||
README.md
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 정보를 입력합니다.
{
"db_url": "10.0.1.101", // DB 호스트 주소
"db_port": 5432, // 포트
"db_user": "spt", // 계정명
"db_password": "...", // 비밀번호
"db_name": "spt" // 데이터베이스 이름
}
3. 설치 및 빌드
# 모드 빌드 (자동으로 서버 폴더에 배포됨)
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 스크립트를 통해 모든 기능을 자동으로 검증할 수 있습니다.
./test_mod.sh
테스트 항목:
- 신규 회원가입
- 중복 아이디 가입 차단 (Negative)
- 틀린 비밀번호 로그인 차단 (Negative)
- 정상 로그인 및 세션 발급
- 프로필 목록 조회 및 본인 데이터 격리 확인
데이터베이스 스키마
서버 시작 시 users와 sessions 테이블이 자동으로 생성됩니다.
users:username,password_hash,salt,edition등 저장sessions:session_id,username,created_at등 저장 (세션 만료 지원)