forked from baron/baron-sso
README update
This commit is contained in:
105
README.md
105
README.md
@@ -1,17 +1,48 @@
|
||||
# Baron SSO
|
||||
|
||||
**Baron SSO**는 화이트 라벨링된 사용자 인증 허브이자 통합 런처입니다.
|
||||
**Descope**를 활용하여 안전한 비밀번호 없는 인증(Enchanted Link)을 제공하며, Flutter로 구현된 커스텀 UI를 통해 매끄러운 사용자 경험을 보장합니다. Backend는 Go (Fiber)와 ClickHouse를 사용하여 대용량 감사 로그(Audit Log)를 관리합니다.
|
||||
**Baron 통합로그인**은 화이트 라벨링된 가족사의 모든 소프트웨어 Auth를 총괄하는 사용자 인증/인가 허브입니다.
|
||||
|
||||
* Ory Stack으로 모든 구성요소를 self-hosting 합니다.
|
||||
* Backend는 Go (Fiber)로 구성된 Ory Stack의 유일한 Command 전송 포인트입니다. 모든 Command는 ClickHouse로 강제 전송되며 Audit Log 시스템을 구성합니다.
|
||||
* Front는 Backend를 통해서만 연동하며 자체가 Ory Stack의 RP기도 합니다. 크게 3개 계층으로 분리됩니다.
|
||||
* UserFront: Flutter로 구현된 커스텀 UI를 통해 매끄러운 사용자 경험을 보장합니다.
|
||||
* 로그인 : 비밀번호, SMS, QR 스캔 등의 수단으로 로그인 가능
|
||||
* 향후 모바일 앱 지원으로 인증 Push 승인 등 MFA 확장 (예정)
|
||||
* 정보변경, 앱 연동 이력 확인 등 개인화 기능
|
||||
* 사용 가능한 앱 리스트 (예정)
|
||||
* AdminFront: 사용자 관리 등 Admin 기능
|
||||
* DevFront: RP 관리 등 개발자 기능
|
||||
|
||||
## 🏗 아키텍처 (Architecture)
|
||||
|
||||
### 0. Ory Stack
|
||||
- Ory Kratos: 사용자 인증/계정 관리(Identity).
|
||||
- Kratos Selfservice UI: Kratos 셀프서비스 플로우 UI.
|
||||
- Ory Hydra: OAuth2/OIDC 발급 및 토큰 관리.
|
||||
- Ory Keto: 권한/정책 기반 접근 제어.
|
||||
- Oathkeeper: 인증/인가 프록시 및 라우팅 게이트웨이.
|
||||
|
||||
```mermaid
|
||||
flowchart
|
||||
subgraph Edge
|
||||
OK["Oathkeeper<br/>(Only Public Entry)"]
|
||||
end
|
||||
|
||||
subgraph App
|
||||
BE["Backend<br/>(Only Upstream)"]
|
||||
end
|
||||
|
||||
subgraph OryStack
|
||||
KR[Kratos]
|
||||
HY[Hydra]
|
||||
KE[Keto]
|
||||
KR --- HY --- KE
|
||||
end
|
||||
BE -->|Command| OryStack
|
||||
OK -->|Query| KR
|
||||
OK -->|Query| HY
|
||||
OK -->|Query| KE
|
||||
```
|
||||
|
||||
### 1. Backend (Go Fiber)
|
||||
- **Language**: Go 1.25+
|
||||
- **Framework**: Fiber v2.25+
|
||||
@@ -23,7 +54,7 @@
|
||||
- `POST /api/v1/audit`: 감사 로그 수집 API
|
||||
- userfront가 바라보는 backend
|
||||
|
||||
### 2. userfront(Flutter Web/App)
|
||||
### 2. UserFront(Flutter Web/App)
|
||||
- **Framework**: Flutter 3.32+
|
||||
- **Key Packages**: `flutter_riverpod`, `go_router`
|
||||
- **Features**:
|
||||
@@ -36,7 +67,7 @@
|
||||
- 앱 별 사용량(호출량) 등 통계
|
||||
- 핵심 Audit 대상
|
||||
|
||||
### 4. devfront(Web) - 향후 분리 예정
|
||||
### 4. devfront(Web)
|
||||
- **Framework**: Vite, React 19+, Shadcn/ui 등
|
||||
- **Features**:
|
||||
- RP 등록 및 관리
|
||||
@@ -54,19 +85,61 @@
|
||||
### 전체 연결 구조도
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
AF[adminfront] -->|"OIDC authorize/token (PKCE)"| HY["Hydra (OIDC 엔진)"]
|
||||
DF[devfront] -->|"OIDC authorize/token (PKCE)"| HY
|
||||
UF["userfront (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
|
||||
flowchart TD
|
||||
subgraph Clients ["External Clients"]
|
||||
AF[adminfront]
|
||||
DF[devfront]
|
||||
UF["userfront"]
|
||||
DS["일반SW"]
|
||||
end
|
||||
|
||||
subgraph AppService ["Control Plane"]
|
||||
BE["Backend (Command/Audit Controller)"]
|
||||
end
|
||||
|
||||
subgraph OryBundle ["Ory Deployment Stack"]
|
||||
direction TB
|
||||
OK["Oathkeeper (Public Proxy/OIDC)"]
|
||||
|
||||
subgraph OryEngines ["Ory Services"]
|
||||
direction LR
|
||||
HY["Hydra"]
|
||||
KR["Kratos"]
|
||||
KE["Keto"]
|
||||
end
|
||||
|
||||
ICH[(Internal Clickhouse)]
|
||||
|
||||
%% Internal Flow within Bundle
|
||||
OK -->|Routing/Queries| OryEngines
|
||||
OK -.->|Access/Usage Log| ICH
|
||||
end
|
||||
|
||||
subgraph AuditDB ["Audit Storage"]
|
||||
ECH[(External Clickhouse)]
|
||||
end
|
||||
|
||||
%% Key Command Path
|
||||
AF & DF & UF & DS ==>|Actions / Commands| BE
|
||||
|
||||
%% Backend Responsibilities
|
||||
BE -->|Admin/State Control| OryEngines
|
||||
BE -.->|Mandatory Audit Log| ECH
|
||||
|
||||
%% Connection Note (Hidden flow mentioned in logic)
|
||||
%% OK is technically the entry for OIDC, but removed as per request
|
||||
|
||||
%% Styles
|
||||
style OryBundle fill:#f8f9fa,stroke:#333,stroke-width:2px
|
||||
style BE fill:#bbf,stroke:#333,stroke-width:2px
|
||||
style ECH fill:#fdd,stroke:#333
|
||||
style ICH fill:#dfd,stroke:#333
|
||||
style OK fill:#f9f,stroke:#333
|
||||
style OryEngines fill:#fff,stroke:#999,stroke-dasharray: 5 5
|
||||
```
|
||||
|
||||
Kratos가 사용자 SoT이며 Hydra는 순수 OIDC 토큰 엔진입니다. Magic Link는 Fiber 래퍼가 Kratos 세션을 만들고 필요 시 Hydra Login Accept를 수행합니다. Descope 등 보조 IDP는 Kratos Social/OIDC provider로 연결합니다.
|
||||
|
||||
Kratos가 사용자 SoT이며 Hydra는 순수 OIDC 토큰 엔진입니다. 비지니스로직은 Backend를 통해서, 기본 인증 로직은 Ory Stack을 통해 진행됩니다.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user