forked from baron/baron-sso
109 lines
3.5 KiB
Markdown
109 lines
3.5 KiB
Markdown
# Baron SSO
|
|
|
|
**Baron SSO**는 화이트 라벨링된 사용자 인증 허브이자 통합 런처입니다.
|
|
**Descope**를 활용하여 안전한 비밀번호 없는 인증(Enchanted Link)을 제공하며, Flutter로 구현된 커스텀 UI를 통해 매끄러운 사용자 경험을 보장합니다. Backend는 Go (Fiber)와 ClickHouse를 사용하여 대용량 감사 로그(Audit Log)를 관리합니다.
|
|
|
|
## 🏗 아키텍처 (Architecture)
|
|
|
|
### 1. Frontend (Flutter Web)
|
|
- **Framework**: Flutter 3.32+
|
|
- **Organization**: `kr.co.baroncs`
|
|
- **Key Packages**: `descope`, `flutter_riverpod`, `go_router`
|
|
- **Features**:
|
|
- 탭 기반 로그인 UI (이메일 / SMS)
|
|
- Descope SDK 연동 (Enchanted Link)
|
|
|
|
### 2. Backend (Go Fiber)
|
|
- **Language**: Go 1.25+
|
|
- **Framework**: Fiber v2.25+
|
|
- **Database**:
|
|
- **ClickHouse**: 감사 로그 (고성능 데이터 수집)
|
|
- **PostgreSQL**: 메타데이터 저장소 (Primary)
|
|
- **Features**:
|
|
- `POST /api/v1/audit`: 감사 로그 수집 API
|
|
|
|
### 4. 주요 시나리오 (Core Scenarios)
|
|
1. **Same Browser SSO**: Baron SSO에 로그인된 상태에서 런처를 통해 타 앱/서비스로 이동 (자동 로그인).
|
|
2. **Cross-Device Auth**: PC에서 로그인 시도 시, 이미 로그인된 모바일 앱으로 알림을 보내 승인 (Enchanted Link 활용).
|
|
3. **Clean Login**: 최초 진입 시 이메일 또는 SMS를 통한 로그인 (향후 OTP, MFA 확장 예정).
|
|
|
|
---
|
|
|
|
## 🚀 시작하기 (Getting Started)
|
|
|
|
### 사전 요구사항 (Prerequisites)
|
|
- Docker & Docker Compose
|
|
- Flutter SDK (로컬 개발용)
|
|
- Go (로컬 백엔드 개발용)
|
|
|
|
### 환경 설정 (Environment Setup)
|
|
1. 예제 환경 설정 파일을 복사합니다.
|
|
```bash
|
|
cp .env.sample .env
|
|
```
|
|
2. **중요**: `.env` 파일을 열어 **Descope Project ID**를 입력해야 합니다.
|
|
```env
|
|
DESCOPE_PROJECT_ID=P2t...
|
|
```
|
|
|
|
### 전체 스택 실행 (Running the Stack)
|
|
|
|
#### 1. 인프라 실행 (데이터베이스)
|
|
데이터 레이어를 먼저 실행합니다.
|
|
```bash
|
|
docker compose -f compose.infra.yaml up -d
|
|
```
|
|
|
|
#### 2. 애플리케이션 실행
|
|
Frontend와 Backend 서비스를 실행합니다.
|
|
```bash
|
|
docker compose up
|
|
```
|
|
|
|
- **Frontend**: http://localhost:5000 접속
|
|
- **Backend**: http://localhost:3000 (API)
|
|
- **ClickHouse**: http://localhost:8123
|
|
|
|
### 로컬 개발 (Manual)
|
|
Docker 없이 코드를 수정하며 개발하려면:
|
|
|
|
**Backend:**
|
|
```bash
|
|
cd backend
|
|
go mod tidy
|
|
go run cmd/server/main.go
|
|
```
|
|
|
|
**Frontend:**
|
|
```bash
|
|
cd frontend
|
|
flutter pub get
|
|
flutter run -d chrome
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 프로젝트 구조 (Project Structure)
|
|
|
|
```
|
|
baron_sso/
|
|
├── backend/ # Go Fiber 애플리케이션
|
|
│ ├── cmd/server/ # 진입점 (Entry point)
|
|
│ ├── internal/ # 도메인, 핸들러, 저장소(Repository)
|
|
│ └── Dockerfile
|
|
├── frontend/ # Flutter 애플리케이션
|
|
│ ├── lib/ # UI 및 로직
|
|
│ └── pubspec.yaml
|
|
├── compose.infra.yaml # DB 서비스 (Postgres, ClickHouse)
|
|
├── docker-compose.yaml # 앱 서비스 (Front, Back)
|
|
├── .env.sample # 환경 설정 템플릿
|
|
└── README.md # 본 파일
|
|
```
|
|
|
|
## 📝 상태 및 로드맵 (Status & Roadmap)
|
|
- [x] **Phase 1**: 초기 설정 및 아키텍처 설계 (완료)
|
|
- [x] **Phase 2**: Backend Audit API 구현 (완료)
|
|
- [x] **Phase 3**: Frontend 로그인 UI 및 Descope 인증 로직 (완료)
|
|
- [ ] **Phase 4**: Frontend - Backend 연동 (Audit 전송) (예정)
|
|
- [ ] **Phase 5**: 대시보드 및 통합 런처 구현 (예정)
|