Files
BaronSSO/baron-sso/docs/ory-stack-guide.md

3.2 KiB

Ory Stack 상세 가이드 (Baron SSO)

이 문서는 Baron SSO의 핵심 엔진인 Ory Stack의 구성 요소와 전체적인 인증/인가 플로우를 설명합니다.

1. 구성 요소별 상세 역할

구성 요소 별칭 주요 역할 핵심 기능
Kratos Identity 사용자 관리 회원가입, 로그인, MFA, 프로필 수정, 계정 복구
Hydra OAuth2/OIDC 연동 및 토큰 Access/ID 토큰 발급, 외부 서비스 SSO 연동
Keto Authorization 권한 제어 RBAC, ACL, "누가 무엇을 할 수 있는가" 판별
Oathkeeper Proxy/Gateway 접근 통제 요청 검증, 세션 확인, 헤더 변환, API 보호

2. 시스템 플로우 (System Flow)

사용자가 보호된 백엔드 리소스에 접근할 때의 일반적인 흐름입니다.

[인증 및 접근 흐름]

  1. Request: 사용자가 API 요청을 보냄 (예: GET /api/data).
  2. Intercept (Oathkeeper): Oathkeeper가 요청을 가로챔.
  3. Authenticate (Kratos): Oathkeeper가 Kratos에게 사용자의 세션 쿠키가 유효한지 확인.
  4. Authorize (Keto): Oathkeeper가 Keto에게 해당 사용자가 /api/data를 볼 권한이 있는지 확인.
  5. Transform: 모든 검증이 끝나면 Oathkeeper가 사용자 정보를 헤더(예: X-User-ID)에 담아 백엔드로 전달.
  6. Response: 백엔드가 로직을 수행하고 결과를 반환.

[SSO 연동 흐름 (OIDC)]

  1. Discovery: 외부 서비스(App A)가 로그인 필요 시 Hydra로 인증 요청을 보냄.
  2. Login Challenge: Hydra가 로그인 UI(userfront)로 리다이렉트하며 챌린지를 보냄.
  3. Auth (Kratos): 사용자가 userfront에서 로그인(Kratos 사용).
  4. Accept: userfront가 로그인 성공 시 Hydra에게 챌린지 수락을 알림.
  5. Token Issuance: Hydra가 App A에게 Auth Code를 주고, App A는 이를 Access/ID Token으로 교환.

3. 아키텍처 다이어그램

graph TD
    User((사용자))
  
    subgraph "Edge / Gateway"
        OK[Ory Oathkeeper]
    end
  
    subgraph "Identity & Access Layer"
        KR[Ory Kratos]
        HY[Ory Hydra]
        KE[Ory Keto]
    end
  
    subgraph "Application Layer"
        BE[Backend API]
        AF[Admin Front]
        UF[User Front]
    end

    User -->|API Request| OK
    User -->|Login/Register| UF
    UF --> KR
  
    OK -->|1. 세션 확인| KR
    OK -->|2. 권한 확인| KE
    OK -->|3. 요청 전달| BE
  
    AF -->|관리 작업| BE
    BE -->|Admin API 호출| KR & HY & KE
  
    HY -->|SSO 토큰 발급| User

4. 요약

  • Kratos는 사용자의 정보를 알고 있습니다.
  • Keto는 사용자의 권한을 알고 있습니다.
  • Hydra는 사용자를 외부 서비스에 증명합니다.
  • Oathkeeper는 위 서비스들을 이용해 입구를 지킵니다.