Skip to content

Commit 58d5267

Browse files
committed
docs: v2 문서 인증·명령어 기준 정합성 동기화
현재 정책(로컬 로그인 기본, OAuth 선택)과 pnpm 표준을 문서 전반에 일치시켜 설치/보안/로드맵 해석 차이를 줄입니다.
1 parent 14afe45 commit 58d5267

5 files changed

Lines changed: 93 additions & 87 deletions

File tree

docs/v2_FINANCIAL-LEDGER/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ docker-compose up -d
7171
```bash
7272
git clone https://github.com/Fieldstack-Project/fieldstack.git
7373
cd fieldstack
74-
npm install
75-
npm run start
74+
pnpm install
75+
pnpm build
76+
pnpm start
7677

7778
# 브라우저 자동 열림
7879
→ http://localhost:3000/install
@@ -169,7 +170,7 @@ npm run start
169170

170171
- **Backend**: TypeScript + Node.js
171172
- **Frontend**: React + TypeScript + Vite
172-
- **Database**: PostgreSQL / SQLite / Supabase / MongoDB 외 모든 DB 종류 및 서비스
173+
- **Database**: PostgreSQL / SQLite / Supabase / MongoDB (우선 지원)
173174
- **Monorepo**: pnpm workspace
174175
- **AI**: Gemini / OpenAI / Claude / Ollama 등 API를 등록할 수 있는 모든 AI 서비스
175176
- **Deployment**: Docker / Railway / Cloudflare

docs/v2_FINANCIAL-LEDGER/_drafts/authentication_modes_draft.md

Lines changed: 46 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,117 +2,111 @@
22

33
## 개요
44

5-
Fieldstack는 기본적으로 외부 인증 제공자(OAuth 기반)를 사용하는 웹 서비스 환경을 전제로 설계된다.
6-
이는 사용자 편의성과 보안, 그리고 운영 부담을 최소화하기 위한 선택이다.
5+
Fieldstack는 현재 **이메일 + 비밀번호 기반 로컬 로그인**을 기본 인증 방식으로 사용한다.
6+
이 문서는 과거 외부 OAuth(구글 로그인) 중심 초안을 정리하고,
7+
현행 정책 기준에서 인증 모드 확장 방향을 다시 기록하기 위한 초안이다.
78

8-
그러나 특정 환경(관공서, 세무 관련 기관, 폐쇄망, 내부망 등)에서는
9-
외부 인증 제공자의 사용이 제한되거나 금지될 수 있다.
10-
11-
본 문서는 이러한 상황을 대비하여,
12-
Fieldstack가 **인증 방식의 확장 또는 분리된 운영 모드**를 어떻게 다룰 것인지에 대한
13-
초안 수준의 정책과 설계 방향을 기록한다.
14-
15-
이 문서는 현재 구현을 전제로 하지 않으며,
16-
향후 필요 시 참고 및 확장 목적으로 유지된다.
9+
본 문서는 현재 구현 완료 상태를 의미하지 않으며,
10+
향후 요구사항 변경 시 참고할 설계 기준을 보존하는 목적을 가진다.
1711

1812
---
1913

2014
## 기본 인증 정책
2115

2216
Fieldstack의 기본 공개 버전은 다음 인증 정책을 따른다.
2317

24-
- 외부 인증 제공자(OAuth 기반) 사용
25-
- 별도의 자체 계정 관리 기능 제공하지 않음
26-
- 비밀번호 저장, 관리 책임을 시스템이 직접 지지 않음
18+
- 이메일 + 비밀번호 로그인 기본/필수
19+
- 비밀번호는 안전한 해시(예: Argon2id)로 저장
20+
- Whitelist 기반 접근 제어 적용
21+
- 필요 시 TOTP/Passkey/OAuth는 선택 기능으로 확장 가능
2722

28-
이 정책은 프로젝트의 기본 보안 모델이며,
29-
일반 사용자 환경에서는 변경되지 않는다.
23+
즉, 기본 모델은 "외부 계정 의존"이 아니라
24+
"로컬 계정 기반 + 선택 확장"이다.
3025

3126
---
3227

3328
## 제한 환경에서의 사용 시나리오
3429

35-
다음과 같은 환경에서는 기본 인증 정책을 적용하기 어렵다.
30+
다음과 같은 환경에서는 인증 정책이 더 엄격하게 요구될 수 있다.
3631

3732
- 관공서, 세무소, 공공기관
3833
- 외부 인터넷 접근이 제한된 내부망
3934
- 외부 계정 연동이 정책적으로 금지된 조직
4035
- 감사 및 책임 주체가 명확히 요구되는 환경
4136

42-
이러한 경우, 단순한 로그인 방식 추가가 아닌
43-
**운영 환경 자체가 다른 배포 형태**로 간주한다.
37+
경우 핵심은 OAuth 제거 자체가 아니라,
38+
기본 로컬 인증에 추가 보안/운영 통제를 적용하는 방식이다.
4439

4540
---
4641

4742
## 운영 모드 분리 원칙
4843

49-
Fieldstack는 인증 방식의 차이를
50-
단일 서비스 내 옵션으로 흡수하지 않는다.
44+
Fieldstack는 인증 요구 차이를
45+
단일 설정 토글 하나로 단순화하지 않는다.
5146

52-
대신, 다음과 같은 원칙을 따른다.
47+
대신 다음 원칙을 따른다.
5348

54-
- 인증 정책이 다른 경우, 별도의 운영 모드로 분리
55-
- 기존 공개 버전과 코드, 배포, 설정을 논리적으로 분리
56-
- 기본 버전의 보안 모델을 훼손하지 않음
49+
- 기본 모드: 로컬 계정(이메일/비밀번호) 중심 운영
50+
- 제한 모드: 정책 요구에 맞춘 보안 통제(2FA 강제, 감사 강화, 계정 프로비저닝 제약) 추가
51+
- 모드별 설정, 운영 가이드, 감사 기준을 명확히 분리
5752

58-
이로 인해, 제한 환경 대응은
59-
"기능 추가"가 아닌 "별도 버전 제공"으로 취급된다.
53+
따라서 인증 변화는 단순 UI 옵션이 아니라
54+
운영 정책 단위에서 관리한다.
6055

6156
---
6257

63-
## 인증 제공자 추상화
58+
## 인증 모드 추상화
6459

6560
향후 확장을 대비하여,
66-
Fieldstack Core는 인증 방식의 구현 세부를 직접 다루지 않는다.
61+
Fieldstack Core는 특정 로그인 공급자 구현에 직접 결합되지 않는다.
6762

68-
Core는 다음과 같은 추상 인터페이스만을 전제로 한다.
63+
Core는 다음 공통 인터페이스를 전제로 한다.
6964

7065
- 사용자 인증 요청
7166
- 인증 결과 검증
72-
- 세션 또는 토큰 처리
67+
- 세션 또는 토큰 발급/검증
68+
- 권한/역할 컨텍스트 전달
7369

74-
구체적인 인증 방식은
75-
외부 인증 제공자 또는 내부 인증 시스템에 의해 구현된다.
70+
구체 구현은 로컬 인증, 선택 OAuth, Passkey 등
71+
개별 어댑터에서 담당한다.
7672

77-
이 추상화는:
78-
- 기본 버전의 단순성 유지
79-
- 별도 운영 모드 개발 시 영향 최소화
80-
를 목적으로 한다.
73+
이 추상화의 목적은 다음과 같다.
74+
- 기본 인증 정책의 안정성 유지
75+
- 인증 수단 추가 시 기존 모듈 영향 최소화
8176

8277
---
8378

8479
## 별도 운영 모드 (예: Gov / Enterprise)
8580

86-
제한 환경을 위한 운영 모드는 다음과 같은 특성을 가질 수 있다.
81+
제한 환경을 위한 운영 모드는 다음 특성을 가질 수 있다.
8782

88-
- 외부 OAuth 사용하지 않음
89-
- 내부 계정 또는 조직 계정 기반 인증
90-
- 관리자 주도 계정 생성 및 관리
83+
- 로컬 계정 기반 인증만 허용 (선택 OAuth 비활성)
84+
- 관리자 주도 계정 생성/비활성/복구 절차 적용
85+
- TOTP 2FA 강제 정책 적용
9186
- 감사 로그 및 접근 기록 강화
9287
- 네트워크 격리 환경 전제
9388

94-
이 모드는 기본 공개 버전과는
95-
배포, 설정, 운영 측면에서 독립적으로 관리된다.
89+
이 모드는 기본 공개 버전과
90+
설정, 운영 절차, 컴플라이언스 기준에서 독립적으로 관리한다.
9691

9792
---
9893

9994
## 문서 상태
10095

10196
본 문서는 **초안(Draft)** 상태이다.
10297

103-
- 현재 구현 계획에는 포함되지 않는다.
104-
- 즉시 개발을 의미하지 않는다.
98+
- 현재 구현 계획의 확정 사양이 아니다.
99+
- 즉시 개발 항목을 의미하지 않는다.
105100
- 향후 요청 또는 필요 발생 시 참고 자료로 활용된다.
106101

107-
설계 방향과 판단 근거를 보존하는 것을
108-
유일한 목적으로 한다.
102+
설계 방향과 의사결정 근거를 보존하는 것이
103+
유일한 목적이다.
109104

110105
---
111106

112107
## 요약
113108

114-
- Fieldstack는 기본적으로 외부 인증 제공자를 사용한다.
115-
- 인증 방식이 다른 요구는 별도 운영 모드로 분리한다.
116-
- 로그인 방식 추가는 기능 요청이 아닌 제품 분기다.
117-
- 본 문서는 미래 확장을 대비한 설계 기록이다.
118-
109+
- Fieldstack의 기본 인증은 이메일 + 비밀번호 기반 로컬 로그인이다.
110+
- OAuth(구글 로그인)는 기본이 아닌 선택 확장 옵션이다.
111+
- 인증 정책 차이는 운영 모드 단위로 분리해 관리한다.
112+
- 본 문서는 미래 확장을 대비한 설계 기록 초안이다.

docs/v2_FINANCIAL-LEDGER/architecture/01-decisions.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@
9797
9898
2. 모달 표시: "설치 중..." (진행률 표시)
9999
100-
3. Backend 백그라운드 작업:
101-
- Git clone
102-
- 보안 검사
103-
- npm install
104-
- DB 마이그레이션
105-
- 런타임 로드
100+
3. Backend 백그라운드 작업:
101+
- Git clone
102+
- 보안 검사
103+
- pnpm install
104+
- DB 마이그레이션
105+
- 런타임 로드
106106
107107
4. WebSocket으로 Frontend에 알림
108108
@@ -216,10 +216,10 @@ reloadModule 메서드는 개발 모드에서 사용되는 Hot Reload 기능입
216216
- 스마트폰 잠금과 동일한 UX
217217
- 숫자 패드로 빠른 입력
218218

219-
3. **구현 단순성**
220-
- bcrypt/pbkdf2로 안전하게 저장
221-
- 세션 관리 간단
222-
- 2FA보다 복잡도 낮음
219+
3. **구현 단순성**
220+
- Argon2id(비밀번호) / PBKDF2(PIN)로 목적별 저장
221+
- 세션 관리 간단
222+
- 2FA보다 복잡도 낮음
223223

224224
### 🎯 구현 방향
225225

docs/v2_FINANCIAL-LEDGER/roadmap/00-goals.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@
122122
> "안전하고 신뢰할 수 있는 시스템"
123123
124124
**의미:**
125-
- Google OAuth 인증
125+
- 이메일 + 비밀번호 기반 로컬 로그인(기본)
126+
- 선택 로그인 확장(OAuth/Passkey)
126127
- Whitelist 기반 접근 제어
127-
- 관리자 비밀번호
128+
- 관리자 PIN 기반 보호
128129
- 암호화된 데이터
129130

130131
**측정 기준:**

docs/v2_FINANCIAL-LEDGER/technical/00-tech-stack.md

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@
66
- **Node.js** 20+
77
- **TypeScript** 5.0+
88

9-
### 프레임워크
10-
- **Express** 또는 **Fastify**
11-
- REST API
12-
- Middleware 시스템
13-
- 라우팅
14-
- **정적 파일 서빙** (프로덕션)
9+
### 프레임워크
10+
- **Express** (기본)
11+
- REST API
12+
- Middleware 시스템
13+
- 라우팅
14+
- **정적 파일 서빙** (프로덕션)
15+
- **Fastify** (대안)
16+
- REST API
17+
- Middleware 시스템
18+
- 라우팅
19+
- 고성능 서버 옵션
1520

1621
### 데이터베이스
1722
**다중 Provider 지원:**
@@ -26,16 +31,20 @@
2631
- 마이그레이션 관리
2732
- Multi-provider 지원
2833

29-
### 인증
30-
- **Passport.js**
31-
- Google OAuth 2.0
32-
- 전략 패턴
33-
- **JWT** - 세션 관리
34-
35-
### 검증
36-
- **Zod** 또는 **Yup**
37-
- 스키마 검증
38-
- TypeScript 통합
34+
### 인증
35+
- **로컬 인증 (기본)**
36+
- 이메일 + 비밀번호
37+
- Argon2id 해시 저장
38+
- **선택 인증 확장**
39+
- Google OAuth 2.0 (선택)
40+
- Passkey/WebAuthn (선택)
41+
- **JWT** - 세션 관리
42+
43+
### 검증
44+
- **Zod** (기본)
45+
- 스키마 검증
46+
- TypeScript 통합
47+
- **Yup** (대안)
3948

4049
### 스케줄링
4150
- **node-cron**
@@ -373,9 +382,10 @@ pnpm-workspace.yaml 파일에서 워크스페이스 범위를 정의합니다. p
373382

374383
## 보안
375384

376-
### 암호화
377-
- **bcrypt** - 비밀번호 해싱
378-
- **crypto** (Node.js 내장) - 토큰 암호화
385+
### 암호화
386+
- **Argon2id** - 비밀번호 해싱
387+
- **PBKDF2** - 관리자 PIN 해싱
388+
- **crypto** (Node.js 내장) - 토큰 암호화
379389

380390
### 환경 변수
381391
- **dotenv**
@@ -576,4 +586,4 @@ NODE_ENV를 'production'으로, PORT를 3000으로 설정합니다. SERVE_FRONTE
576586
### 인프라
577587
- [ ] Kubernetes 지원
578588
- [ ] 분산 데이터베이스
579-
- [ ] 로드 밸런싱
589+
- [ ] 로드 밸런싱

0 commit comments

Comments
 (0)