8.4 KiB
8.4 KiB
Baron SSO Architecture Review
문서 목적
본 문서는 Baron SSO 시스템의 전체 아키텍처를 이해하고, 팀 아키텍처 리뷰 시 설명할 수 있도록 작성한 분석 문서이다.
0. 작업 개요
| 항목 | 내용 |
|---|---|
| 작업명 | 요청과업1 - Baron-SSO Architecture Review |
| 작업일 | 2026-06-15 |
| 시작 | 09:30 |
| 종료 | 16:00 |
| 휴게시간 | 12:00 ~ 13:00 |
| 총 작업시간 | 약6시간 30분 |
| 작업자 | 문형석 책임연구원 |
1. 시스템 개요
Baron SSO는 그룹사 및 사내 시스템의 인증(Authentication)과 인가(Authorization)를 통합 관리하기 위한 IAM(Identity & Access Management) 플랫폼이다.
주요 목적
- 통합 로그인(SSO)
- OAuth2 / OIDC 제공
- 사용자 인증
- 권한 관리
- 조직 관리
- 개발자 애플리케이션 연동 지원
2. 전체 아키텍처
flowchart TD
User[사용자]
Gateway[Gateway]
UF[UserFront]
AF[AdminFront]
DF[DevFront]
OF[OrgFront]
Backend[Backend<br>Go + Fiber]
Kratos[Kratos]
Hydra[Hydra]
Keto[Keto]
Oathkeeper[Oathkeeper]
PG[(PostgreSQL)]
Redis[(Redis)]
CH[(ClickHouse)]
User --> Gateway
Gateway --> UF
Gateway --> AF
Gateway --> DF
Gateway --> OF
UF --> Backend
AF --> Backend
DF --> Backend
OF --> Backend
Backend --> Kratos
Backend --> Hydra
Backend --> Keto
Backend --> Oathkeeper
Backend --> PG
Backend --> Redis
Oathkeeper --> Hydra
Oathkeeper --> Keto
Backend --> CH
3. 상위 컴포넌트 역할
Gateway
역할
- 모든 외부 요청 진입점
- Reverse Proxy
- URL Routing
예시
/ → UserFront
/api/* → Backend
/auth/* → Kratos
/oidc/* → Hydra
Frontend
UserFront
일반 사용자용
기능
- 로그인
- 회원가입
- 비밀번호 찾기
- QR 로그인
- 내 정보
AdminFront
시스템 관리자용
기능
- 사용자 관리
- 권한 관리
- 시스템 관리
DevFront
개발자 포털
기능
- OAuth Client 등록
- OIDC 설정
- API 연동
OrgFront
조직도 관리 포털
대상
- 회사 내부 사용자
기능
- 조직도 관리
- 부서 관리
- 조직 구성원 관리
외부 사용자는 사용하지 않는 것으로 판단
4. Backend 구조
Backend는 Go 기반 Layered Architecture 구조
flowchart TD
Handler[Handler]
Service[Service]
Repository[Repository]
DB[(Database)]
Handler --> Service
Service --> Repository
Repository --> DB
설명
Handler
- API 요청 수신
Service
- 업무 로직 수행
Repository
- DB 접근
Database
- 실제 데이터 저장
5. Ory Stack
flowchart LR
Kratos[Kratos<br>Authentication]
Hydra[Hydra<br>OAuth2/OIDC]
Keto[Keto<br>Authorization]
Oathkeeper[Oathkeeper<br>API Protection]
Oathkeeper --> Hydra
Oathkeeper --> Keto
Kratos
인증
- 로그인
- 회원가입
- 세션
Hydra
토큰 발급
- Access Token
- ID Token
Keto
권한 판단
- 사용 가능 여부 확인
Oathkeeper
문지기
- 토큰 검사
- 권한 검사
6. 로그인 인증 흐름 (Kratos 중심)
목적
사용자의 신원을 확인하고 로그인 세션을 생성한다.
담당 컴포넌트
Kratos
Mermaid
sequenceDiagram
participant U as 사용자
participant GW as Gateway
participant FE as UserFront
participant BE as Backend
participant KRA as Kratos
participant DB as PostgreSQL
U->>GW: localhost:5000 접속
GW->>FE: 로그인 화면 제공
FE-->>U: Login Page
U->>FE: ID / PW 입력
FE->>GW: 로그인 요청
GW->>BE: POST /api/v1/auth/password/login
BE->>KRA: 사용자 인증 요청
KRA-->>BE: 인증 성공
KRA-->>BE: Session 생성
BE->>DB: 로그인 이력 저장
BE-->>FE: 로그인 성공
FE-->>U: Dashboard 이동
생성되는 정보
Kratos
Identity
Session
예시
{
"identity_id":"user-123",
"session_id":"session-456"
}
7. 로그인 후 토큰 발급 흐름 (Hydra 중심)
목적
인증된 사용자를 SSO 사용자로 전환
다른 시스템에서도 사용할 수 있는 Token 발급
담당 컴포넌트
Hydra
Mermaid
sequenceDiagram
participant BE as Backend
participant HYD as Hydra
BE->>HYD: Token 발급 요청
HYD-->>BE: Access Token
HYD-->>BE: ID Token
HYD-->>BE: Refresh Token
생성되는 정보
Access Token
API 접근용
ID Token
사용자 정보 전달
Refresh Token
Access Token 재발급
예시
{
"access_token":"eyJhbGciOi...",
"id_token":"eyJhbGciOi...",
"refresh_token":"eyJhbGciOi..."
}
8. 토큰 보유 상태 접근 흐름
상황
이미 로그인 완료
Session 존재
또는
Access Token 존재
Mermaid
sequenceDiagram
participant U as 사용자
participant GW as Gateway
participant FE as Frontend
participant OAT as Oathkeeper
participant HYD as Hydra
participant KET as Keto
participant BE as Backend
participant DB as PostgreSQL
U->>GW: 서비스 접속
GW->>FE: 화면 제공
U->>FE: 내 정보 클릭
FE->>GW: GET /api/v1/me
GW->>OAT: API 요청 전달
OAT->>HYD: 토큰 검증
HYD-->>OAT: active=true
HYD-->>OAT: sub=user-123
OAT->>KET: 권한 확인
KET-->>OAT: allowed=true
OAT->>BE: 인증 완료 요청
BE->>DB: 사용자 조회
DB-->>BE: 사용자 정보
BE-->>FE: 응답 반환
FE-->>U: 화면 표시
단계별 이동 데이터
Frontend → Gateway
GET /api/v1/me
포함
Session Cookie
또는
Access Token
Hydra 응답
{
"active": true,
"sub":"user-123"
}
Keto 응답
{
"allowed": true
}
9. 토큰 없는 상태 접근 흐름
상황
최초 접속
로그인 안됨
세션 없음
토큰 없음
Mermaid
sequenceDiagram
participant U as 사용자
participant GW as Gateway
participant FE as Frontend
participant OAT as Oathkeeper
participant BE as Backend
participant KRA as Kratos
participant HYD as Hydra
U->>GW: 보호된 페이지 접근
GW->>FE: 페이지 요청
FE->>OAT: API 요청
OAT-->>FE: 인증 필요
FE-->>U: 로그인 페이지 이동
U->>FE: ID/PW 입력
FE->>BE: 로그인 요청
BE->>KRA: 사용자 인증
KRA-->>BE: 인증 성공
BE->>HYD: Token 발급 요청
HYD-->>BE: Access Token
BE-->>FE: 로그인 성공
FE-->>U: Dashboard 이동
10. OIDC 인증 흐름
목적
다른 시스템이 Baron SSO를 로그인 서버로 사용
Mermaid
sequenceDiagram
participant User
participant ClientApp
participant Hydra
participant Kratos
User->>ClientApp: 서비스 접속
ClientApp->>Hydra: 인증 요청
Hydra->>Kratos: 로그인 필요
Kratos-->>User: 로그인 화면
User->>Kratos: ID/PW 입력
Kratos-->>Hydra: 인증 성공
Hydra-->>ClientApp: ID Token
Hydra-->>ClientApp: Access Token
ClientApp-->>User: 로그인 완료
11. Ory Stack 역할 정리
flowchart LR
User[사용자]
Kratos[Kratos<br>인증]
Hydra[Hydra<br>토큰]
Oathkeeper[Oathkeeper<br>검문소]
Keto[Keto<br>권한]
Backend[Backend]
User --> Kratos
Kratos --> Hydra
Hydra --> Oathkeeper
Oathkeeper --> Keto
Keto --> Backend
한 줄 요약
Kratos
누구인가?
Hydra
인증 증명서 발급
Oathkeeper
토큰 확인
Keto
권한 확인
Backend
업무 처리
현재 검증 상태
완료
WSL 구축
Docker 구축
Ory Stack 기동
Backend 기동
Frontend 기동
로그인 성공
로그아웃 성공
재로그인 성공
회원가입 화면 진입 성공
예정
회원가입 완료 테스트
비밀번호 찾기 테스트
QR 로그인 테스트
AdminFront 테스트
DevFront 테스트
OIDC 인증 테스트
API 호출 테스트