diff --git a/.env.example b/.env.example index 6bde5532..6bee1598 100644 --- a/.env.example +++ b/.env.example @@ -50,6 +50,8 @@ SPRING_PROFILES_ACTIVE=local # JWT/암호화는 base64 32바이트. 운영은 반드시 GitHub Secrets(JWT_SECRET, ENCRYPTION_KEY)로 덮어쓸 것. JWT_SECRET=c3RhY2t1cC1zcHJpbnQxLWxvY2FsLWp3dC1zZWNyZXQtMzItYnl0ZXMtbG9uZw== ENCRYPTION_KEY=c3RhY2t1cC1zcHJpbnQxLWVuY3J5cHRpb24ta2V5QUI= +# 액세스 토큰 수명(초). 기본 3600(1시간) — 면접 진행 중 토큰 만료로 튕기는 문제 방지. +JWT_ACCESS_TTL_SECONDS=3600 # AI 서버와 공유. 운영은 GitHub Secrets(CORE_INTERNAL_API_KEY)로 덮어쓸 것. CORE_INTERNAL_API_KEY=local-development-internal-api-key # GitHub OAuth (운영은 GitHub Secrets(GH_OAUTH_CLIENT_ID/SECRET)로 덮어쓸 것) diff --git a/docker-compose.yml b/docker-compose.yml index 749b379e..7f3ce5e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -169,6 +169,9 @@ services: # 비밀값은 .env 또는 GitHub Secrets 로 주입. 값이 비면 application-local.yml 의 dev default 적용. JWT_SECRET: ${JWT_SECRET:-} ENCRYPTION_KEY: ${ENCRYPTION_KEY:-} + # 액세스 토큰 수명. application.yml 기본 900s(15분)은 면접 진행 중 만료로 이어져 + # 배포 기본을 3600s(1시간)로 상향. 필요 시 .env(JWT_ACCESS_TTL_SECONDS)로 override. + JWT_ACCESS_TTL_SECONDS: ${JWT_ACCESS_TTL_SECONDS:-3600} CORE_INTERNAL_API_KEY: ${CORE_INTERNAL_API_KEY:-local-development-internal-api-key} GITHUB_OAUTH_CLIENT_ID: ${GITHUB_OAUTH_CLIENT_ID:-} GITHUB_OAUTH_CLIENT_SECRET: ${GITHUB_OAUTH_CLIENT_SECRET:-} diff --git a/docs/environment.md b/docs/environment.md index c47932f8..58cf672d 100644 --- a/docs/environment.md +++ b/docs/environment.md @@ -69,7 +69,7 @@ SERVER_PORT=8080 # ===== Auth ===== JWT_SECRET= # base64-encoded 32+ bytes (필수, default 없음) -JWT_ACCESS_TTL_SECONDS=900 # 15min +JWT_ACCESS_TTL_SECONDS=3600 # 1h (배포 기본; app.yml fallback 900). 면접 중 토큰 만료 방지용 상향 JWT_REFRESH_TTL_SECONDS=1209600 # 14d ENCRYPTION_KEY= # AES-256 key, base64 32 bytes (필수)