1
0
forked from baron/baron-sso
Files
baron-sso/docs/idp_policy.md
2026-01-27 17:59:17 +09:00

2.3 KiB

IDP Abstraction & Perfect Wrapping Policy

1. 핵심 원칙 (Core Principles)

"사용자와 클라이언트 개발자는 IDP가 무엇인지 알 수도 없고, 알아서도 안 된다."

Baron SSO의 가장 중요한 아키텍처 원칙은 **IDP Agnostic(IDP 불가지론)**입니다. 현재 Descope를 사용하더라도, 내일 당장 Hydra, Authentik, Keycloak 또는 자체 구축 인증 서버로 변경하더라도 Frontend, Client App, 그리고 최종 사용자에게는 단 1줄의 코드 변경이나 경험의 변화가 없어야 합니다.

2. 세부 지침 (Guidelines)

2.1. Frontend & Client Side

  • No Vendor SDK: 프론트엔드 코드(User App, Admin Front)에서 descope-sdk 등 특정 벤더의 SDK를 직접 import하여 비즈니스 로직에 사용하는 것을 금지합니다.
  • Unified Interface: 모든 인증 요청은 Baron SSO Backend API (/api/v1/auth/*)를 통해서만 수행합니다.
  • Response Format: 클라이언트가 수신하는 토큰 및 사용자 정보는 Baron SSO가 정의한 표준 스키마(BrokerUser)여야 하며, IDP의 Raw Data가 노출되어서는 안 됩니다.

2.2. Backend Side

  • Provider Pattern: 모든 IDP 관련 로직은 interface IDPProvider 뒤에 숨겨야 합니다. 핸들러(Handler) 계층은 구체적인 구현체(DescopeService 등)를 알지 못해야 합니다.
  • Error Mapping: IDP에서 발생한 에러(예: E062907)는 반드시 Baron SSO의 표준 에러(예: AUTH_PROVIDER_ERROR)로 변환되어 클라이언트에 전달되어야 합니다.
  • Configuration Isolation: IDP 설정(Project ID, API Key)은 환경 변수와 팩토리 내부로 격리하며, 비즈니스 로직에 하드코딩하지 않습니다.

2.3. OIDC/OAuth2 Compliance

  • 외부 서비스(RP) 연동 시, Baron SSO 자체가 OIDC Provider로 동작해야 합니다.
  • RP는 Issuer를 Baron SSO의 URL로 설정하며, 원천 IDP의 URL을 바라보지 않습니다.

3. 마이그레이션 보장 (Migration Guarantee)

이 정책의 최종 목표는 **"IDP 교체 비용을 0에 수렴하게 만드는 것"**입니다. IDP 변경 시 백엔드의 IDPProvider 구현체만 교체하면, 데이터 마이그레이션을 제외한 모든 서비스가 중단 없이 동작해야 합니다.