PersonalAuthMod/README.md

3.4 KiB

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)
  • 정상 로그인 및 세션 발급
  • 프로필 목록 조회 및 본인 데이터 격리 확인

데이터베이스 스키마

서버 시작 시 userssessions 테이블이 자동으로 생성됩니다.

  • users: username, password_hash, salt, edition 등 저장
  • sessions: session_id, username, created_at 등 저장 (세션 만료 지원)