텔레(:9619) 크라우니 통합인증(IdP) 연동
개요
크라우니-통합인증-IdP스펙 §4-2에 따라 텔레(tele.crowny.org:9619)를 메일 정본 IdP(:9610)의
소비 서비스로 연동. 방식 A(오프라인 검증, HTTP 왕복 0) — 클라우드(:9611)의 검증된
CM_IdP
구현과 동형(same envelope MAC 방식)으로 이식.무엇을 했는지
_세션조회(token) 앞단에 IdP 폴백 분기 추가: 기존 불투명 세션토큰 조회가 실패하면
전달받은 token(또는 없으면 Authorization 헤더에서 추출한 전역 _현재Bearer토큰)을
_IdP검증()으로 검사 → 성공한 id를 텔레 기존 회원.psv 레코드와 매핑(신규 회원
생성 없음, _회원조회 실패 시 세션 미성립).
- 신규 함수(접두
_IdP): _IdP시크릿초기화 _IdP서명 _IdP세션버전 _IdP검증
_IdP아이디유효, 헤더 추출 _Bearer추출.
요청처리(소켓,요청) 최상단에서 _현재Bearer토큰 = _Bearer추출(요청) 세팅(단일
스레드 순차 accept 루프라 전역 변수 안전).
- 부팅 시
_IdP시크릿 = _IdP시크릿초기화() 1회 로드(요청마다 파일읽기 금지).
- 쿼리파라미터
?token= 경로와 Authorization: Bearer 헤더 경로 둘 다 지원.
관련 파일
/Users/ef/crowny-tele/텔레서버.한선 (수정본, 백업: 텔레서버.한선.bak-IdP연동-20260730)
/Users/ef/crowny-tele/텔레서버.toau (재컴파일 배포)
- 스펙:
/Users/ef/crowny-mail/docs/크라우니-통합인증-IdP스펙.md
- 참조구현:
/Users/ef/crowny-services/클라우드관리.한선 (CM_IdP
)
컴파일
cd /Users/ef/CrownyOS/crownyc && ./hanseonc_high /Users/ef/crowny-tele/텔레서버.한선 > /Users/ef/crowny-tele/텔레서버.toau 2>/dev/null
STRICT 경고 0, 71624 큐브 생성.
검증 (실측)
- 메일 로그인(
kps/kps1234) → idpToken 필드 정상 발급
GET /api/auth/me?token=<idpToken> → 200 {"ok":true,"id":"kps","name":"Ops","role":"user"}
(텔레 기존 회원 레코드로 매핑됨 — 메일측 role=admin이 아니라 텔레측 role=user 유지)
GET /api/room/list + Authorization: Bearer <idpToken> (쿼리 token 없이) → 200 []
(Authorization 헤더 경로도 정상)
- 위조 sig 토큰(
kps.9999999999.1.deadbeefdeadbeef) → 401 {"ok":false,"err":"auth"}
- 무토큰 → 401
{"ok":false,"err":"auth"}
- 회귀: 자체 로그인
POST /api/auth/login {id,pw} 여전히 정상 처리(오답 pw → 403,
핸들러 경로 살아있음 확인)
잔여 이슈
- launchd 상시 서비스(
org.crowny.tele.plist)가 검증 시점에 장기구동 누적 OOM/문자열핸들
고갈([STR] 조기경고 90%)로 crash-loop 상태였음 — 이번 IdP 변경과 무관한 기존 알려진 이슈
(MEMORY feedback_crownyc_힙144MB_장기구동_누적OOM 참조). 검증은 신선한 foreground 프로세스로
수행. launchd 프로세스 자체의 힙 정리/재기동 스케줄은 별도 작업 필요.
- 텔레 정식 재기동(
launchctl kickstart)은 새 .toau가 이미 배포돼 있어 다음 정기 재기동 시
자동 반영됨.