feat(auth): add ADMIN_COOKIE_SECURE configuration for enhanced security

This commit is contained in:
Kyush 2026-04-08 00:04:23 +09:00
commit b06f4f0c62
4 changed files with 4 additions and 1 deletions

View file

@ -8,6 +8,7 @@ ADMIN_AUTH_MODE=both
ADMIN_USERNAME=admin
# Example for password "change-me": sha256$e2186dbdb1bb4193608605e84f33208765b5693b55edd4f730a719a100eeea6f
ADMIN_PASSWORD_HASH=sha256$e2186dbdb1bb4193608605e84f33208765b5693b55edd4f730a719a100eeea6f
ADMIN_COOKIE_SECURE=true
ADMIN_SESSION_SECRET=replace-with-a-long-random-secret
ADMIN_SESSION_TTL_HOURS=12
ADMIN_API_TOKEN_TTL_DAYS=30

View file

@ -66,6 +66,7 @@ pnpm run bench # 벤치마크 실행
| `ADMIN_AUTH_MODE` | `both` | 관리자 로그인 모드 (`env`, `oidc`, `both`) |
| `ADMIN_USERNAME` | `admin` 예시 | ENV 관리자 로그인 아이디 |
| `ADMIN_PASSWORD_HASH` | (권장 필수) | 관리자 비밀번호 hash (`sha256$...` 또는 `scrypt$...`) |
| `ADMIN_COOKIE_SECURE` | `true` | `false`로 설정해야 http에서 로그인 가능 |
| `ADMIN_SESSION_SECRET` | (필수) | 관리자 세션/토큰 hash salt 및 비밀값 |
| `ADMIN_SESSION_TTL_HOURS` | `12` | 관리자 세션 만료 시간 |
| `ADMIN_API_TOKEN_TTL_DAYS` | `30` | 관리자 API 토큰 만료 일수 |

View file

@ -65,6 +65,7 @@ OpenAI 호환 라우터 표면은 그대로 유지된다.
|----------|-------------|
| `ADMIN_USERNAME` | 관리자 로그인 아이디 |
| `ADMIN_PASSWORD_HASH` | 비밀번호 hash |
| `ADMIN_COOKIE_SECURE` | `false`로 설정해야 http에서 로그인 가능 (기본값: `true`) |
| `ADMIN_SESSION_SECRET` | 세션/토큰용 비밀값 |
지원하는 hash 형식:

View file

@ -52,7 +52,7 @@ export function getAdminApiTokenTtlDays(): number {
}
export function getCookieSecure(): boolean {
return process.env.NODE_ENV === 'production';
return process.env.NODE_ENV === 'production' && process.env.ADMIN_COOKIE_SECURE !== 'false';
}
export function getAllowedOidcEmails(): string[] {