P0-1/P0-2: tenant-граница по sub + обязательная подпись JWT
validateJWT теперь возвращает sub; middleware сверяет sub с {namespace} из URL
(несовпадение → 403) — закрывает горизонтальный доступ к чужим namespace.
Вне AUTH_TEST_MODE подпись HS256 обязательна: без JWT_HMAC_SECRET middleware
отказывает (fail-closed, 500), а config.Load требует секрет на старте.
This commit is contained in:
@@ -149,6 +149,11 @@ func Load() (*Config, error) {
|
||||
if cfg.MQTTPassword == "" {
|
||||
missing = append(missing, "MQTT_PASSWORD")
|
||||
}
|
||||
// Вне тестового режима JWT_HMAC_SECRET ОБЯЗАТЕЛЕН: без него подпись не
|
||||
// проверяется и токен можно подделать (fail-closed на старте).
|
||||
if !cfg.AuthTestMode && cfg.JwtHMACSecret == "" {
|
||||
missing = append(missing, "JWT_HMAC_SECRET (или включите AUTH_TEST_MODE для тестов)")
|
||||
}
|
||||
if len(missing) > 0 {
|
||||
return nil, fmt.Errorf("required env vars not set: %s", strings.Join(missing, ", "))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user