DEX(:9402) 크라우니 통합인증 IdP 연동
개요
크라우니 통합인증 IdP(메일 정본, SSOT
/Users/ef/crowny-mail/docs/크라우니-통합인증-IdP스펙.md §4-3)를
DEX서버.한선(:9402)에 오프라인 검증 방식(A)으로 연동. 참조구현은 클라우드관리.한선의
CM_IdP시크릿초기화/CM_IdP서명/CM_IdP세션버전/CM_IdP검증/CM_인증확정이중 — 동형으로 이식.
무엇을 했는지
인증게이트(유저,토큰)에 DEX 자체 불투명토큰(토큰소유자) 우선 조회 → 실패 시 DEX_IdP검증 폴백 추가.
- 신규 함수(접두 DEX_):
DEX_IdP시크릿초기화 DEX_IdP서명 DEX_IdP세션버전 DEX_아이디검증 DEX_IdP검증.
- 봉투 MAC:
SHA256(시크릿+"|"+id+"|"+exp+"|"+ver+"|"+시크릿), 시크릿=/Users/ef/crowny-data/auth/.idp-secret 앞 64자,
부팅 1회 로드 후 전역
DEX_IdP시크릿에 캐시(요청마다 파일 재읽기 없음).
- kps는 DEX 자체 계정과 별도 매핑 없이 아이디 문자열 동일성으로 그대로 재사용(IdP가 검증한 id="kps"가
곧 DEX 라우트 파라미터 유저="kps"와 일치해야 통과).
- 쓰기 API(swap/loan/repay/p2p/orders)의 value_note·쿨다운 등 기존 로직은 무변경 —
인증게이트 앞단만 확장.
함정/이슈
- hanseonc_high: 전역변수는 함수 정의 이전 지점에서 top-level
변수 X = ""로 먼저 선언해야
함수 내부에서 forward-reference 가능(클라우드 패턴과 동일 —
CM_시크릿도 상단 선언 후 하단에서 재할당).
최초
변수 DEX_IdP시크릿 = DEX_IdP시크릿초기화()를 하단에 바로 쓰면 "미정의 변수" 컴파일 에러.
- DEX서버.한선에는
가져오기 "문자열.한선"이 없어 분리() 미정의 — 세션버전.psv 파싱은 자격불러오기()와
동일한 수동 줄단위 파서로 작성(내장
분리 대신).
관련 파일
/Users/ef/crowny-dex/DEX서버.한선 (수정, 백업 .bak-IdP연동-20260730)
/tmp/dex.toau (컴파일 산출물, 현재 :9402 가동 프로세스가 사용)
- 참조:
/Users/ef/crowny-services/클라우드관리.한선 (CM_IdP* 원본)
- SSOT:
/Users/ef/crowny-mail/docs/크라우니-통합인증-IdP스펙.md
컴파일
cd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/crowny-dex/DEX서버.한선 > /tmp/dex.toau 2>/dev/null
STRICT 경고 0.
검증 (전부 실측)
| # | 항목 | 결과 |
|---|
| 1 | 메일 로그인 → idpToken 발급 | 200, idpToken 필드 획득 (예: kps.1786005396.2.c2244...) |
| 2 | IdP 토큰으로 DEX 인증필요 라우트(POST /api/orders/cancel, 존재하지않는 orderId로 비파괴 테스트) | 200대 인증 통과 → 404(대상 없음, 정상 로직 도달 확인) |
| 3 | 위조 sig 토큰 | 401 |
| 4 | 무토큰 | 401 |
| 5 | 회귀: DEX 자체 POST /api/register 신규 계정 생성 + 자체 토큰으로 동일 보호 라우트 | 200 (등록) → 200대 인증통과(자체 토큰 fallback 정상, 404 not-found 도달) |
GET /api/orders는 원래 무인증(원래 무인증 라우트 — 항목4 해당 없음, 200 확인만 참고).
잔여 이슈
- 트레이딩/트레이더(:7740/:7741), 넥서스(:9805), 텔레(:9619), 집사회(:9772), 메신저(:9939), ERP/견적은 스펙 §4 순서상
DEX 다음 단계 — 미착수.
- DEX 쓰기 API(swap/loan/repay/p2p) 자체는 이번 작업에서 로직 변경 없음(인증 앞단만 확장) — 별도 IdP 경유
실거래 검증(예산 소모 있는 항목)은 미실시.