You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
P1 infra: fail fast on empty JWT_SECRET/INTERNAL_TOKEN and require exp in JWT #53
JWT_SECRET с дефолтом change-me-... захардкожен во всех Go-сервисах (gateway/main.go:24, metadata/main.go:57, upload/main.go:38) и auth (config.py:7); compose передаёт ${JWT_SECRET} без проверки. jwt.Parse не требует exp — токен без exp валиден навсегда. Пустой INTERNAL_TOKEN делает /internal/* metadata открытыми (internal.go:11) и молча отключает идемпотентность transcoder; сравнение секрета не constant-time.
Фикс: fail fast при старте на пустых JWT_SECRET/INTERNAL_TOKEN (кроме явного ENV=dev); jwt.WithExpirationRequired() + обязательный type == "access" во всех трёх мидлварях; constant-time compare в InternalAuth. Verify:make up без секрета падает с внятной ошибкой; токен без exp → 401. Источник: docs/REVIEW-2026-09-13-merged.md M6
Автоматически создано из сводного ревью. Сверяй актуальность номеров строк — они зафиксированы на коммите 91efb5b.
Activity
SlavaKuntsov commentedon Sep 18, 2026
Ready for review — Phase 16
Implemented (#53)
requireEnv— fail fast на пустыхJWT_SECRET/INTERNAL_TOKENпри старте, кромеENV=dev; хардкодchange-me-...убранvalidate_secrets()в lifespan — fail fast на пустомJWT_SECRET(та же семантика, ENV=dev bypass)jwt.WithExpirationRequired()+ обязательныйtype == "access"во всех мидлварях (gateway Auth/Optional/hls, metadata Auth/Optional, upload Auth)crypto/subtle) в metadata InternalAuth + тест${JWT_SECRET:?}/${INTERNAL_TOKEN:?}—make upбез секретов падает с внятной ошибкойENV=dev; .env.example — предупреждение про prodVerification
make test-go/make test-py— pass;make lint-go(0 issues) /make lint-py— passdocker compose config—:?синтаксис валиденmake e2eне прогнан: docker daemon недоступен на машине реализации (пароль в e2e.sh уже выровнен с политикой P1 auth: add password policy, email normalization and IntegrityError handling #49)Commits:
b38a01d(+cf78449fixes). PR закроет тикет черезCloses #53.SlavaKuntsov commentedon Sep 18, 2026
Pull request opened
#77 — will auto-close via
Closes #53on merge.Project status:
In review(synced).Verification
make test-py/make test-go— passmake lint-py/make lint-go/make lint-front— чистоmake up && make e2e— PASS на чистых volumesRemaining risks
none known (follow-up: #76)