[OIDC] .env 값(OIDC_ISSUER/IDP_SERVICE_URL) 미반영 및 Descope 하드코딩 경로 사용 #5

Closed
opened 2026-02-05 10:54:03 +09:00 by lectom · 1 comment

요약

최근 커밋 이후 .env에 설정한 OIDC_ISSUER(및 관련 값) / IDP_SERVICE_URL이 기대대로 반영되지 않고, OIDC 흐름이 하드코딩된 Descope 경로로 고정되는 문제가 있습니다.

변경점 중심 원인 분석

  1. kngil/bbs/oidc_config.php
  • Add docker entrypoint and env loader 커밋(bf86b1d, 2026-02-02)에서 .env 로더와 환경변수 기반 설정이 추가되었으나,
  • 이후 커밋(6dcc2eb, 2026-02-05)에서 return 배열이 하드코딩 값으로 덮어쓰기 되었습니다.
  • 현재 파일은 환경변수를 읽지만 실제로는 사용하지 않는 상태라서 .envOIDC_ISSUER가 무시됩니다.
    • 결과적으로 로그인 시 Issuer가 Descope(또는 특정 고정 URL)로 안내됩니다.
  1. IDP_SERVICE_URL 관련
  • _header.php에서 IDP_SERVICE_URLwindow.IDP_SERVICE_URL로 주입하지만,
  • 일부 JS 경로(kngil/js/qa/qa_common.js, kngil/js/faq/faq_common.js)에 Descope/레거시 경로가 하드코딩되어 있어,
    화면/기능에 따라 IDP_SERVICE_URL이 반영되지 않는 것처럼 보일 수 있습니다.

재현 방법

  1. .envOIDC_ISSUER/OIDC_CLIENT_ID/OIDC_CLIENT_SECRET/OIDC_REDIRECT_URL/IDP_SERVICE_URL를 설정
  2. 로그인 버튼 클릭 → /kngil/auth/oidc-login.php
  3. 실제로는 .env 값이 아닌 하드코딩된 Issuer로 로그인 흐름이 이동

영향 범위

  • OIDC 로그인 전체 (Issuer/Client/Redirect/Scopes 모두 고정값으로 동작)
  • 일부 화면에서 통합 프로필/세션 관련 동작이 레거시 Descope 경로를 참조

해결 제안

  1. kngil/bbs/oidc_config.php
  • return 배열을 환경변수 기반 값으로 복구
  • 예: issuer => $issuer, client_id => $clientId, client_secret => $clientSecret, redirect_url => $redirectUrl, scopes => $scopes
  • 하드코딩된 시크릿 제거(보안 위험)
  1. IDP_SERVICE_URL 경로 일원화
  • QA/FAQ 스크립트에서 /egbim/.../descope_* 하드코딩 경로를 제거하고
    window.IDP_SERVICE_URL 또는 앱 기준 상대경로로 통일

검증 방법

  • .env 변경 후 OIDC 로그인 Issuer가 변경되는지 확인
  • QA/FAQ 등 프로필/세션 관련 동작이 IDP_SERVICE_URL 기반으로 호출되는지 확인
