← 목록
기타 2026-07-09 4KB 읽기 5분

게이트웨이 회원인증 — 경로단위 정책(authPaths) + 라이브 배선

개요

크라우니 게이트웨이 회원인증 게이트(인증게이트.한선)에 경로단위 정책(authPaths)을 추가하고, 라이브 소스(게이트웨이통합.한선)에 opt-in 배선을 완료했다. 라이브 프로세스(8080 워커)와 /tmp/gwlive.toau는 무접촉 — 그림자 포트(8096/8098)에서만 컴파일·구동·검증 후 정리했다.

무엇을 했는지

1. 인증게이트.한선 (게이트웨이Q/) — 경로단위 정책 확장

  • 정책맵로드(경로): gateway.yaml의 authPaths: 블록(- prefix: /x + 중첩 auth: ...)을
awk로 추출해 정책맵 평탄배열에 "도메인|접두" 복합키로 혼재 저장(설정.한선 pathRoutes 복합키 관례 답습). 도메인단위 auth:는 종전처럼 "도메인" 단순키.
  • 정책조회(정책맵, 도메인, 경로): 경로 인자를 실제로 사용하도록 수정(이전엔 무시 =
보안 F4). 쿼리스트링 제거 → %2e/%2f/%5c 디코드 → .. 세그먼트 발견 시 무조건 "__blocked__"(가장 엄격 차단) → //·/./ 압축 → 경로단위 최장접두 매칭 → 도메인단위 폴백 → 공개("").
  • 인증결정()"__blocked__"을 403으로 처리.
  • 단위테스트 9/9 PASS: / 공개, /dashboard member, /dashboard/x member(중첩),
/admin level:2, /dashboard/../·/dashboard/..%2fadmin __blocked__, 쿼리스트링/ 슬래시압축 정상.

2. 게이트웨이통합.한선 (한선게이트웨이/, 라이브 소스) — opt-in 배선

  • 가져오기 "/Users/ef/crowny-gateway/게이트웨이Q/인증게이트.한선" (절대경로 임포트 —
$GWDIR 안에서 컴파일 시 정상 링크됨을 실측 확인, 사본/심볼릭 불필요).
  • _요청처리()(1.5) 인증게이트 삽입 — ACME/Shield/301리다이렉트 다음, WS/프록시/정적
이전. 정책 없는 서비스(293개 전부)는 무영향(default no-op).
  • _인증YAML경로()/_라우트YAML경로()GW_AUTH_YAML/GW_YAML 환경변수로 그림자 검증용
yaml 오버라이드 가능, 미설정 시 라이브 gateway.yaml 그대로.
  • 편집만 하고 재컴파일/재기동은 하지 않음/tmp/gwlive.toau는 최종까지 md5 불변,
라이브 8080 워커(PID 5274/12590) 무접촉. 라이브 컷오버는 상위 오케스트레이터 전담.

3. 그림자 검증 (8096/8098, 컴파일만 확인 — 라이브 무접촉)

  • 데모 백엔드: 순수 한선씨 HTTP 에코(demo_backend.한선, TCP대기/TCP수락/TCP쓰기).
  • 그림자 게이트웨이: /tmp/OUT.toau(게이트웨이통합.한선 재컴파일, gwlive.toau와 별개 산출물)를
GW_PORT=8096 GW_YAML=combined.yaml GW_AUTH_YAML=combined.yaml로 구동. combined.yaml = 라이브 gateway.yaml 사본 + 데모서비스 2개(freetest 공개, prottest /dashboard→member) append.
  • 결과: (a) 공개경로 200 (b) /dashboard 무토큰 401+Location(auth.crowny.org) (c) 위조토큰
401(auth:9401 실호출 확인, fail-open 아님) (d) 대표 라이브 도메인(crowny.org/docs/bank/cowork) 전부 200 무영향 (e) traversal 시도 403 안전차단.
  • 검증 후 그림자 프로세스·스크래치 정리, gwlive.toau md5 재확인(불변), 라이브 crowny.org 200
재확인.

관련 파일

  • /Users/ef/crowny-gateway/게이트웨이Q/인증게이트.한선 — 경로단위 정책 로직
  • /Users/ef/crowny-gateway/한선게이트웨이/게이트웨이통합.한선 — 라이브 소스(편집만, 미배포)
  • /Users/ef/crowny-gateway/게이트웨이Q/인증설계.md — 스키마·배선·검증 상세 문서(이번 세션 갱신)
  • /private/tmp/claude-501/-Users-ef/66c0ee36-e038-4166-ac22-2512adb1fe51/scratchpad/authpath_unit.한선 — 정책조회 단위테스트
  • /private/tmp/claude-501/-Users-ef/66c0ee36-e038-4166-ac22-2512adb1fe51/scratchpad/authwire/ — 그림자 검증 데모(백엔드·combined.yaml·로그)

잔여 이슈

  • 라이브 컷오버 미실행 — start.sh가 소스 mtime 변화를 감지해 자동 재컴파일하므로, watchdog
(org.crowny.gwhealth)가 wedge로 자동재기동하면 이번 수정본이 그대로 올라간다는 점을 다음 세션/오케스트레이터가 인지해야 함(컴파일 자체는 clean 확인됨).
  • gateway.crowny.org 통합 회원사이트(가입/로그인/엔타이틀먼트 UI)는 이번 범위 밖.
  • authLevelMin 서비스별 오버라이드는 아직 전역 상수(100) 고정.