클라우드 → 메일 정본 IdP 소비자 전환 (연동순서 §4-1)
개요
메일 정본 IdP(§4 방식A, 오프라인 검증)을 클라우드 사이드카(:9662)와 서비스서버(:9611)에 이중 수용으로 연동. 기존 클라우드 자체 세션토큰 검증은 그대로 유지, 실패 시 메일 IdP 통합토큰(
id.exp.ver.sig)으로 폴백.
무엇을 했는지
/Users/ef/crowny-services/클라우드관리.한선 — CM_IdP시크릿초기화/CM_IdP서명/CM_IdP세션버전/CM_IdP검증 추가, CM_인증확정이중(자체→IdP 순) 신설, CM_요청처리의 인증 게이트를 CM_인증확정이중으로 교체. 부팅 시 CM_IdP시크릿 = CM_IdP시크릿초기화().
/Users/ef/crowny-services/서비스서버.한선 — IdP시크릿전역/IdP서명전역/IdP세션버전전역/IdP외부검증 추가. 기존 인증확정() 내부 흐름에 "자체 Bearer 실패 → IdP외부검증 폴백 → 기존 X-Crowny-Owner 폴백" 순서로 삽입(하위호환 보존). 부팅 시 IdP시크릿전역 = IdP시크릿초기화전역().
- 시크릿
/Users/ef/crowny-data/auth/.idp-secret(64hex, 캐시 로드), ver은 /Users/ef/crowny-data/auth/세션버전.psv(id|ver, 미등록=1).
- STRICT 2>/dev/null 컴파일 0경고 → 클라우드관리.toau, 서비스서버.toau 재빌드. 사이드카(KeepAlive)는 kill 재기동, :9611은 리스너 kill 후 자가치유(~25초) 대기.
검증 (실측)
| 항목 | 결과 |
|---|
| a. 메일 kps 로그인 → idpToken 발급 | PASS |
| b. idpToken → 사이드카 /api/node, /api/chain | 200/200 |
| c. idpToken → :9611 /api/files | 200 |
| d. 게이트웨이 cloud.crowny.org/cloudapi/api/tier | 200 |
| e. 회귀: cloudtest 자체 로그인 → 자체토큰 → 사이드카 | 200 (하위호환 유지) |
| f. 위조 sig IdP 토큰 | 401 (양쪽) |
| g. 무토큰 | 401 (양쪽) |
관련 파일
- /Users/ef/crowny-services/클라우드관리.한선
- /Users/ef/crowny-services/서비스서버.한선
- /Users/ef/crowny-data/auth/.idp-secret (권한 600)
- /Users/ef/crowny-data/auth/세션버전.psv
- 정본 스펙: /Users/ef/crowny-mail/docs/크라우니-통합인증-IdP스펙.md §4
잔여 이슈
- 다음 연동순서 §4-2 텔레(:9619) 이후 미착수.
- kps 계정이 클라우드 자체
.json도 이미 보유(data/auth/kps.json) — 자체시크릿과 IdP시크릿이 달라 sig 불일치로 자동 폴백됨을 확인(의도된 동작).