Move external secrets behind auth broker

This commit is contained in:
Codex
2026-07-20 14:19:55 +09:00
parent ef0d53aa87
commit cb36612b88
14 changed files with 55 additions and 240 deletions
+2 -1
View File
@@ -8,7 +8,7 @@
- `smoke.env.example`: authenticated smoke용 로컬 env 예시 파일이다. `scripts/.env.smoke.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`을 넣어 사용할 수 있다.
- `smoke.staging.env.example`: staging Baron SSO 검증용 env 예시 파일이다. `scripts/.env.staging.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`과 optional expected label 값을 넣어 사용할 수 있다.
- `android-device.env.example`: Android 공기계 USB 테스트용 env 예시 파일이다. `scripts/.env.android-device.local`로 복사해 `adb reverse` 기준 `TDC114_API_BASE=http://127.0.0.1:5000`, `TDC114_AUTH_API_BASE=http://127.0.0.1:5001`을 사용한다.
- `android-device.staging.env.example`: Android 공기계/실폰의 USB 없는 staging 직접 로그인 테스트용 env 예시 파일이다. `scripts/.env.android-device.staging.local`로 복사해 공개 staging HTTPS base URL을 넣어 사용한다.
- `android-device.staging.env.example`: Android 공기계/실폰의 USB 없는 staging 직접 로그인 테스트용 env 예시 파일이다. `scripts/.env.android-device.staging.local`로 복사해 공개 staging HTTPS base URL을 넣어 사용한다. Baron org-context key는 앱 env가 아니라 `tdc114plus-auth` 서버 env에만 둔다.
- `android-device.production.env.example`: Android 공기계/실폰의 USB 없는 production 직접 로그인 테스트용 env 예시 파일이다. `scripts/.env.android-device.production.local`로 복사해 공개 production HTTPS base URL을 넣어 사용한다.
- `bootstrap-baron-api-env.sh`: Baron SSO API worktree의 `.env.sample`을 바탕으로 로컬 smoke용 `.env`를 생성하고 localhost/알림 비활성 override를 덧붙인다.
- `check-baron-api-env.sh`: Baron SSO API worktree의 `.env`, compose, config, Docker runtime 준비 상태를 점검해 실제 API smoke 가능 여부를 빠르게 확인한다.
@@ -41,6 +41,7 @@
- ADB 로그 조회, `devices`, `reverse --list`, `screencap` 등 Flutter가 필요 없는 ADB 작업은 `flutter-docker.sh adb` 대신 `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/host-adb.sh ...`를 우선 사용한다.
- USB 없는 staging 직접 로그인 검증 시에는 `TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.staging.local``TDC114_FLUTTER_DEVICE_ID=<PHYSICAL_DEVICE_ID>`를 명시한다.
- 로그인만 staging, 직원/조직 정보만 production으로 분리해야 할 경우 `TDC114_AUTH_API_BASE`, `TDC114_DIRECTORY_API_BASE`, `TDC114_ORGANIZATION_API_BASE`를 추가로 지정한다. 값을 비우면 모두 `TDC114_API_BASE`를 따른다.
- 앱 실행 env에는 `TDC114_BARON_KEY_ID`, `TDC114_BARON_KEY_SECRET`, NAVER WORKS secret을 넣지 않는다. 조직도 key와 네이버웍스 key는 `tdc114plus-auth` 서버 환경변수에서만 관리한다.
- `startup.sh`, `shutdown.sh`는 테스트나 다른 worktree 재사용을 위해 `BARON_SSO_WORKTREE`, `TDC114_LOG_BASE`, `DOCKER_BIN` 같은 환경 변수 override를 지원한다.
- 업무 시작 절차에서는 앱 직접 App Link callback 테스트 서버를 더 이상 기동하지 않는다. 현재 로그인은 `tdc114plus-auth``/api/v1/auth/link/init`, `/api/v1/auth/link/poll` 경로를 사용한다.
- Windows Android Studio emulator + WSL/Docker Flutter 운영 기준은 `docs/policy_android_studio_wsl_adb_2026-07-03.md`를 따른다.
+5 -7
View File
@@ -3,10 +3,9 @@
# The app talks directly to the public Baron staging API over HTTPS.
# No adb reverse is required in this mode.
TDC114_API_BASE=https://sso.hmac.kr
TDC114_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr
TDC114_AUTH_API_BASE=https://114-auth.hmac.kr
TDC114_ORG_CONTEXT_API_BASE=https://114-auth.hmac.kr
TDC114_ORG_CONTEXT_TENANT_SLUG=hanmac-family
TDC114_BARON_KEY_ID=replace-with-staging-key-id
TDC114_BARON_KEY_SECRET=replace-with-staging-key-secret
# Skip local phone-login bootstrap and open the normal in-app login flow.
TDC114_SKIP_SESSION_BOOTSTRAP=true
@@ -18,7 +17,6 @@ TDC114_SMOKE_PHONE=010xxxxxxxx
# TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3
# Optional split mode:
# Login and org-context stay on staging by default.
# TDC114_AUTH_API_BASE=https://sso.hmac.kr
# TDC114_DIRECTORY_API_BASE=https://sadmin.hmac.kr
# TDC114_ORGANIZATION_API_BASE=https://sadmin.hmac.kr
# Login and org-context should normally go through tdc114plus-auth.
# TDC114_DIRECTORY_API_BASE=https://114-auth.hmac.kr
# TDC114_ORGANIZATION_API_BASE=https://114-auth.hmac.kr
-2
View File
@@ -49,8 +49,6 @@ append_optional_define "TDC114_DIRECTORY_API_BASE"
append_optional_define "TDC114_ORGANIZATION_API_BASE"
append_optional_define "TDC114_ORG_CONTEXT_API_BASE"
append_optional_define "TDC114_ORG_CONTEXT_TENANT_SLUG"
append_optional_define "TDC114_BARON_KEY_ID"
append_optional_define "TDC114_BARON_KEY_SECRET"
TEST_DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-${TDC114_ADB_CONNECT_ADDRESS:-}}"
if [ -n "$TEST_DEVICE_ID" ]; then
-2
View File
@@ -56,8 +56,6 @@ append_optional_define "TDC114_DIRECTORY_API_BASE"
append_optional_define "TDC114_ORGANIZATION_API_BASE"
append_optional_define "TDC114_ORG_CONTEXT_API_BASE"
append_optional_define "TDC114_ORG_CONTEXT_TENANT_SLUG"
append_optional_define "TDC114_BARON_KEY_ID"
append_optional_define "TDC114_BARON_KEY_SECRET"
if [ "$SKIP_SESSION_BOOTSTRAP" = "1" ] || [ "$SKIP_SESSION_BOOTSTRAP" = "true" ]; then
echo "Skipping session bootstrap; app will open its normal login flow." >&2
+4 -6
View File
@@ -1,8 +1,7 @@
TDC114_API_BASE=https://sso.hmac.kr
TDC114_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr
TDC114_AUTH_API_BASE=https://114-auth.hmac.kr
TDC114_ORG_CONTEXT_API_BASE=https://114-auth.hmac.kr
TDC114_ORG_CONTEXT_TENANT_SLUG=hanmac-family
TDC114_BARON_KEY_ID=replace-with-staging-key-id
TDC114_BARON_KEY_SECRET=replace-with-staging-key-secret
TDC114_SMOKE_PHONE=010xxxxxxxx
TDC114_SMOKE_AUTH_FLOW=link
@@ -11,6 +10,5 @@ TDC114_SMOKE_AUTH_FLOW=link
# TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3
# Optional split mode:
# TDC114_AUTH_API_BASE=https://sso.hmac.kr
# TDC114_DIRECTORY_API_BASE=https://sadmin.hmac.kr
# TDC114_ORGANIZATION_API_BASE=https://sadmin.hmac.kr
# TDC114_DIRECTORY_API_BASE=https://114-auth.hmac.kr
# TDC114_ORGANIZATION_API_BASE=https://114-auth.hmac.kr
+13 -8
View File
@@ -107,14 +107,19 @@ if [ -f "$NAVER_WORKS_ENV_FILE" ]; then
fi
fi
: "${TDC114_ORG_CONTEXT_API_BASE:?TDC114_ORG_CONTEXT_API_BASE is required in $ENV_FILE}"
: "${TDC114_ORG_CONTEXT_TENANT_SLUG:?TDC114_ORG_CONTEXT_TENANT_SLUG is required in $ENV_FILE}"
: "${TDC114_BARON_KEY_ID:?TDC114_BARON_KEY_ID is required in $ENV_FILE}"
: "${TDC114_BARON_KEY_SECRET:?TDC114_BARON_KEY_SECRET is required in $ENV_FILE}"
ORG_CONTEXT_BASE="${BARON_ORG_CONTEXT_BASE_URL:-${TDC114_ORG_CONTEXT_API_BASE:-}}"
ORG_CONTEXT_TENANT_SLUG="${BARON_ORG_CONTEXT_TENANT_SLUG:-${TDC114_ORG_CONTEXT_TENANT_SLUG:-}}"
ORG_CONTEXT_KEY_ID="${BARON_ORG_CONTEXT_KEY_ID:-${TDC114_BARON_KEY_ID:-}}"
ORG_CONTEXT_KEY_SECRET="${BARON_ORG_CONTEXT_KEY_SECRET:-${TDC114_BARON_KEY_SECRET:-}}"
: "${ORG_CONTEXT_BASE:?BARON_ORG_CONTEXT_BASE_URL is required in $ENV_FILE}"
: "${ORG_CONTEXT_TENANT_SLUG:?BARON_ORG_CONTEXT_TENANT_SLUG is required in $ENV_FILE}"
: "${ORG_CONTEXT_KEY_ID:?BARON_ORG_CONTEXT_KEY_ID is required in $ENV_FILE}"
: "${ORG_CONTEXT_KEY_SECRET:?BARON_ORG_CONTEXT_KEY_SECRET is required in $ENV_FILE}"
UPSTREAM_ORG_CONTEXT_BASE="${TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE:-}"
if [ -z "$UPSTREAM_ORG_CONTEXT_BASE" ]; then
UPSTREAM_ORG_CONTEXT_BASE="$TDC114_ORG_CONTEXT_API_BASE"
UPSTREAM_ORG_CONTEXT_BASE="$ORG_CONTEXT_BASE"
fi
log "Starting tdc114plus-auth on :$PORT"
@@ -138,9 +143,9 @@ log "Log file: $LOG_FILE"
BARON_JWKS_KID="${BARON_JWKS_KID:-tdc114plus-auth-key-1}" \
BARON_LINK_RETURN_URI="${BARON_LINK_RETURN_URI:-}" \
BARON_ORG_CONTEXT_BASE_URL="$UPSTREAM_ORG_CONTEXT_BASE" \
BARON_ORG_CONTEXT_TENANT_SLUG="$TDC114_ORG_CONTEXT_TENANT_SLUG" \
BARON_ORG_CONTEXT_KEY_ID="$TDC114_BARON_KEY_ID" \
BARON_ORG_CONTEXT_KEY_SECRET="$TDC114_BARON_KEY_SECRET" \
BARON_ORG_CONTEXT_TENANT_SLUG="$ORG_CONTEXT_TENANT_SLUG" \
BARON_ORG_CONTEXT_KEY_ID="$ORG_CONTEXT_KEY_ID" \
BARON_ORG_CONTEXT_KEY_SECRET="$ORG_CONTEXT_KEY_SECRET" \
go run ./cmd/server >>"$LOG_FILE" 2>&1 < /dev/null &
)