security: remove .env from tracking (contains secrets)
This commit is contained in:
@@ -17,8 +17,10 @@ export let env = {
|
||||
},
|
||||
jwt: {
|
||||
algorithm: p.JWT_ALGORITHM || 'RS256',
|
||||
issuer: p.JWT_ISSUER || 'auth-service',
|
||||
audience: p.JWT_AUDIENCE || 'elcsa',
|
||||
// Намеренно без default — каждый деплой ЯВНО указывает iss/aud, иначе сервис
|
||||
// примет любой токен подписанный нашими ключами с любым iss/aud.
|
||||
issuer: p.JWT_ISSUER || '',
|
||||
audience: p.JWT_AUDIENCE || '',
|
||||
},
|
||||
vault: {
|
||||
addr: p.VAULT_ADDR || '',
|
||||
@@ -29,6 +31,7 @@ export let env = {
|
||||
jwtKidPath: p.VAULT_JWT_KID_PATH || 'jwt/kid',
|
||||
jwtKidsPrefix: p.VAULT_JWT_KIDS_PREFIX || 'jwt/kids',
|
||||
csrfPath: p.VAULT_CSRF_PATH || '',
|
||||
cryptoKeyPath: p.VAULT_CRYPTO_KEY_PATH || 'crypto/master',
|
||||
},
|
||||
cors: {
|
||||
// No default — каждый деплой явно указывает CORS_ORIGINS, иначе пустой массив = нет cross-origin доступа.
|
||||
@@ -52,6 +55,11 @@ export function getVaultToken(): string | null {
|
||||
}
|
||||
|
||||
export async function initEnv(): Promise<void> {
|
||||
// Fail-fast на отсутствующие критические env vars
|
||||
if (!env.jwt.issuer || !env.jwt.audience) {
|
||||
throw new Error('JWT_ISSUER and JWT_AUDIENCE must be explicitly set (no defaults)');
|
||||
}
|
||||
|
||||
const { addr, roleId, secretId, mount, secretPath } = env.vault;
|
||||
|
||||
if (!addr || !roleId || !secretId) {
|
||||
@@ -106,4 +114,11 @@ export async function initEnv(): Promise<void> {
|
||||
tronApiKey: s('TRON_API_KEY') || env.tronApiKey,
|
||||
jupiterApiKey: s('JUPITER_API_KEY') || env.jupiterApiKey,
|
||||
};
|
||||
|
||||
// Re-validate after Vault load. Vault мог переписать iss/aud — если они теперь пустые
|
||||
// или невалидные, fail-fast.
|
||||
if (!env.jwt.issuer || !env.jwt.audience) {
|
||||
throw new Error('JWT_ISSUER and JWT_AUDIENCE became empty after Vault load');
|
||||
}
|
||||
logger.info(`JWT validation: iss="${env.jwt.issuer}", aud="${env.jwt.audience}"`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user