Files
MyDoc/[요청과업1][산출물05] Baron-SSO 아키텍쳐 리뷰.md

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 호출 테스트