2026-04-15 통합 인프라 완성 이후, 각 서비스에 SSO 미들웨어를 실제로 삽입하고 LaunchAgent 재기동으로 라이브 배포. auth.crowny.org 를 LaunchAgent로 영구 구동 전환.
~/Library/LaunchAgents/org.crowny.auth.plist 작성authenticate(req, serviceName) 함수 — (req,res,next) 미들웨어가 아닌 http.createServer 패턴 지원unauthorized(res, msg) 편의 함수module.exports.verify/authenticate/unauthorized 내보내기 순서 교정patch_sso_into_services.sh 실행:| 서비스 | 포트 | LaunchAgent | 상태 |
|---|---|---|---|
| patent | 9732 | org.crowny.patent | ✅ 재기동 완료 |
| stock | 9731 | org.crowny.stock | ✅ |
| artist | 9734 | org.crowny.artist | ✅ |
| avl | 9737 | org.crowny.avl | ✅ |
| avls | 9736 | org.crowny.avls | ✅ |
| card | 9450 | — | ✅ |
| mind | 7750 | — | ✅ |
| trading | 7740 | — | ✅ |
| int | 9500 | — | ✅ |
| security | 9502 | 미등록 | ⚠️ |
패치 내용 (각 server.js에 2줄 삽입):
jsconst sso = require('/Users/ef/crowny-data/auth/sso-middleware.js'); // 상단
// createServer 핸들러 최상단:
req.ssoUser = await sso.authenticate(req, 'patent').catch(() => null);
비침해적 설계: req.ssoUser 만 주입. 기존 로직/인증 전혀 변경 없음. 토큰 있으면 자동 touch 발생.
/Users/ef/CrownyOS/crownyc/libs/SSO인증.한선 (신규)토큰추출(요청텍스트) — Bearer 토큰 파싱쿠키토큰추출(요청텍스트) — crowny_token 쿠키토큰검증(토큰, 호스트, 포트) — auth 서버에 GET /api/verify 소켓 호출서비스접속기록(사용자, 서비스, 호스트, 포트) — POST /api/touch fire-and-forget요청인증(요청텍스트, 서비스명) — 올인원 편의 함수대상 서비스 (향후 실제 통합):
auth 회원: 176명 (prev 174 → +2 마이그레이션 재실행 여파)
총 서비스 링크: 16건
main: 13명
bank: 1명 (kps)
stock: 1명 (kps)
project: 1명 (ef)
패치 서비스 실제 구동 확인:
- patent:9732 HTTP 200 (api/dashboard 정상 응답)
- stock:9731 HTTP 200
- artist:9734 HTTP 200
- avl/avls/card/mind/trading/int HTTP 200
/Users/ef/Library/LaunchAgents/org.crowny.auth.plist — 영구 구동/Users/ef/crowny-data/auth/auth-server.js — 서버 (:9401)/Users/ef/crowny-data/auth/sso-middleware.js — Node.js 미들웨어 + authenticate 헬퍼/Users/ef/crowny-data/auth/sso-middleware.한선 — 단순 동반본/Users/ef/CrownyOS/crownyc/libs/SSO인증.한선 — TOAU 서비스용 완전 구현 (소켓 기반)/Users/ef/crowny-data/auth/patch_sso_into_services.sh — 일괄 삽입 스크립트 (idempotent)/Users/ef/crowny-data/auth/sync_users_profiles.py — 정합 동기화/Users/ef/crowny-data/auth/migrate_patent.py/Users/ef/crowny-data/auth/migrate_project.py.bak-<timestamp> 로 원본 보존auth.crowny.org/login?return=https://서비스.crowny.org 로 연결 가능맵꺼내(없는키) 반환값 -2147483647 → 빈 문자열 "" 로 교체cc -O2 -framework Security -framework CoreFoundation -o crownyc crownyc.c_결과성공() / _결과오류(메시지) 헬퍼 추가)/Users/ef/crowny-data/auth/sso-widget.js — 자동 로그인/로그아웃 위젯<script> 삽입 (patent/stock/artist/avl/avls/card/mind/trading/int/market/church)셀읽(db,id) 2인자인데 회원관리가 셀읽(db,id,idx) 3인자로 호출 → idx 무시 → 셀맵 전체 반환 → 비교 실패_셀슬롯(db, id, idx) 래퍼 추가 + 12건 일괄 치환