forked from baron/baron-sso
문서 업데이트
This commit is contained in:
77
README.md
77
README.md
@@ -5,27 +5,68 @@
|
||||
|
||||
## 🏗 아키텍처 (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)
|
||||
### 0. Ory Stack
|
||||
- Ory Kratos: 사용자 인증/계정 관리(Identity).
|
||||
- Kratos Selfservice UI: Kratos 셀프서비스 플로우 UI.
|
||||
- Ory Hydra: OAuth2/OIDC 발급 및 토큰 관리.
|
||||
- Ory Keto: 권한/정책 기반 접근 제어.
|
||||
- Oathkeeper: 인증/인가 프록시 및 라우팅 게이트웨이.
|
||||
|
||||
### 2. Backend (Go Fiber)
|
||||
### 1. Backend (Go Fiber)
|
||||
- **Language**: Go 1.25+
|
||||
- **Framework**: Fiber v2.25+
|
||||
- **Database**:
|
||||
- **ClickHouse**: 감사 로그 (고성능 데이터 수집)
|
||||
- **PostgreSQL**: 메타데이터 저장소 (Primary)
|
||||
- **Features**:
|
||||
- 인증용 SMS 발송 등 Ory-Stack으로 구현 어려운 부분 직접 구현
|
||||
- `POST /api/v1/audit`: 감사 로그 수집 API
|
||||
- User-Front가 바라보는 backend
|
||||
|
||||
### 2. User-Front(Flutter Web/App)
|
||||
- **Framework**: Flutter 3.32+
|
||||
- **Key Packages**: `flutter_riverpod`, `go_router`
|
||||
- **Features**:
|
||||
- 탭 기반 로그인 UI (비밀번호 기반 / 링크 기반 / QR 기반 등)
|
||||
|
||||
### 3. Admin-Front(Web)
|
||||
- **Framework**: Vite, React 19+, Shadcn/ui 등
|
||||
- **Features**:
|
||||
- 사용자 관리, 권한 부여 등 관리자 기능
|
||||
- 앱 별 사용량(호출량) 등 통계
|
||||
- 핵심 Audit 대상
|
||||
|
||||
### 4. Dev-Front(Web) - 향후 분리 예정
|
||||
- **Framework**: Vite, React 19+, Shadcn/ui 등
|
||||
- **Features**:
|
||||
- RP 등록 및 관리
|
||||
- RP별 Consent 관리
|
||||
|
||||
|
||||
### 4. 주요 시나리오 (Core Scenarios)
|
||||
1. **Same Browser SSO**: Baron SSO에 로그인된 상태에서 런처를 통해 타 앱/서비스로 이동 (자동 로그인).
|
||||
2. **Cross-Device Auth**: PC에서 로그인 시도 시, 이미 로그인된 모바일 앱으로 알림을 보내 승인 (Enchanted Link 활용).
|
||||
3. **Clean Login**: 최초 진입 시 이메일 또는 SMS를 통한 로그인 (향후 OTP, MFA 확장 예정).
|
||||
1. **Same Browser SSO**: Baron 통합로그인 서비스에 로그인된 상태에서 런처를 통해 타 앱/서비스로 이동 (자동 로그인).
|
||||
1.1. 단 약관동의(Consent) 이력이 없으면 Consent 단계로 이동
|
||||
2. **Cross-Device Auth**: 이메일 SMS 등의 수단으로 링크를 전달받고 해당 링크를 사용자가 클릭하면 최초 로그인 요청한 세션이 활성화
|
||||
2.1 향후 App Push 등 2차 인증 강화수단 검토 필요
|
||||
3. **QR Login**: 최초 진입 시 사전 로그인되어 있는 웹/앱을 이용해 QR 코드를 스캔하여, QR코드가 로딩된 Device를 로그인 상태로 전환
|
||||
|
||||
|
||||
### 전체 연결 구조도
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
AF[Admin Front] -->|"OIDC authorize/token (PKCE)"| HY["Hydra (OIDC 엔진)"]
|
||||
DF[Dev Front] -->|"OIDC authorize/token (PKCE)"| HY
|
||||
UF["User Front (Login/Consent UI)"] <-->|Hydra login/consent redirect| HY
|
||||
UF -->|Kratos Browser Flow| KR["Kratos (SoT: identities/traits)"]
|
||||
KR -->|subject=identity.id| HY
|
||||
HY -->|ID/Access Token| RP[Relying Party Apps]
|
||||
MG["Magic Link Wrapper (Fiber)"] -->|1회용 토큰→Kratos CreateSession| KR
|
||||
MG -->|"Hydra Login Accept (옵션)"| HY
|
||||
DS["Descope/Social IDP"] -->|Kratos Social/OIDC| KR
|
||||
```
|
||||
|
||||
Kratos가 사용자 SoT이며 Hydra는 순수 OIDC 토큰 엔진입니다. Magic Link는 Fiber 래퍼가 Kratos 세션을 만들고 필요 시 Hydra Login Accept를 수행합니다. Descope 등 보조 IDP는 Kratos Social/OIDC provider로 연결합니다.
|
||||
|
||||
---
|
||||
|
||||
@@ -91,9 +132,13 @@ baron_sso/
|
||||
│ ├── cmd/server/ # 진입점 (Entry point)
|
||||
│ ├── internal/ # 도메인, 핸들러, 저장소(Repository)
|
||||
│ └── Dockerfile
|
||||
├── frontend/ # Flutter 애플리케이션
|
||||
│ ├── lib/ # UI 및 로직
|
||||
├── user-front/ # Flutter 애플리케이션
|
||||
│ ├── src/ # UI 및 로직
|
||||
│ └── pubspec.yaml
|
||||
├── admin-front/ # React 기반 관리
|
||||
│ ├── src/ # UI 및 로직
|
||||
│ └── pubspec.yaml
|
||||
├── compose.ory-stack.yaml # DB 서비스 (Postgres, ClickHouse)
|
||||
├── compose.infra.yaml # DB 서비스 (Postgres, ClickHouse)
|
||||
├── docker-compose.yaml # 앱 서비스 (Front, Back)
|
||||
├── .env.sample # 환경 설정 템플릿
|
||||
@@ -102,7 +147,7 @@ baron_sso/
|
||||
|
||||
## 📝 상태 및 로드맵 (Status & Roadmap)
|
||||
- [x] **Phase 1**: 초기 설정 및 아키텍처 설계 (완료)
|
||||
- [x] **Phase 2**: Backend Audit API 구현 (완료)
|
||||
- [x] **Phase 3**: Frontend 로그인 UI 및 Descope 인증 로직 (완료)
|
||||
- [ ] **Phase 4**: Frontend - Backend 연동 (Audit 전송) (예정)
|
||||
- [x] **Phase 2**: Backend Audit API 구현 (일부 완료)
|
||||
- [x] **Phase 3**: User Front 로그인 UI 인증 로직 (완료)
|
||||
- [ ] **Phase 4**: Admin Front 기능 추가 (예정)
|
||||
- [ ] **Phase 5**: 대시보드 및 통합 런처 구현 (예정)
|
||||
|
||||
Reference in New Issue
Block a user