## 요약 최근 커밋 이후 `.env`에 설정한 `OIDC_ISSUER`(및 관련 값) / `IDP_SERVICE_URL`이 기대대로 반영되지 않고, OIDC 흐름이 **하드코딩된 Descope 경로**로 고정되는 문제가 있습니다. ## 변경점 중심 원인 분석 1) `kngil/bbs/oidc_config.php` - `Add docker entrypoint and env loader` 커밋(bf86b1d, 2026-02-02)에서 `.env` 로더와 환경변수 기반 설정이 추가되었으나, - 이후 커밋(6dcc2eb, 2026-02-05)에서 `return` 배열이 **하드코딩 값으로 덮어쓰기** 되었습니다. - 현재 파일은 **환경변수를 읽지만 실제로는 사용하지 않는 상태**라서 `.env`의 `OIDC_ISSUER`가 무시됩니다. - 결과적으로 로그인 시 Issuer가 Descope(또는 특정 고정 URL)로 안내됩니다. 2) `IDP_SERVICE_URL` 관련 - `_header.php`에서 `IDP_SERVICE_URL`을 `window.IDP_SERVICE_URL`로 주입하지만, - 일부 JS 경로(`kngil/js/qa/qa_common.js`, `kngil/js/faq/faq_common.js`)에 **Descope/레거시 경로가 하드코딩**되어 있어, 화면/기능에 따라 `IDP_SERVICE_URL`이 반영되지 않는 것처럼 보일 수 있습니다. ## 재현 방법 1. `.env`에 `OIDC_ISSUER`/`OIDC_CLIENT_ID`/`OIDC_CLIENT_SECRET`/`OIDC_REDIRECT_URL`/`IDP_SERVICE_URL`를 설정 2. 로그인 버튼 클릭 → `/kngil/auth/oidc-login.php` 3. 실제로는 `.env` 값이 아닌 하드코딩된 Issuer로 로그인 흐름이 이동 ## 영향 범위 - OIDC 로그인 전체 (Issuer/Client/Redirect/Scopes 모두 고정값으로 동작) - 일부 화면에서 통합 프로필/세션 관련 동작이 레거시 Descope 경로를 참조 ## 해결 제안 1) `kngil/bbs/oidc_config.php` - `return` 배열을 **환경변수 기반 값으로 복구** - 예: `issuer => $issuer`, `client_id => $clientId`, `client_secret => $clientSecret`, `redirect_url => $redirectUrl`, `scopes => $scopes` - 하드코딩된 시크릿 제거(보안 위험) 2) `IDP_SERVICE_URL` 경로 일원화 - QA/FAQ 스크립트에서 `/egbim/.../descope_*` 하드코딩 경로를 제거하고 `window.IDP_SERVICE_URL` 또는 앱 기준 상대경로로 통일 ## 검증 방법 - `.env` 변경 후 OIDC 로그인 Issuer가 변경되는지 확인 - QA/FAQ 등 프로필/세션 관련 동작이 `IDP_SERVICE_URL` 기반으로 호출되는지 확인
Author

작업 반영 사항 공유드립니다.

  1. OIDC .env 반영 문제 수정
  • kngil/bbs/oidc_config.php에서 하드코딩된 issuer/client/secret/redirect/scopes를 제거하고 환경변수 기반으로 복구했습니다.
  • 결과: .envOIDC_ISSUER 등 값이 실제 로그인 흐름에 반영됩니다.
  1. DB 인증 실패 원인/조치
  • 배포 워크플로우에서 source .env를 수행하던 로직이 DB_PASS에 포함된 > 문자 때문에 쉘 리다이렉션으로 해석되어 값이 잘리는 문제가 있었습니다.
  • 이로 인해 컨테이너 환경변수 DB_PASS가 잘못 설정되고 PHP가 그 값을 사용해 인증 실패가 발생했습니다. (psql -W는 직접 입력이라 성공)
  • 해결: .gitea/workflows/deploy.yml, .gitea/workflows/deploy-registry.yml에서 source .env를 제거하고 docker compose --env-file .env만 사용하도록 변경했습니다.

필요 시 배포 후 컨테이너 환경변수 DB_PASS 확인 부탁드립니다.

작업 반영 사항 공유드립니다. 1) OIDC .env 반영 문제 수정 - `kngil/bbs/oidc_config.php`에서 하드코딩된 issuer/client/secret/redirect/scopes를 제거하고 환경변수 기반으로 복구했습니다. - 결과: `.env`의 `OIDC_ISSUER` 등 값이 실제 로그인 흐름에 반영됩니다. 2) DB 인증 실패 원인/조치 - 배포 워크플로우에서 `source .env`를 수행하던 로직이 `DB_PASS`에 포함된 `>` 문자 때문에 쉘 리다이렉션으로 해석되어 값이 잘리는 문제가 있었습니다. - 이로 인해 컨테이너 환경변수 `DB_PASS`가 잘못 설정되고 PHP가 그 값을 사용해 인증 실패가 발생했습니다. (psql -W는 직접 입력이라 성공) - 해결: `.gitea/workflows/deploy.yml`, `.gitea/workflows/deploy-registry.yml`에서 `source .env`를 제거하고 `docker compose --env-file .env`만 사용하도록 변경했습니다. 필요 시 배포 후 컨테이너 환경변수 `DB_PASS` 확인 부탁드립니다.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: b24014/kngil_home#5