v0.1.16: JWT auth via nubes API, auto-provisioning, UI login

- app/auth/jwt.go: ParseJWTClaims, TenantIDFromSub (sless-compatible SHA256), PingNubesAPI
- app/admin/admin.go: POST /ui/api/auth endpoint, jwtMiddleware for /ui/api/*
- app/tenant/tenant_store.go: NubesSub/Email fields, GetBySub, CreateFromJWT
- app/ui/index.html: login page, email in navbar, JWT session in localStorage
- deployments/k8s/deployment.yaml: v0.1.16, NUBES_ENDPOINT env
- doc/decisions/resource-limits-plan.md: 20 vulnerabilities audit
- Fix: /ui/api/auth moved to subrouter (gorilla/mux PathPrefix conflict)
This commit is contained in:
Naeel
2026-04-10 18:35:19 +03:00
parent 6fb160f8ae
commit b9d434bcc5
9 changed files with 854 additions and 25 deletions
+12 -1
View File
@@ -12,12 +12,23 @@
## Next Steps
- [ ] Migration guide: как обновить сервис на v0.1.14
- [ ] Собрать Docker образ v0.1.15, задеплоить, проверить JWT auth flow
- [ ] Resource limits (Фаза 1-4 из doc/decisions/resource-limits-plan.md)
- [ ] Migration guide: как обновить сервис на v0.1.15
- [ ] Load testing shared-sqs (текущая реализация имеет глобальный мьютекс)
- [ ] DLQ (Dead Letter Queue) поддержка
- [ ] Long Polling оптимизация
- [ ] Rate limiting per tenant
### v0.1.15 (2026-04-10) — IN PROGRESS
- ✅ JWT auth через nubes API (deck-api-test.ngcloud.ru)
- ✅ Login page в UI (ввод токена → валидация → auto-provisioning tenant)
- ✅ Email пользователя в navbar
- ✅ /ui/api/* защищены JWT middleware (больше не публичные)
- ✅ TenantID совместим с sless namespace: sless-{SHA256(sub)[:8]}
- ✅ Сессия в localStorage (token + email)
- [ ] Docker build + deploy + E2E test
## Known Limitations
1. **Глобальный мьютекс** — SyncQueues.Lock() на весь сервис. Performance bottleneck.