forked from baron/baron-sso
35 lines
2.2 KiB
Markdown
35 lines
2.2 KiB
Markdown
# Ory Kratos 인증 엔진 전환 작업 보고서
|
|
|
|
## 1. 개요
|
|
기존 Descope SaaS 기반 인증 시스템을 자가 호스팅(Self-hosted) IDP인 **Ory Kratos**로 전환하고, 이를 백엔드(Go Fiber)와 연동하는 작업을 수행하였습니다.
|
|
|
|
## 2. 주요 작업 내용
|
|
|
|
### 2.1 인프라 및 SDK 설정
|
|
* **SDK 설치**: Ory Kratos Go SDK (`github.com/ory/kratos-client-go`)를 백엔드 프로젝트에 추가.
|
|
* **클라이언트 초기화**: `AuthHandler` 내부에 Kratos Public API 통신을 위한 API Client 주입 및 환경 변수 연동.
|
|
|
|
### 2.2 인증 Flow 핸들러 구현 (`auth_handler.go`)
|
|
Ory Kratos의 API-first 방식(Native Flow)에 맞춘 신규 핸들러 구현:
|
|
* **InitializeLoginFlow**: 로그인 프로세스 시작을 위한 `flow_id` 발급 API.
|
|
* **InitializeRegistrationFlow**: 회원가입 프로세스 시작을 위한 `flow_id` 발급 API.
|
|
* **LoginSubmit**: 사용자의 ID/PW를 Kratos에 제출하고 성공 시 세션 쿠키를 클라이언트에 전달.
|
|
* **RegistrationSubmit**: 커스텀 Traits(사용자 정보)와 비밀번호를 Kratos에 전달하여 계정 생성.
|
|
|
|
### 2.3 라우팅 설정 (`main.go`)
|
|
신규 인증 엔진을 위한 전용 엔드포인트 그룹 등록:
|
|
* `GET /api/v1/auth/ory/login/initialize`
|
|
* `POST /api/v1/auth/ory/login/submit`
|
|
* `GET /api/v1/auth/ory/registration/initialize`
|
|
* `POST /api/v1/auth/ory/registration/submit`
|
|
|
|
### 2.4 보안 및 감사 (Security & Audit)
|
|
* **세션 관리**: Kratos에서 발급한 `Set-Cookie` 헤더를 추출하여 클라이언트에 투명하게 전달(Pass-through).
|
|
* **감사 로그**: 로그인 시도 및 성공 시 시각, IP, 대상 아이디 등을 ClickHouse 감사 로그 시스템에 기록.
|
|
* **타입 오류 해결**: Kratos SDK의 구조체 타입 미스매치 이슈 해결(`result.Session` nil 비교 로직 수정).
|
|
|
|
## 3. 향후 과제 (Next Steps)
|
|
1. **UI 연동**: `userfront` (Flutter)의 API 엔드포인트를 기존 Descope에서 신규 Ory 경로로 전환.
|
|
2. **계정 복구**: 비밀번호 찾기(Recovery) 및 이메일 확인(Verification) Flow 추가 연동.
|
|
3. **관리자 기능**: `adminfront`에서 Kratos Identities를 직접 조회/삭제하는 관리 API 연결.
|